This card tries to summarize by example the different uses of heredoc.
<<
vs. <<-
vs. <<~
strip_heredoc
vs. squish
strip_heredoc
should be used for a text, where you want to preserve newlines. (multi-line -> multi-line)
squish
should be used for a text, where you want to squish newlines. (multi-line -> one-line)
def foo
bar = <<~TEXT
line1
line2
line3
TEXT
puts bar.inspect
end
foo => "line1\nline2\nline3\n"
Read more: Unindent HEREDOCs in Ruby 2.3
Older forms don't automatically unindent lines:
def foo
bar = <<TEXT
line1
line2
line3
TEXT
puts bar.inspect
end
foo => "line1\nline2\nline3\n"
def foo
bar = <<TEXT
line1
line2
line3
TEXT
puts bar.inspect
end
foo => " line1\n line2\n line3\n"
def foo
bar = <<TEXT
line1
line2
line3
TEXT
puts bar.inspect
end
# not valid as alignment of heredoc is wrong
def foo
bar = <<-TEXT
line1
line2
line3
TEXT
puts bar.inspect
end
foo => " line1\n line2\n line3\n"
Read more:
def foo
bar = <<-TEXT.strip_heredoc
line1
line2
line3
TEXT
puts bar.inspect
end
foo => "line1\nline2\nline3\n"
Read more:
def foo
bar = <<-TEXT.squish
line1
line2
line3
TEXT
puts bar.inspect
end
foo => "line1 line2 line3"
def foo
bar = <<~TEXT.strip
line1
line2
line3
TEXT
puts bar.inspect
end
foo => "line1\nline2\nline3"