class RQRCode::QRNumeric

Constants

NUMBER_LENGTH

Attributes

mode[R]

Public Class Methods

new( data ) click to toggle source
# File lib/rqrcode/qrcode/qr_numeric.rb, line 8
def initialize( data )
  @mode = QRMODE[:mode_number]

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

  @data = data;
end
valid_data?(data) click to toggle source
# File lib/rqrcode/qrcode/qr_numeric.rb, line 21
def self.valid_data? data
  data.each_char do |s|
    return false if NUMERIC.index(s).nil?
  end
  true
end

Public Instance Methods

get_length() click to toggle source
# File lib/rqrcode/qrcode/qr_numeric.rb, line 17
def get_length
  @data.size
end
write( buffer) click to toggle source
# File lib/rqrcode/qrcode/qr_numeric.rb, line 29
def write( buffer)
  buffer.numeric_encoding_start(get_length)

  (@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

Private Instance Methods

get_bit_length(length) click to toggle source
# File lib/rqrcode/qrcode/qr_numeric.rb, line 49
def get_bit_length(length)
  NUMBER_LENGTH[length]
end
get_code(chars) click to toggle source
# File lib/rqrcode/qrcode/qr_numeric.rb, line 53
def get_code(chars)
  chars.to_i
end