QRCodeSourceQRCodeEncoderSegment

class Segment

Base segment class - defaults to binary (8-bit byte) encoding

Definitions

def self.build(data, mode: :auto)

Factory method to build segments from various data types

Signature

parameter data String, Array, Segment

The data to encode

parameter mode Symbol

Encoding mode (:auto, :number, :alphanumeric, :byte_8bit)

Implementation

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