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