class RQRCodeCore::QRSegment
Attributes
data[R]
mode[R]
Public Class Methods
new(data:, mode: nil)
click to toggle source
# File lib/rqrcode_core/qrcode/qr_segment.rb, line 7 def initialize(data:, mode: nil) @data = data @mode = QRMODE_NAME.dig(mode&.to_sym) # If mode is not explicitely found choose mode according to data type @mode ||= if RQRCodeCore::QRNumeric.valid_data?(@data) QRMODE_NAME[:number] elsif QRAlphanumeric.valid_data?(@data) QRMODE_NAME[:alphanumeric] else QRMODE_NAME[:byte_8bit] end end
Public Instance Methods
content_size()
click to toggle source
# File lib/rqrcode_core/qrcode/qr_segment.rb, line 29 def content_size chunk_size, bit_length, extra = case mode when :mode_number [3, QRNumeric::NUMBER_LENGTH[3], QRNumeric::NUMBER_LENGTH[data_length % 3] || 0] when :mode_alpha_numk [2, 11, 6] when :mode_8bit_byte [1, 8, 0] end (data_length / chunk_size) * bit_length + ((data_length % chunk_size) == 0 ? 0 : extra) end
header_size(version)
click to toggle source
# File lib/rqrcode_core/qrcode/qr_segment.rb, line 25 def header_size(version) QRUtil.get_length_in_bits(QRMODE[mode], version) end
size(version)
click to toggle source
# File lib/rqrcode_core/qrcode/qr_segment.rb, line 21 def size(version) 4 + header_size(version) + content_size end
writer()
click to toggle source
# File lib/rqrcode_core/qrcode/qr_segment.rb, line 42 def writer case mode when :mode_number QRNumeric.new(data) when :mode_alpha_numk QRAlphanumeric.new(data) when :mode_multi QRMulti.new(data) else QR8bitByte.new(data) end end
Private Instance Methods
data_length()
click to toggle source
# File lib/rqrcode_core/qrcode/qr_segment.rb, line 57 def data_length data.bytesize end