I ran across this in a co-workers code yesterday. It made my head hurt for a second. Let’s say you need a a function that takes 4 lines as an argument and outputs each of those lines to stdout.
def print_stanza(line1, line2, line3, line4) puts line1, line2, line3, line4 end print_stanza(<<-LINEA, <<-LINEB, <<-LINEC, <<-LINED) You can get all hung up LINEA in a prickle-ly perch. LINEB And your gang will fly on. LINEC You'll be left in a Lurch. LINED
The second HEREDOC starts where this first one ends, the third HEREDOC starts where the second one ends, etc. Its all valid Ruby and starts to make sense if you look at it long enough.
Most editors I’ve seen haven’t been able to highlight the syntax correctly though. Sorta leaves you in a Lurch.
H/T Brian DunnTweet