Module: Tamiyo::YamlHelper

Included in:
Tamiyo::Yaml::YamlSink, Tamiyo::Yaml::YamlSource
Defined in:
lib/tamiyo/yaml/yaml_helper.rb,
lib/tamiyo/yaml/yaml_helper.rb

Defined Under Namespace

Classes: EventHandler, EventStream

Instance Method Summary collapse

Instance Method Details

#emit_block_mappingObject



56
57
58
59
60
# File 'lib/tamiyo/yaml/yaml_helper.rb', line 56

def emit_block_mapping
  @emit.start_mapping nil, nil, true, YAML::Nodes::Mapping::BLOCK
  yield
  @emit.end_mapping
end

#emit_block_sequenceObject



44
45
46
47
48
# File 'lib/tamiyo/yaml/yaml_helper.rb', line 44

def emit_block_sequence
  @emit.start_sequence nil, nil, true, YAML::Nodes::Sequence::BLOCK
  yield
  @emit.end_sequence
end

#emit_end_of_one_documentObject



14
15
16
17
# File 'lib/tamiyo/yaml/yaml_helper.rb', line 14

def emit_end_of_one_document
  @emit.end_document true
  @emit.end_stream
end

#emit_flow_sequenceObject



50
51
52
53
54
# File 'lib/tamiyo/yaml/yaml_helper.rb', line 50

def emit_flow_sequence
  @emit.start_sequence nil, nil, true, YAML::Nodes::Sequence::FLOW
  yield
  @emit.end_sequence
end

#emit_literal(value) ⇒ Object



66
67
68
# File 'lib/tamiyo/yaml/yaml_helper.rb', line 66

def emit_literal(value)
  @emit.scalar value, nil, nil, false, true, YAML::Nodes::Scalar::LITERAL
end

#emit_pair(key, value) ⇒ Object



19
20
21
22
# File 'lib/tamiyo/yaml/yaml_helper.rb', line 19

def emit_pair(key, value)
  emit_plain key
  emit_plain value
end

#emit_pair_with_literal_value(key, value) ⇒ Object



24
25
26
27
# File 'lib/tamiyo/yaml/yaml_helper.rb', line 24

def emit_pair_with_literal_value(key, value)
  emit_plain key
  emit_literal value
end

#emit_pair_with_optional_sequence_value(key, value) ⇒ Object



29
30
31
32
33
34
35
# File 'lib/tamiyo/yaml/yaml_helper.rb', line 29

def emit_pair_with_optional_sequence_value(key, value)
  if value.kind_of? Array
    emit_pair_with_sequence_value key, value
  else
    emit_pair key, value
  end
end

#emit_pair_with_sequence_value(key, value) ⇒ Object



37
38
39
40
41
42
# File 'lib/tamiyo/yaml/yaml_helper.rb', line 37

def emit_pair_with_sequence_value(key, value)
  emit_plain key
  emit_flow_sequence do
    value.each { |element| emit_plain element }
  end
end

#emit_plain(value) ⇒ Object



62
63
64
# File 'lib/tamiyo/yaml/yaml_helper.rb', line 62

def emit_plain(value)
  @emit.scalar value, nil, nil, true, false, Psych::Nodes::Scalar::PLAIN
end

#emit_start_of_one_documentObject



9
10
11
12
# File 'lib/tamiyo/yaml/yaml_helper.rb', line 9

def emit_start_of_one_document
  @emit.start_stream Psych::Nodes::Stream::UTF8
  @emit.start_document [1, 1], [], true
end

#setup_yaml_emitter_for(file) ⇒ Object



5
6
7
# File 'lib/tamiyo/yaml/yaml_helper.rb', line 5

def setup_yaml_emitter_for(file)
  @emit = YAML::Emitter.new file
end

#yaml_event_stream_for(file) ⇒ Object



72
73
74
75
76
77
78
79
# File 'lib/tamiyo/yaml/yaml_helper.rb', line 72

def yaml_event_stream_for(file)
  queue = Queue.new
  Thread.new do
    handler = EventHandler.new queue
    YAML::Parser.new(handler).parse file
  end
  EventStream.new queue
end