Class: LazyJson::Object

Inherits:
Value
  • Object
show all
Defined in:
lib/lazy-json.rb

Instance Method Summary collapse

Methods inherited from Value

#parse

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