module BetterHtml
module Tokenizer
class TokenArray
def initialize(list)
@list = list
@current = 0
@last = @list.size
end
def shift
raise RuntimeError, 'no tokens left to shift' if empty?
item = @list[@current]
@current += 1
item
end
def pop
raise RuntimeError, 'no tokens left to pop' if empty?
item = @list[@last - 1]
@last -= 1
item
end
def trim(type)
while current&.type == type
shift
end
while last&.type == type
pop
end
end
def empty?
size <= 0
end
def any?
!empty?
end
def current
@list[@current] unless empty?
end
def last
@list[@last - 1] unless empty?
end
def size
@last - @current
end
end
end
end