Class: RQRCode::QRCode
- Inherits:
-
Object
- Object
- RQRCode::QRCode
- Defined in:
- lib/rqrcode/qrcode/qr_code.rb
Overview
Instance Attribute Summary collapse
-
#error_correction_level ⇒ Object
readonly
Returns the value of attribute error_correction_level.
-
#module_count ⇒ Object
readonly
Returns the value of attribute module_count.
-
#modules ⇒ Object
readonly
Returns the value of attribute modules.
-
#version ⇒ Object
readonly
Returns the value of attribute version.
Instance Method Summary collapse
-
#initialize(string, *args) ⇒ QRCode
constructor
Expects a string to be parsed in, other args are optional.
-
#is_dark(row, col) ⇒ Object
(also: #dark?)
is_dark
is called with acol
androw
parameter. -
#to_s(*args) ⇒ Object
This is a public method that returns the QR Code you have generated as a string.
Constructor Details
#initialize(string, *args) ⇒ QRCode
Expects a string to be parsed in, other args are optional
# string - the string you wish to encode
# size - the size of the qrcode (default 4)
# level - the error correction level, can be:
* Level :l 7% of code can be restored
* Level :m 15% of code can be restored
* Level :q 25% of code can be restored
* Level :h 30% of code can be restored (default :h)
qr = RQRCode::QRCode.new('hello world', :size => 1, :level => :m )
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'lib/rqrcode/qrcode/qr_code.rb', line 106 def initialize( string, *args ) if !string.is_a? String raise QRCodeArgumentError, "The passed data is #{string.class}, not String" end = args. level = ([:level] || :h).to_sym if !QRERRORCORRECTLEVEL.has_key?(level) raise QRCodeArgumentError, "Unknown error correction level `#{level.inspect}`" end @data = string mode = QRAlphanumeric.valid_data?( @data ) ? :mode_alpha_numk : :mode_8bit_byte max_size_array = QRMAXDIGITS[level][mode] size = [:size] || smallest_size_for(string, max_size_array) if size > QRUtil.max_size raise QRCodeArgumentError, "Given size greater than maximum possible size of #{QRUtil.max_size}" end @error_correct_level = QRERRORCORRECTLEVEL[level] @version = size @module_count = @version * 4 + QRPOSITIONPATTERNLENGTH @modules = Array.new( @module_count ) @data_list = (mode == :mode_alpha_numk) ? QRAlphanumeric.new( @data ) : QR8bitByte.new( @data ) @data_cache = nil self.make end |
Instance Attribute Details
#error_correction_level ⇒ Object (readonly)
Returns the value of attribute error_correction_level.
91 92 93 |
# File 'lib/rqrcode/qrcode/qr_code.rb', line 91 def error_correction_level @error_correction_level end |
#module_count ⇒ Object (readonly)
Returns the value of attribute module_count.
91 92 93 |
# File 'lib/rqrcode/qrcode/qr_code.rb', line 91 def module_count @module_count end |
#modules ⇒ Object (readonly)
Returns the value of attribute modules.
91 92 93 |
# File 'lib/rqrcode/qrcode/qr_code.rb', line 91 def modules @modules end |
#version ⇒ Object (readonly)
Returns the value of attribute version.
91 92 93 |
# File 'lib/rqrcode/qrcode/qr_code.rb', line 91 def version @version end |
Instance Method Details
#is_dark(row, col) ⇒ Object Also known as: dark?
is_dark
is called with a col
and row
parameter. This will return true or false based on whether that coordinate exists in the matrix returned. It would normally be called while iterating through modules
. A simple example would be:
instance.is_dark( 10, 10 ) => true
146 147 148 149 150 151 |
# File 'lib/rqrcode/qrcode/qr_code.rb', line 146 def is_dark( row, col ) if !row.between?(0, @module_count - 1) || !col.between?(0, @module_count - 1) raise QRCodeRunTimeError, "Invalid row/column pair: #{row}, #{col}" end @modules[row][col] end |
#to_s(*args) ⇒ Object
This is a public method that returns the QR Code you have generated as a string. It will not be able to be read in this format by a QR Code reader, but will give you an idea if the final outout. It takes two optional args :true
and :false
which are there for you to choose how the output looks. Here’s an example of it’s use:
instance.to_s =>
xxxxxxx x x x x x xx xxxxxxx
x x xxx xxxxxx xxx x x
x xxx x xxxxx x xx x xxx x
instance._to_s( :dark => 'E', :light => 'Q') =>
EEEEEEEQEQQEQEQQQEQEQQEEQQEEEEEEE
EQQQQQEQQEEEQQEEEEEEQEEEQQEQQQQQE
EQEEEQEQQEEEEEQEQQQQQQQEEQEQEEEQE
172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 |
# File 'lib/rqrcode/qrcode/qr_code.rb', line 172 def to_s( *args ) = args. dark = [:dark] || [:true] || 'x' light = [:light] || [:false] || ' ' quiet_zone_size = [:quiet_zone_size] || 0 rows = [] @modules.each do |row| cols = light * quiet_zone_size row.each do |col| cols += (col ? dark : light) end rows << cols end quiet_zone_size.times do rows.unshift(light * (rows.first.length / light.size)) rows << light * (rows.first.length / light.size) end rows.join("\n") end |