Class: RQRCodeCore::QRSegment
- Inherits:
-
Object
- Object
- RQRCodeCore::QRSegment
- Defined in:
- lib/rqrcode_core/qrcode/qr_segment.rb
Instance Attribute Summary collapse
-
#data ⇒ Object
readonly
Returns the value of attribute data.
-
#mode ⇒ Object
readonly
Returns the value of attribute mode.
Instance Method Summary collapse
- #content_size ⇒ Object
- #header_size(version) ⇒ Object
-
#initialize(data:, mode: nil) ⇒ QRSegment
constructor
A new instance of QRSegment.
- #size(version) ⇒ Object
- #writer ⇒ Object
Constructor Details
#initialize(data:, mode: nil) ⇒ QRSegment
Returns a new instance of QRSegment.
7 8 9 10 11 12 13 14 15 16 17 18 19 |
# 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 explicitly 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 |
Instance Attribute Details
#data ⇒ Object (readonly)
Returns the value of attribute data.
5 6 7 |
# File 'lib/rqrcode_core/qrcode/qr_segment.rb', line 5 def data @data end |
#mode ⇒ Object (readonly)
Returns the value of attribute mode.
5 6 7 |
# File 'lib/rqrcode_core/qrcode/qr_segment.rb', line 5 def mode @mode end |
Instance Method Details
#content_size ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 |
# 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) ⇒ Object
25 26 27 |
# 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) ⇒ Object
21 22 23 |
# File 'lib/rqrcode_core/qrcode/qr_segment.rb', line 21 def size(version) 4 + header_size(version) + content_size end |
#writer ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 |
# 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 |