Class: LogStash::Filters::Dictionary::StreamingYamlDictParser

Inherits:
Object
  • Object
show all
Defined in:
lib/logstash/filters/dictionary/streaming_yaml_parser.rb

Instance Method Summary collapse

Constructor Details

#initialize(filename, yaml_code_point_limit) ⇒ StreamingYamlDictParser

Returns a new instance of StreamingYamlDictParser.



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/logstash/filters/dictionary/streaming_yaml_parser.rb', line 11

def initialize(filename, yaml_code_point_limit)
  settings = snakeYamlEngineV2.api.LoadSettings.builder
    .set_code_point_limit(yaml_code_point_limit)
    .build

  stream = Java::java.io.FileInputStream.new(filename)
  reader = Java::java.io.InputStreamReader.new(stream, Java::java.nio.charset.StandardCharsets::UTF_8)
  stream_reader = snakeYamlEngineV2.scanner.StreamReader.new(reader, settings)

  @parser = snakeYamlEngineV2.parser.ParserImpl.new(stream_reader, settings)

  skip_until(snakeYamlEngineV2Events.MappingStartEvent)
end

Instance Method Details

#each_pairObject



26
27
28
29
30
31
32
# File 'lib/logstash/filters/dictionary/streaming_yaml_parser.rb', line 26

def each_pair
  while peek_event && !peek_event.is_a?(snakeYamlEngineV2Events.MappingEndEvent)
    key = parse_node
    value = parse_node
    yield(key, value)
  end
end

#snakeYamlEngineV2Object



3
4
5
# File 'lib/logstash/filters/dictionary/streaming_yaml_parser.rb', line 3

def snakeYamlEngineV2
  Java::org.snakeyaml.engine.v2
end

#snakeYamlEngineV2EventsObject



7
8
9
# File 'lib/logstash/filters/dictionary/streaming_yaml_parser.rb', line 7

def snakeYamlEngineV2Events
  snakeYamlEngineV2.events
end