class RQRCodeCore::QRNumeric

def self.valid_data?(data)

def self.valid_data?(data)
  (data.chars - NUMERIC).empty?
end

def get_bit_length(length)

def get_bit_length(length)
  NUMBER_LENGTH[length]
end

def get_code(chars)

def get_code(chars)
  chars.to_i
end

def initialize(data)

def initialize(data)
  raise QRCodeArgumentError, "Not a numeric string `#{data}`" unless QRNumeric.valid_data?(data)
  @data = data
end

def write(buffer)

def write(buffer)
  buffer.numeric_encoding_start(@data.size)
  @data.size.times do |i|
    if i % 3 == 0
      chars = @data[i, 3]
      bit_length = get_bit_length(chars.length)
      buffer.put(get_code(chars), bit_length)
    end
  end
end