Class: LazyJson::Array

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

Instance Method Summary collapse

Methods inherited from Value

#parse

Constructor Details

#initialize(seq) ⇒ Array

Returns a new instance of Array.



241
242
243
244
245
# File 'lib/lazy-json.rb', line 241

def initialize(seq)
  super(seq)
  @elements = []
  @eseq = @seq.skip_whitespace.skip_byte(91) # '['.ord
end

Instance Method Details

#[](i) ⇒ Object

Access an element, lazily parsing if not yet parsed



248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
# File 'lib/lazy-json.rb', line 248

def [](i)
  if @elements.size <= i && ! @eseq.empty?
    while true
      @eseq = @eseq.skip_whitespace
      if @eseq.first == 93 # ']'.ord
        @eseq = @eseq.skip_byte(93).skip_whitespace # ']'.ord
        break
      end
      new_value = read_value_and_consume
      @elements << new_value
      break if @elements.size > i
    end
  end
  @elements[i]
end