puts "Line 1,
Line 2"
#=> Line 1,
#   Line 2

puts 'Line 1,
Line 2'
#=> Line 1,
#   Line 2

# ----------------------------------------

a = <<TEXT
これはヒアドキュメントです。
複数行に渡る長い文字列を作成するのに便利です。
TEXT
puts a
#=> これはヒアドキュメントです。
#   複数行に渡る長い文字列を作成するのに便利です。

# ----------------------------------------

# ヒアドキュメントの識別子としてHTMLを使う場合
<<HTML
<div>
  <img src="sample.jpg">
</div>
HTML

# ----------------------------------------

def some_method
  <<-TEXT
これはヒアドキュメントです。
<<-を使うと最後の識別子をインデントさせることができます。
  TEXT
end

puts some_method
#=> これはヒアドキュメントです。
#   <<-を使うと最後の識別子をインデントさせることができます。

# ----------------------------------------

def some_method
  <<~TEXT
    これはヒアドキュメントです。
    <<~を使うと内部文字列のインデント部分が無視されます。
  TEXT
end

puts some_method
#=> これはヒアドキュメントです。
#   <<~を使うと内部文字列のインデント部分が無視されます。

# ----------------------------------------

def some_method
  <<~TEXT
    \  各行の行頭に半角スペースを2文字を入れます。
    \  このとき行頭はバックスラッシュで指定します。
  TEXT
end

puts some_method
#=>   各行の行頭に半角スペースを2文字入れます。
#     このとき行頭はバックスラッシュで指定します。

# ----------------------------------------

name = 'Alice'
a = <<TEXT
ようこそ、#{name}さん！
以下のメッセージをご覧ください。
TEXT
puts a
#=> ようこそ、Aliceさん！
#   以下のメッセージをご覧ください。

# ----------------------------------------

name = 'Alice'
a = <<'TEXT'
ようこそ、#{name}さん！
以下のメッセージをご覧ください。
TEXT
puts a
#=> ようこそ、#{name}さん！
#   以下のメッセージをご覧ください。

# ----------------------------------------

name = 'Alice'
a = <<"TEXT"
ようこそ、#{name}さん！
以下のメッセージをご覧ください。
TEXT
puts a
#=> ようこそ、Aliceさん！
#   以下のメッセージをご覧ください。

# ----------------------------------------

# デフォルトは改行文字が有効
a = <<TEXT
こんにちは\nさようなら
TEXT
puts a
#=> こんにちは
#   さようなら

# 識別子をダブルクオートで囲んだ場合も改行文字が有効
a = <<"TEXT"
こんにちは\nさようなら
TEXT
puts a
#=> こんにちは
#   さようなら

# 識別子をシングルクオートで囲んだ場合は改行文字が無効
a = <<'TEXT'
こんにちは\nさようなら
TEXT
puts a
#=> こんにちは\nさようなら

# ----------------------------------------

# ヒアドキュメントを直接引数として渡す（prependは渡された文字列を先頭に追加するメソッド）
a = 'Ruby'
a.prepend(<<TEXT)
Java
Python
TEXT
puts a
#=> Java
#   Python
#   Ruby

# ヒアドキュメントで作成した文字列に対して、直接`upcase`メソッドを呼び出す
# （upcaseは文字列をすべて大文字にするメソッド）
b = <<TEXT.upcase
Hello,
Good-bye.
TEXT
puts b
#=> HELLO,
#   GOOD-BYE.

# ヒアドキュメントを2つ同時に使って配列を作る（配列については第4章で詳しく説明します）
c = [<<TEXT1, <<TEXT2]
Alice
Bob
TEXT1
Matz
Jnchito
TEXT2

# 0番目の要素にはTEXT1の内容が入る
puts c[0]
#=> Alice
#   Bob

# 1番目の要素にはTEXT2の内容が入る
puts c[1]
#=> Matz
#   Jnchito
