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(io) -> Psych::Emitter
[permalink][rdoc]Emitter オブジェクトを生成して返します。
canonical -> bool
[permalink][rdoc]出力の style が canonical であるならば真を返します。
[SEE_ALSO] Psych::Emitter#canonical=
canonical=(bool)
[permalink][rdoc]出力の style が canonical である/ないを指定します。
[SEE_ALSO] Psych::Emitter#canonical
indentation -> Integer
[permalink][rdoc]インデントのレベルを返します。
[SEE_ALSO] Psych::Emitter#indentation=
indentation=(level)
[permalink][rdoc]インデントのレベルを指定します。
1 から 9 までの整数で指定します。
[SEE_ALSO] Psych::Emitter#indentation
line_width -> Integer
[permalink][rdoc]「好ましい」行幅を返します。
[SEE_ALSO] Psych::Emitter#line_width=
line_width=(width)
[permalink][rdoc]「好ましい」行幅を整数値で設定します。
[SEE_ALSO] Psych::Emitter#line_width