Class: QrCodeMaker::QRSegment
- Inherits:
-
Object
- Object
- QrCodeMaker::QRSegment
- Defined in:
- lib/qr_code_maker/encoder.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.
611 612 613 614 615 616 617 618 619 620 621 622 |
# File 'lib/qr_code_maker/encoder.rb', line 611 def initialize(data:, mode: nil) @data = data @mode = QRMODE_NAME.dig(mode&.to_sym) @mode ||= if 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.
609 610 611 |
# File 'lib/qr_code_maker/encoder.rb', line 609 def data @data end |
#mode ⇒ Object (readonly)
Returns the value of attribute mode.
609 610 611 |
# File 'lib/qr_code_maker/encoder.rb', line 609 def mode @mode end |
Instance Method Details
#content_size ⇒ Object
632 633 634 635 636 637 638 639 640 641 642 643 |
# File 'lib/qr_code_maker/encoder.rb', line 632 def content_size chunk_size, bit_length, extra = case mode when :mode_number [3, QRNumeric.const_get(:NUMBER_LENGTH)[3], QRNumeric.const_get(: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
628 629 630 |
# File 'lib/qr_code_maker/encoder.rb', line 628 def header_size(version) QRUtil.get_length_in_bits(QRMODE[mode], version) end |
#size(version) ⇒ Object
624 625 626 |
# File 'lib/qr_code_maker/encoder.rb', line 624 def size(version) 4 + header_size(version) + content_size end |
#writer ⇒ Object
645 646 647 648 649 650 651 652 653 654 655 656 |
# File 'lib/qr_code_maker/encoder.rb', line 645 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 |