Class: TOML::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/toml/parser.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(content, options = {}) ⇒ Parser

Returns a new instance of Parser.



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/toml/parser.rb', line 7

def initialize(content, options = {})
  @hash = {}
  @current = @hash
  @symbolize_keys = options[:symbolize_keys]

  begin
    parsed = Document.parse(content)
    parsed.matches.map(&:value).compact.each { |m| m.accept_visitor(self) }
  rescue Citrus::ParseError => e
    raise ParseError.new(e.message)
  end
end

Instance Attribute Details

#hashObject (readonly)

Returns the value of attribute hash.



5
6
7
# File 'lib/toml/parser.rb', line 5

def hash
  @hash
end

Instance Method Details

#visit_inline_table(inline_table) ⇒ Object



34
35
36
# File 'lib/toml/parser.rb', line 34

def visit_inline_table(inline_table)
  inline_table.assign @current, @symbolize_keys
end

#visit_keygroup(keygroup) ⇒ Object



26
27
28
# File 'lib/toml/parser.rb', line 26

def visit_keygroup(keygroup)
  @current = keygroup.navigate_keys @hash, @symbolize_keys
end

#visit_keyvalue(keyvalue) ⇒ Object



30
31
32
# File 'lib/toml/parser.rb', line 30

def visit_keyvalue(keyvalue)
  keyvalue.assign @current, @symbolize_keys
end

#visit_table_array(table_array) ⇒ Object

Read about the Visitor pattern en.wikipedia.org/wiki/Visitor_pattern



22
23
24
# File 'lib/toml/parser.rb', line 22

def visit_table_array(table_array)
  @current = table_array.navigate_keys @hash, @symbolize_keys
end