Ruby 2.5.0 リファレンスマニュアル > ライブラリ一覧 > psychライブラリ > Psych::Emitterクラス

class Psych::Emitter

クラスの継承リスト: Psych::Emitter < Psych::Handler < Object < Kernel < BasicObject

要約

Psych::Parser でパースし、生じたイベントから YAML ドキュメントを再構築するようなハンドラです。

以下の例では STDIN から YAML ドキュメントを入力し、 再構築した YAML ドキュメントを STDERR に出力します。

parser = Psych::Parser.new(Psych::Emitter.new($stderr))
parser.parse($stdin)

また、以下のようにイベントを手動で発生させることで YAML ドキュメントを構築させることもできます。 各メソッドの意味については Psych::Handler を参照してください。

require 'psych'
require 'stringio'

output = StringIO.new
emitter = Psych::Emitter.new(output)

emitter.start_stream(Psych::Parser::UTF8)
emitter.start_document([1, 1], [], false)
emitter.start_mapping(nil, nil, false, Psych::Nodes::Mapping::BLOCK)
emitter.scalar("a", nil, nil, true, false, Psych::Nodes::Scalar::PLAIN)
emitter.scalar("12", nil, nil, true, false, Psych::Nodes::Scalar::PLAIN)
emitter.scalar("xyz", nil, nil, true, false, Psych::Nodes::Scalar::PLAIN)
emitter.scalar("23", nil, nil, false, true, Psych::Nodes::Scalar::SINGLE_QUOTED)
emitter.end_mapping
emitter.end_document(false)
emitter.end_stream

puts output.string
# =>
# %YAML 1.1
# ---
# a: 12
# xyz: '23'
# ...

目次

特異メソッド
new
インスタンスメソッド
canonical canonical= indentation indentation= line_width line_width=

特異メソッド

new(io) -> Psych::Emitter[permalink][rdoc]

Emitter オブジェクトを生成して返します。

[PARAM] io:
出力先の IO オブジェクト

インスタンスメソッド

canonical -> bool[permalink][rdoc]

出力の style が canonical であるならば真を返します。

[SEE_ALSO] Psych::Emitter#canonical=

canonical=(bool)[permalink][rdoc]

出力の style が canonical である/ないを指定します。

[PARAM] bool:
canonicalであるかどうか

[SEE_ALSO] Psych::Emitter#canonical

indentation -> Integer[permalink][rdoc]

インデントのレベルを返します。

[SEE_ALSO] Psych::Emitter#indentation=

indentation=(level)[permalink][rdoc]

インデントのレベルを指定します。

1 から 9 までの整数で指定します。

[PARAM] level:
インデントレベル

[SEE_ALSO] Psych::Emitter#indentation

line_width -> Integer[permalink][rdoc]

「好ましい」行幅を返します。

[SEE_ALSO] Psych::Emitter#line_width=

line_width=(width)[permalink][rdoc]

「好ましい」行幅を整数値で設定します。

[PARAM] width:
好ましい行幅

[SEE_ALSO] Psych::Emitter#line_width