Skip to content

Commit 7a3f5fa

Browse files
authored
Merge pull request #2940 from kyanagi/update-heredoc-indent
ヒアドキュメントの`<<-識別子`と`<<~識別子`の違いについて記述を更新
2 parents a148d8f + 7bfa823 commit 7a3f5fa

1 file changed

Lines changed: 34 additions & 12 deletions

File tree

refm/doc/spec/literal.rd

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -322,9 +322,9 @@ LABEL
322322
This line is a here document.
323323
EOS
324324
325-
開始ラベルを `<<-識別子' のように `-' を付けて書くことで終端
326-
行をインデントすることができます。これ以外では、終端行に、余
327-
分な空白やコメントさえも書くことはできません
325+
開始ラベルを `<<-識別子' または `<<~識別子` のように
326+
`-' または `~' を付けて書くことで、終端行をインデントすることができます。
327+
このケースを除き、終端行には余分な空白やコメントさえも書くことはできません
328328
329329
#@samplecode
330330
if need_define_foo
@@ -337,22 +337,44 @@ if need_define_foo
337337
end
338338
#@end
339339
340-
#@since 2.3.0
341-
開始ラベルを `<<~識別子` のように `~` を付けて書くことで、以下のような
342-
ヒアドキュメントを書くことができます。
340+
`<<-識別子` の場合は、終端行をインデントしたとしてもヒアドキュメント中の
341+
先頭の空白はそのまま文字列に現れます。
342+
343+
一方で `<<~識別子` の場合は、最もインデントが少ない行を基準にして、全ての行の先頭から空白を取り除きます。
344+
(「最もインデントが少ない行」には、終端行は含まれません。)
343345
344346
#@samplecode
345-
expected_result = <<~SQUIGGLY_HEREDOC
346-
This would contain specially formatted text.
347+
begin
348+
str_hyphen = <<-EOS
349+
aaa
350+
bbb
351+
ccc
352+
EOS
353+
354+
str_tilde = <<~EOS
355+
aaa
356+
bbb
357+
ccc
358+
EOS
347359
348-
That might span many lines
349-
SQUIGGLY_HEREDOC
350-
# => "This would contain specially formatted text.\n" + "\n" + "That might span many lines\n"
360+
p str_hyphen # => " aaa\n bbb\n ccc\n"
361+
p str_tilde # => " aaa\n bbb\nccc\n"
362+
end
351363
#@end
352364
353-
最もインデントが少ない行を基準にして、全ての行の先頭から空白を取り除きます。
354365
インデントの深さを決定するために主にタブやスペースで構成された行は無視されるので、注意してください。
355366
しかし、エスケープされたタブやスペースは、通常の文字と同じように扱われます。
367+
368+
#@samplecode
369+
s = <<~EOS
370+
空白4つ
371+
空白8つ
372+
373+
EOS
374+
# ↑EOSの上の行には空白2つがある
375+
376+
# 「最もインデントが少ない行」は、空白2つの行ではなく空白4つの行になる。
377+
p s # => "空白4つ\n 空白8つ\n\n"
356378
#@end
357379
358380
一行に複数のヒアドキュメントを書くこともできます。

0 commit comments

Comments
 (0)