Sha256: dc58db1c92761416ee554cbe86fa5169df4ff07a4553a67e7ee4e18f6ab75686
Contents?: true
Size: 869 Bytes
Versions: 5
Compression:
Stored size: 869 Bytes
Contents
module TOML class Parser attr_reader :hash def initialize(content, options = {}) @hash = {} @visited_keys = [] @current = @hash @symbolize_keys = options[:symbolize_keys] begin parsed = TOML::Document.parse(content) parsed.matches.map(&:value).compact.each { |m| m.accept_visitor(self) } rescue Citrus::ParseError => e raise TOML::ParseError.new(e.message) end end # Read about the Visitor pattern # http://en.wikipedia.org/wiki/Visitor_pattern def visit_table_array(table_array) @current = table_array.navigate_keys @hash, @symbolize_keys end def visit_keygroup(keygroup) @current = keygroup.navigate_keys @hash, @visited_keys, @symbolize_keys end def visit_keyvalue(keyvalue) keyvalue.assign @current, @symbolize_keys end end end
Version data entries
5 entries across 5 versions & 1 rubygems
Version | Path |
---|---|
toml-rb-0.3.12 | lib/toml/parser.rb |
toml-rb-0.3.11 | lib/toml/parser.rb |
toml-rb-0.3.10 | lib/toml/parser.rb |
toml-rb-0.3.9 | lib/toml/parser.rb |
toml-rb-0.3.8 | lib/toml/parser.rb |