Class: LazyJson::Object
Instance Method Summary collapse
-
#[](key) ⇒ Object
Access a field, lazily parsing if not yet parsed.
-
#initialize(seq) ⇒ Object
constructor
A new instance of Object.
Methods inherited from Value
Constructor Details
#initialize(seq) ⇒ Object
Returns a new instance of Object.
199 200 201 202 203 |
# File 'lib/lazy-json.rb', line 199 def initialize(seq) super(seq) @fields = {} @fseq = @seq.skip_whitespace.skip_byte(123) # '{'.ord end |
Instance Method Details
#[](key) ⇒ Object
Access a field, lazily parsing if not yet parsed
206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 |
# File 'lib/lazy-json.rb', line 206 def [](key) if ! @fields.has_key?(key) && ! @fseq.empty? while true @fseq = @fseq.skip_whitespace if @fseq.first == 125 # '}'.ord @fseq = @fseq.skip_byte(125).skip_whitespace # '}'.ord break end new_key, new_value = read_field_and_consume @fields[new_key] = new_value break if new_key == key end end @fields[key] end |