要約
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