class Tomlrb::Key

Attributes

key[R]
type[R]

Public Class Methods

new(key, type, declared = false) click to toggle source
# File lib/tomlrb/handler.rb, line 208
def initialize(key, type, declared = false)
  @key = key
  @type = type
  @declared = declared
  @children = {}
end

Public Instance Methods

<<(key_type_declared) click to toggle source
# File lib/tomlrb/handler.rb, line 219
def <<(key_type_declared)
  key, type, declared, is_array_of_tables = key_type_declared
  existed = @children[key]
  validate_already_declared_as_different_key(type, declared, existed)
  validate_already_declared_as_non_array_table(type, is_array_of_tables, declared, existed)
  validate_path_already_created_as_different_type(type, declared, existed)
  validate_path_already_declared_as_different_type(type, declared, existed)
  validate_already_declared_as_same_key(declared, existed)
  @children[key] = existed || self.class.new(key, type, declared)
end
clear_children() click to toggle source
# File lib/tomlrb/handler.rb, line 230
def clear_children
  @children.clear
end
declared?() click to toggle source
# File lib/tomlrb/handler.rb, line 215
def declared?
  @declared
end

Private Instance Methods

validate_already_declared_as_different_key(type, declared, existed) click to toggle source
# File lib/tomlrb/handler.rb, line 236
def validate_already_declared_as_different_key(type, declared, existed)
  if existed && existed.declared? && existed.type != type
    raise KeyConflict, "Key #{existed.key} is already used as #{existed.type} key"
  end
end
validate_already_declared_as_non_array_table(type, is_array_of_tables, declared, existed) click to toggle source
# File lib/tomlrb/handler.rb, line 242
def validate_already_declared_as_non_array_table(type, is_array_of_tables, declared, existed)
  if declared && type == :table && existed && existed.declared? && ! is_array_of_tables
    raise KeyConflict, "Key #{existed.key} is already used"
  end
end
validate_already_declared_as_same_key(declared, existed) click to toggle source
# File lib/tomlrb/handler.rb, line 260
def validate_already_declared_as_same_key(declared, existed)
  if existed && ! existed.declared? && declared
    raise KeyConflict, "Key #{existed.key} is already used as #{existed.type} key"
  end
end
validate_path_already_created_as_different_type(type, declared, existed) click to toggle source
# File lib/tomlrb/handler.rb, line 248
def validate_path_already_created_as_different_type(type, declared, existed)
  if declared && (type == :table) && existed && (existed.type == :pair) && (! existed.declared?)
    raise KeyConflict, "Key #{existed.key} is already used as #{existed.type} key"
  end
end
validate_path_already_declared_as_different_type(type, declared, existed) click to toggle source
# File lib/tomlrb/handler.rb, line 254
def validate_path_already_declared_as_different_type(type, declared, existed)
  if ! declared && (type == :pair) && existed && (existed.type == :pair) && existed.declared?
    raise KeyConflict, "Key #{key} is already used as #{type} key"
  end
end