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