strings/short_interpolation_and_escapes_parens.rb
tests/_examples/strings/short_interpolation_and_escapes_parens.rb in the metorex repository.
# `#@name`, `#@@name`, and `#$name` interpolate without braces, and a `#`
# followed by anything else stands as it reads.
$global = "gee"
class Holder
@@shared = "shared"
def initialize
@held = "held"
@held_again = "again"
end
def written
["#@held", "#$global", "#@held_again", "#@@shared", "#@held[", "#@held#@held",
"#@", "#@ ", "#@@", "#$%"]
end
end
puts(Holder.new.written.inspect)
# `\cX`, `\C-X`, and `\M-X` name a control or meta character.
puts("\cx".bytes.inspect)
puts("\C-x".bytes.inspect)
puts("\M-x".bytes.inspect)
puts("\M-\C-x".bytes.inspect)
puts(?\C-z.bytes.inspect)
# Two pieces that each hold something outside ASCII have to be written in the
# same encoding.
begin
wide = "あ"
raw = "\xff".dup.force_encoding("binary")
puts("#{wide} #{raw}")
rescue Encoding::CompatibilityError => refused
puts(refused.class)
end
# At the top level an instance variable belongs to main.
@top = "main's own"
puts("#@top")
puts(@never_written.inspect)
Output:
["held", "gee", "again", "shared", "held[", "heldheld", "\#@", "\#@ ", "\#@@", "\#$%"]
[24]
[24]
[248]
[152]
[26]
Encoding::CompatibilityError
main's own
nil