class TheFox::Range::Lexer::Collection

Public Class Methods

new(items = nil) click to toggle source
# File lib/thefox-ext/range/lexer/collection.rb, line 6
def initialize(items = nil)
  # puts '-> Collection.initialize()'
  @items = items.to_a
  @block_level = 0
end

Public Instance Methods

curr() click to toggle source
# File lib/thefox-ext/range/lexer/collection.rb, line 25
def curr()
  @items.last
end
inspect() click to toggle source

:nocov:

# File lib/thefox-ext/range/lexer/collection.rb, line 13
def inspect()
  'Collection(L=%d %s)' % [
    @items.length,
    @items.map{ |i| i.inspect }
  ]
end
is_empty() click to toggle source
# File lib/thefox-ext/range/lexer/collection.rb, line 33
def is_empty()
  @items.length == 0
end
items() click to toggle source

:nocov:

# File lib/thefox-ext/range/lexer/collection.rb, line 21
def items()
  @items
end
length() click to toggle source
# File lib/thefox-ext/range/lexer/collection.rb, line 37
def length()
  @items.length
end
pop() click to toggle source
# File lib/thefox-ext/range/lexer/collection.rb, line 67
def pop()
  @items.pop
end
prev() click to toggle source
# File lib/thefox-ext/range/lexer/collection.rb, line 29
def prev()
  @items[-2]
end
push(item) click to toggle source
# File lib/thefox-ext/range/lexer/collection.rb, line 41
def push(item)
  # puts '-> %s.push(%s)' % [self.inspect, item.inspect]
  if item.nil?
    return
  end

  # Prev
  org_prev_item = item.prev_item
  prev_item = @items.last

  # Dup
  curr_item = item.dup
  @items.push(curr_item)

  # Chain
  curr_item.chain(prev_item)
  curr_item.org_prev_item = org_prev_item

  if curr_item.class.keep_nonce_on_dup
    curr_item.nonce = item.nonce
  end
  if curr_item.class.keep_instance_id_on_dup
    curr_item.instance_id = item.instance_id
  end
end