Class: RQRCodeCore::QRAlphanumeric

Inherits:
Object
  • Object
show all
Defined in:
lib/rqrcode_core/qrcode/qr_alphanumeric.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data) ⇒ QRAlphanumeric

Returns a new instance of QRAlphanumeric.



9
10
11
12
13
14
15
# File 'lib/rqrcode_core/qrcode/qr_alphanumeric.rb', line 9

def initialize( data )
  @mode = QRMODE[:mode_alpha_numk]

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

  @data = data;
end

Instance Attribute Details

#modeObject (readonly)

Returns the value of attribute mode.



7
8
9
# File 'lib/rqrcode_core/qrcode/qr_alphanumeric.rb', line 7

def mode
  @mode
end

Class Method Details

.valid_data?(data) ⇒ Boolean

Returns:

  • (Boolean)


22
23
24
25
26
27
# File 'lib/rqrcode_core/qrcode/qr_alphanumeric.rb', line 22

def self.valid_data? data
  data.each_char do |s|
    return false if ALPHANUMERIC.index(s).nil?
  end
  true
end

Instance Method Details

#get_lengthObject



18
19
20
# File 'lib/rqrcode_core/qrcode/qr_alphanumeric.rb', line 18

def get_length
  @data.size
end

#write(buffer) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/rqrcode_core/qrcode/qr_alphanumeric.rb', line 30

def write( buffer)
  buffer.alphanumeric_encoding_start(get_length)

  (@data.size).times do |i|
    if i % 2 == 0
      if i == (@data.size - 1)
        value = ALPHANUMERIC.index(@data[i])
        buffer.put( value, 6 )
      else
        value = (ALPHANUMERIC.index(@data[i]) * 45) + ALPHANUMERIC.index(@data[i+1])
        buffer.put( value, 11 )
      end
    end
  end
end