Class: QRCode::Encoder::Segment
- Inherits:
-
Object
- Object
- QRCode::Encoder::Segment
show all
- Defined in:
- lib/qrcode/encoder/segment.rb
Overview
Base segment class - defaults to binary (8-bit byte) encoding
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(data) ⇒ Segment
17
18
19
|
# File 'lib/qrcode/encoder/segment.rb', line 17
def initialize(data)
@data = data.to_s
end
|
Instance Attribute Details
#data ⇒ Object
Returns the value of attribute data.
15
16
17
|
# File 'lib/qrcode/encoder/segment.rb', line 15
def data
@data
end
|
Class Method Details
.build(data, mode: :auto) ⇒ Array<Segment>
Factory method to build segments from various data types
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# File 'lib/qrcode/encoder/segment.rb', line 49
def self.build(data, mode: :auto)
case data
when String
[create_segment_for_data(data, mode)]
when Array
data.map do |item|
case item
when Hash
create_segment_for_data(item[:data], item[:mode] || :auto)
when String
create_segment_for_data(item, mode)
when Segment
item
else
raise ArgumentError, "Array elements must be Strings, Hashes with :data key, or Segments"
end
end
when Segment
[data]
else
raise ArgumentError, "data must be a String, Segment, or Array"
end
end
|
Instance Method Details
#bit_size(version) ⇒ Object
25
26
27
|
# File 'lib/qrcode/encoder/segment.rb', line 25
def bit_size(version)
4 + (version) + content_size
end
|
#content_size ⇒ Object
33
34
35
|
# File 'lib/qrcode/encoder/segment.rb', line 33
def content_size
@data.bytesize * 8
end
|
29
30
31
|
# File 'lib/qrcode/encoder/segment.rb', line 29
def (version)
Encoder::Util.get_length_in_bits(MODE[mode], version)
end
|
#mode ⇒ Object
21
22
23
|
# File 'lib/qrcode/encoder/segment.rb', line 21
def mode
:mode_8bit_byte
end
|
#write(buffer) ⇒ Object
37
38
39
40
41
42
43
|
# File 'lib/qrcode/encoder/segment.rb', line 37
def write(buffer)
buffer.byte_encoding_start(@data.bytesize)
@data.each_byte do |b|
buffer.put(b, 8)
end
end
|