Class: TJSON::Object

Inherits:
Hash
  • Object
show all
Defined in:
lib/tjson/object.rb

Overview

TJSON object type (i.e. hash/dict-alike)

Instance Method Summary collapse

Instance Method Details

#[]=(tagged_name, value) ⇒ Object

Raises:



6
7
8
9
10
11
12
13
14
15
# File 'lib/tjson/object.rb', line 6

def []=(tagged_name, value)
  # NOTE: this regex is sloppy. The real parsing is performed in TJSON::DataType#parse
  result = tagged_name.match(/\A(?<name>.*):(?<tag>[A-Za-z0-9\<]+[\>]*)\z/)

  raise ParseError, "invalid tag: #{tagged_name.inspect}" unless result
  raise DuplicateNameError, "duplicate member name: #{result[:name].inspect}" if key?(result[:name])

  type = TJSON::DataType.parse(result[:tag])
  super(result[:name], type.convert(value))
end