06 note06

・改行データの記法


改行は1つのスペースと解釈される。
mydata06.yml
==============================
# 改行

# this
# is
# a
# pen.
#

# - |
#   this
#   is
#   a
#   pen.
#
# - |+
#   this
#   is
#   a
#   pen.
#
# - |-
#   this
#   is
#   a
#   pen.
#

- >
  this
  is
  a
  pen.

- >+
  this
  is
  a
  pen.

- >-
  this
  is
  a
  pen.
==============================



parse06.rb
==============================
require 'yaml'

emails = YAML.load_file('mydata06.yml')

p emails
==============================


ruby parse06.rb   
#=> ["this is a pen.\n", "this is a pen.\n\n", "this is a pen."]

さて、次は改行を含むデータの表現について見ておきましょう。
0:07
例えば YAML でこのように書いた場合、実は改行はスペースに変換されて 1 つの文字列になってしまいます。
0:19
最後にこのように改行があっても、それが取り除かれているのがわかるかと思います。
0:25
そうではなくて、このような文字列があったときに改行も表現したいという場合の書き方も見てあげましょう。
0:34
いくつかパターンがあるので、配列にしながら見ていきましょう。
0:38
ではどうするかというと…まず 1 つ目のやり方は、縦棒(|)を引いてあげて、あとは改行を保持したいデータを字下げしてこのように表現してあげます。
0:48
そうするとこのあたりの改行もちゃんと保持してくれるはずです。
0:54
最後の改行は取り除かれてしまうのですが、それを取り除きたくないという場合には | に + とつけてあげてください。
1:04
それからこちらの最終行の改行も取り除きたい場合には - をつけてあげればいいので、それぞれの違いを見てみたいと思います。
1:16
こうですね、最初のデータは最終行の改行を保持する、その次の書き方は最終行の後の改行も保持する、そして最後は最終行の改行を保持しないという違いになりますので、覚えておきましょう。
1:31
それから似たような表記でもう 1 パターンあるので、それも見ておきましょう。
1:39
次は何かというと…、ここの縦棒を不等号記号(>)にした表記もよく見かけるかと思います。
1:50
これは何かというと、最後の改行の扱いについては今見たような感じなのですが、途中の改行についてはスペースに変換するという書き方になります。
2:00
では違いを見てあげると…こうですね、こちらの途中の改行はスペースにするのだけれど、最後の改行は保持したいという場合にこういった記法を使います。
2:11
最終行の改行を保持したい場合には単に > とすればいいですし、最終行以降の改行も保持したい場合は + をつけてあげて、最終行の改行はそもそもいらないという場合は - をつけてあげてください。
2:25
このあたりの違いは微妙ではありますが、利用シーンに合わせてちゃんと使い分けられるようにしておきましょう。