要約
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'
# ...
目次
- 特異メソッド
- インスタンスメソッド
継承しているメソッド
- Psych::Handlerから継承しているメソッド
特異メソッド
new(io) -> Psych::Emitter[permalink][rdoc][edit]-
Emitter オブジェクトを生成して返します。
- [PARAM] io:
- 出力先の IO オブジェクト
インスタンスメソッド
canonical -> bool[permalink][rdoc][edit]-
出力の style が canonical であるならば真を返します。
[SEE_ALSO] Psych::Emitter#canonical=
canonical=(bool)[permalink][rdoc][edit]-
出力の style が canonical である/ないを指定します。
- [PARAM] bool:
- canonicalであるかどうか
[SEE_ALSO] Psych::Emitter#canonical
indentation -> Integer[permalink][rdoc][edit]-
インデントのレベルを返します。
[SEE_ALSO] Psych::Emitter#indentation=
indentation=(level)[permalink][rdoc][edit]-
インデントのレベルを指定します。
1 から 9 までの整数で指定します。
- [PARAM] level:
- インデントレベル
[SEE_ALSO] Psych::Emitter#indentation
line_width -> Integer[permalink][rdoc][edit]-
「好ましい」行幅を返します。
[SEE_ALSO] Psych::Emitter#line_width=
line_width=(width)[permalink][rdoc][edit]-
「好ましい」行幅を整数値で設定します。
- [PARAM] width:
- 好ましい行幅
[SEE_ALSO] Psych::Emitter#line_width