Sha256: 557132a5062553af9abc32df723640f1da5dbf223c59bfb841f7f77276692173

Contents?: true

Size: 1.07 KB

Versions: 79

Compression:

Stored size: 1.07 KB

Contents

module TomlRB
  class Parser
    attr_reader :hash

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

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

    # Read about the Visitor pattern
    # http://en.wikipedia.org/wiki/Visitor_pattern
    def visit_table_array(table_array)
      @fully_defined_keys = []
      table_array_key = table_array.full_key
      @visited_keys.reject! { |k| k.start_with? table_array_key }

      @current = table_array.navigate_keys @hash, @symbolize_keys
    end

    def visit_table(table)
      @fully_defined_keys = []
      @current = table.navigate_keys @hash, @visited_keys, @symbolize_keys
    end

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

Version data entries

79 entries across 79 versions & 2 rubygems

Version Path
toml-rb-4.0.0 lib/toml-rb/parser.rb
harbr-2.8.1 vendor/bundle/ruby/3.2.0/gems/toml-rb-2.2.0/lib/toml-rb/parser.rb
toml-rb-3.0.1 lib/toml-rb/parser.rb
toml-rb-3.0.0 lib/toml-rb/parser.rb
harbr-0.2.10 vendor/bundle/ruby/3.2.0/gems/toml-rb-2.2.0/lib/toml-rb/parser.rb
harbr-0.2.9 vendor/bundle/ruby/3.2.0/gems/toml-rb-2.2.0/lib/toml-rb/parser.rb
harbr-0.2.8 vendor/bundle/ruby/3.2.0/gems/toml-rb-2.2.0/lib/toml-rb/parser.rb
harbr-0.2.7 vendor/bundle/ruby/3.2.0/gems/toml-rb-2.2.0/lib/toml-rb/parser.rb
harbr-0.2.6 vendor/bundle/ruby/3.2.0/gems/toml-rb-2.2.0/lib/toml-rb/parser.rb
harbr-0.2.5 vendor/bundle/ruby/3.2.0/gems/toml-rb-2.2.0/lib/toml-rb/parser.rb
harbr-0.2.4 vendor/bundle/ruby/3.2.0/gems/toml-rb-2.2.0/lib/toml-rb/parser.rb
harbr-0.2.3 vendor/bundle/ruby/3.2.0/gems/toml-rb-2.2.0/lib/toml-rb/parser.rb
harbr-0.2.2 vendor/bundle/ruby/3.2.0/gems/toml-rb-2.2.0/lib/toml-rb/parser.rb
harbr-0.2.1 vendor/bundle/ruby/3.2.0/gems/toml-rb-2.2.0/lib/toml-rb/parser.rb
harbr-0.2.0 vendor/bundle/ruby/3.2.0/gems/toml-rb-2.2.0/lib/toml-rb/parser.rb
harbr-0.1.99 vendor/bundle/ruby/3.2.0/gems/toml-rb-2.2.0/lib/toml-rb/parser.rb
harbr-0.1.98 vendor/bundle/ruby/3.2.0/gems/toml-rb-2.2.0/lib/toml-rb/parser.rb
harbr-0.1.97 vendor/bundle/ruby/3.2.0/gems/toml-rb-2.2.0/lib/toml-rb/parser.rb
harbr-0.1.96 vendor/bundle/ruby/3.2.0/gems/toml-rb-2.2.0/lib/toml-rb/parser.rb
harbr-0.1.95 vendor/bundle/ruby/3.2.0/gems/toml-rb-2.2.0/lib/toml-rb/parser.rb