# frozen_string_literal: true module BetterHtml module Tokenizer class TokenArray def initialize(list) @list = list @current = 0 @last = @list.size end def shift raise "no tokens left to shift" if empty? item = @list[@current] @current += 1 item end def pop raise "no tokens left to pop" if empty? item = @list[@last - 1] @last -= 1 item end def trim(type) shift while current&.type == type pop while last&.type == type 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