# File lib/html5/filters/validator.rb, line 529
  def check_integer(token, tag_name, attr_name, attr_value)
    sign = 1
    number_string = ''
    state = 'begin' # ('begin', 'initial-number', 'number', 'trailing-junk')
    error = {:type => "ParseError",
         :data => "invalid-integer-value",
         :datavars => {"tagName" => tag_name,
                "attributeName" => attr_name,
                "attributeValue" => attr_value}}
    attr_value.scan(/./) do |c|
      if state == 'begin'
        if HTML5::SPACE_CHARACTERS.include?(c)
          next
        elsif c == '-'
          sign  = -1
          state = 'initial-number'
        elsif HTML5::DIGITS.include?(c)
          number_string += c
          state = 'in-number'
        else
          yield error
          return
        end
      elsif state == 'initial-number'
        if !HTML5::DIGITS.include?(c)
          yield error
          return
        end
        number_string += c
        state = 'in-number'
      elsif state == 'in-number'
        if HTML5::DIGITS.include?(c)
          number_string += c
        else
          state = 'trailing-junk'
        end
      elsif state == 'trailing-junk'
        next
      end
    end
    if number_string.length == 0
      yield( {:type => "ParseError",
           :data => "attribute-value-can-not-be-blank",
           :datavars => {"tagName" => tag_name,
                "attributeName" => attr_name}})
    end
  end