qr4r 0.3.4 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 7aa78673d39ee4d055a6fb629f57748305e9465ae6448155b8b9c7c37c30450f
4
+ data.tar.gz: 27d52de34743e9d6d5e775b97d1bfd5c15cb8e9640d60621c242fba54fed3a2c
5
+ SHA512:
6
+ metadata.gz: b2a47b28faf09f801b787bbedafb01da0c997a57bf1d43be8895afcf654aa2f06a5d4400662088fbbb0373029b0f977813788ee1a5ba7fce98d521a9eccfc1ad
7
+ data.tar.gz: ae6d88740bb47720ba565b2413f3a1480f0dd6c10dfe34252e30d01311d70a6f2513024d09adc4c8b1f627d64b4dcc63ffcfdda222386db8615ed8b725af5113
@@ -0,0 +1,18 @@
1
+ version: 2.1
2
+ orbs:
3
+ ruby: circleci/ruby@1.1.2
4
+
5
+ jobs:
6
+ build:
7
+ docker:
8
+ - image: circleci/ruby:2.6.3-stretch-node
9
+ executor: ruby/default
10
+ steps:
11
+ - checkout
12
+ - ruby/install-deps
13
+ - run:
14
+ name: Run unit tests using Rake
15
+ command: |
16
+ RAILS_ENV=test bundle exec rake test
17
+ - store_test_results:
18
+ path: test/reports
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ .bundle/
2
+ *~
@@ -0,0 +1,102 @@
1
+ AllCops:
2
+ NewCops: enable
3
+ DisplayCopNames: true
4
+ DisplayStyleGuide: true
5
+ Exclude:
6
+ - "bin/*"
7
+ - "db/schema.rb"
8
+ - "lib/templates/**/*"
9
+ - "**/node_modules/**/*"
10
+ - "tmp/**/*"
11
+ - "vendor/**/*"
12
+ - "log/**/*"
13
+
14
+ Layout/CaseIndentation:
15
+ Enabled: false
16
+
17
+ Layout/FirstArrayElementIndentation:
18
+ EnforcedStyle: consistent
19
+
20
+ Layout/HashAlignment:
21
+ Enabled: false
22
+
23
+ Layout/LineLength:
24
+ Max: 120
25
+
26
+ Layout/MultilineMethodCallIndentation:
27
+ EnforcedStyle: indented
28
+
29
+ Lint/AmbiguousBlockAssociation:
30
+ Enabled: false
31
+
32
+ Lint/ScriptPermission:
33
+ Exclude:
34
+ - "Rakefile"
35
+
36
+ Metrics/AbcSize:
37
+ Max: 35
38
+ Exclude:
39
+ - "spec/**/*"
40
+
41
+ Metrics/BlockLength:
42
+ CountComments: false
43
+ Max: 50
44
+ Exclude:
45
+ - "config/**/*"
46
+ - "spec/**/*"
47
+
48
+ Metrics/ClassLength:
49
+ Max: 250
50
+ Exclude:
51
+ - "spec/**/*"
52
+
53
+ Metrics/MethodLength:
54
+ Max: 25
55
+ Exclude:
56
+ - "db/migrate/*"
57
+ - "spec/**/*"
58
+
59
+ Naming/PredicateName:
60
+ Enabled: false
61
+
62
+ Security/YAMLLoad:
63
+ Enabled: false
64
+
65
+ Style/BarePercentLiterals:
66
+ EnforcedStyle: percent_q
67
+
68
+ Style/BlockDelimiters:
69
+ EnforcedStyle: braces_for_chaining
70
+
71
+ Style/Documentation:
72
+ Enabled: false
73
+
74
+ Style/EmptyMethod:
75
+ EnforcedStyle: expanded
76
+
77
+ Style/FormatStringToken:
78
+ Enabled: false
79
+
80
+ Style/FrozenStringLiteralComment:
81
+ EnforcedStyle: never
82
+
83
+ Style/Lambda:
84
+ EnforcedStyle: literal
85
+
86
+ Style/ModuleFunction:
87
+ EnforcedStyle: extend_self
88
+
89
+ Style/MutableConstant:
90
+ Enabled: false
91
+
92
+ Style/PreferredHashMethods:
93
+ Enabled: false
94
+
95
+ Style/StringLiterals:
96
+ EnforcedStyle: double_quotes
97
+
98
+ Style/StringLiteralsInInterpolation:
99
+ EnforcedStyle: double_quotes
100
+
101
+ Style/TernaryParentheses:
102
+ EnforcedStyle: require_parentheses_when_complex
@@ -0,0 +1,2 @@
1
+ Performance/Casecmp:
2
+ Enabled: false
data/.rubocop.yml ADDED
@@ -0,0 +1,9 @@
1
+ require:
2
+ - rubocop-performance
3
+
4
+ inherit_from:
5
+ - ./.rubocop-common.yml # copied from c5-conventions
6
+ - ./.rubocop-performance.yml # copied from c5-conventions
7
+
8
+ AllCops:
9
+ TargetRubyVersion: 2.5
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.6.6
data/Gemfile CHANGED
@@ -1,2 +1,2 @@
1
- source :rubygems
2
- gemspec
1
+ source "https://rubygems.org"
2
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,50 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ qr4r (0.6.1)
5
+ mojo_magick (~> 0.6.5)
6
+ rqrcode_core (~> 0.1)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ ast (2.4.2)
12
+ minitest (5.14.4)
13
+ mojo_magick (0.6.5)
14
+ parallel (1.20.1)
15
+ parser (3.0.1.0)
16
+ ast (~> 2.4.1)
17
+ rainbow (3.0.0)
18
+ rake (13.0.3)
19
+ regexp_parser (2.1.1)
20
+ rexml (3.2.5)
21
+ rqrcode_core (0.2.0)
22
+ rubocop (0.93.1)
23
+ parallel (~> 1.10)
24
+ parser (>= 2.7.1.5)
25
+ rainbow (>= 2.2.2, < 4.0)
26
+ regexp_parser (>= 1.8)
27
+ rexml
28
+ rubocop-ast (>= 0.6.0)
29
+ ruby-progressbar (~> 1.7)
30
+ unicode-display_width (>= 1.4.0, < 2.0)
31
+ rubocop-ast (1.4.1)
32
+ parser (>= 2.7.1.5)
33
+ rubocop-performance (1.10.2)
34
+ rubocop (>= 0.90.0, < 2.0)
35
+ rubocop-ast (>= 0.4.0)
36
+ ruby-progressbar (1.11.0)
37
+ unicode-display_width (1.7.0)
38
+
39
+ PLATFORMS
40
+ ruby
41
+
42
+ DEPENDENCIES
43
+ minitest (~> 5.14)
44
+ qr4r!
45
+ rake (~> 13.0)
46
+ rubocop (~> 0.93)
47
+ rubocop-performance (~> 1.8)
48
+
49
+ BUNDLED WITH
50
+ 2.1.4
data/LICENSE.txt ADDED
@@ -0,0 +1,14 @@
1
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
2
+ Version 2, December 2004
3
+
4
+ Copyright (C) 2020 Jon Rogers <jon@rcode5.com>
5
+ Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
6
+
7
+ Everyone is permitted to copy and distribute verbatim or modified
8
+ copies of this license document, and changing it is allowed as long
9
+ as the name is changed.
10
+
11
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
12
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
13
+
14
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
data/README.md CHANGED
@@ -42,8 +42,23 @@ Add a fat border
42
42
  fname = s.gsub(/\s+/,"_") + ".qr.png"
43
43
  Qr4r::encode(s, fname, :border => 20)
44
44
 
45
+ You can also checkout the [examples](https://github.com/rcode5/qr4r/tree/master/examples) folder for a little sample commandline script.
46
+
45
47
  NOTE: The current implementation or rQRCode (and therefore this wrapper library) supports encoding up to 119 characters. Beyond that, you'll need something a bit more sophisticated.
46
48
 
49
+ ## Wanna try it out?
50
+
51
+ Check out the Sinatra test app here: https://github.com/rcode5/qr4r_test_app
52
+
53
+
54
+ ## Versions/Changelog
55
+
56
+ #### 0.4.0
57
+
58
+ * Moved to new mojo_magick gem
59
+ * no longer ruby 1.8.7 compatible
60
+ * fixed issue with border coming out black
61
+
47
62
  ## Authors
48
63
 
49
64
  Original author: [Jon Rogers](http://github.com/bunnymatic) [at rcode5](http://www.rcode5.com)
data/Rakefile CHANGED
@@ -1,18 +1,16 @@
1
- require 'rubygems'
2
- task :default => :test
1
+ require "rubygems"
2
+ require "rake/testtask"
3
+ task default: :test
3
4
 
4
- task 'default' => :test
5
-
6
- desc "Default: run tests"
7
- task :test do
8
- require 'rake/runtest'
9
- files = Dir.glob(File.join(File.dirname(__FILE__), 'test/*_test.rb'))
10
- files.each do |f|
11
- Rake.run_tests f
12
- end
5
+ Rake::TestTask.new do |task|
6
+ task.pattern = "test/*_test.rb"
13
7
  end
14
8
 
15
9
  task :build do
16
10
  `rm qr4r-*.gem`
17
- puts `gem build qr4r.gemspec`
11
+ puts `gem build qr4r.gemspec`
12
+ end
13
+
14
+ task release: :build do
15
+ puts `gem push qr4r-*.gem`
18
16
  end
@@ -0,0 +1,86 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "qr4r"
4
+ require "optparse"
5
+ require "ostruct"
6
+
7
+ class CmdlineOpts
8
+ @opts = nil
9
+
10
+ ALLOWED_FORMATS = %w[jpg jpeg gif tif tiff png].freeze
11
+
12
+ attr_reader :options
13
+
14
+ def initialize(args)
15
+ @options = OpenStruct.new
16
+ @options.format = "gif"
17
+ @options.border = 0
18
+ @options.pixel_size = 10
19
+ @options.verbose = false
20
+
21
+ @opts = setup_options
22
+
23
+ @opts.parse!(args)
24
+ end
25
+
26
+ # rubocop:disable Metrics/MethodLength
27
+ def setup_options
28
+ OptionParser.new do |opts|
29
+ opts.banner = "Usage: $0 [options] outfile the stuff to encode"
30
+
31
+ opts.separator ""
32
+
33
+ # Mandatory argument.
34
+ opts.on("-f",
35
+ "--format FILE_FORMAT",
36
+ ALLOWED_FORMATS,
37
+ "Output qrcode image format (default: gif)",
38
+ " (#{ALLOWED_FORMATS.join ", "})") do |fmt|
39
+ @options.format = fmt
40
+ end
41
+ opts.on("-b", "--border N",
42
+ "Render with a border of this size") do |border|
43
+ @options.border = border.to_i
44
+ end
45
+ opts.on("-p", "--pixelsize N",
46
+ "Size for each qrcode pixel") do |px|
47
+ @options.pixel_size = px.to_i
48
+ end
49
+ opts.on("-v", "--[no-]verbose", "Be verbose") do |_v|
50
+ @options.verbose = V
51
+ end
52
+
53
+ # No argument, shows at tail. This will print an options summary.
54
+ # Try it and see!
55
+ opts.on_tail("-h", "--help", "Show this message") do
56
+ puts opts
57
+ exit
58
+ end
59
+ opts
60
+ end
61
+ # rubocop:enable Metrics/MethodLength
62
+ end
63
+
64
+ def help
65
+ puts @opts
66
+ end
67
+ end
68
+
69
+ cmd_options = CmdlineOpts.new(ARGV)
70
+
71
+ if ARGV.length < 2
72
+ cmd_options.help
73
+ else
74
+ outfile = ARGV.shift
75
+ to_encode = ARGV.join " "
76
+ options = cmd_options.options
77
+
78
+ if options.verbose
79
+ print "Encoding \"#{to_encode}\" to file #{outfile}"
80
+ print " with border #{options.border}" if options.border.positive?
81
+ print " and pixel_size #{options.pixel_size}"
82
+ puts " and format #{options.format}"
83
+ end
84
+
85
+ Qr4r.encode(to_encode, outfile, cmd_options.options.marshal_dump)
86
+ end
data/init.rb CHANGED
@@ -1 +1 @@
1
- require File::expand_path(File::join(File::dirname(__FILE__), 'lib', 'qr4r'))
1
+ require File.expand_path(File.join(File.dirname(__FILE__), "lib", "qr4r"))
data/lib/qr4r.rb CHANGED
@@ -1,82 +1,68 @@
1
- require 'rqrcode'
2
- require 'mojo_magick'
1
+ require "rqrcode_core"
2
+ require "mojo_magick"
3
3
  module Qr4r
4
-
5
- # params we use
6
- # pixel_size - size of each dot, default = 3
7
- # params we pass to QRCode include :size and :level
8
- # size - the size of the qrcode (default 4)
9
- # level - the error correction level, can be:
10
- # * Level :l 7% of code can be restored
11
- # * Level :m 15% of code can be restored
12
- # * Level :q 25% of code can be restored
13
- # * Level :h 30% of code can be restored
14
- # note: if size is not included and 4 appears to be too small for the included string, we'll make it bigger
15
- # if you include size, we'll use it, which may lead to an error if the string is too long
16
- # Limitations are as follows:
17
- # size = 1, max string length = 7
18
- # size = 2, max string length = 14
19
- # size = 3, max string length = 24
20
- # size = 4, max string length = 34
21
- # size = 5, max string length = 44
22
- # size = 6, max string length = 58
23
- # size = 7, max string length = 64
24
- # size = 8, max string length = 84
25
- # size = 9, max string length = 98
26
- # size = 10, max string length = 119
4
+ # These come from rqrcode_core - read https://github.com/whomwah/rqrcode_core
5
+ # for more information
6
+ SIZE_RESTRICTIONS = [0, 7, 14, 24, 34, 44, 58, 64, 84, 98, 119]
27
7
 
28
8
  def self.encode(str, outfile, *rest)
29
- opts = rest[0] if rest && rest.length > 0
30
- opts = opts || {}
31
- if !opts[:size]
32
- opts.merge!({:size => compute_size(str)})
33
- end
34
- if !opts[:pixel_size]
35
- opts.merge!({:pixel_size => 3})
36
- end
37
- qr = RQRCode::QRCode.new(str, opts)
38
- data = []
39
- qr.modules.each_index do |x|
40
- qr.modules.each_index do |y|
41
- if qr.dark?(x,y)
42
- 3.times { data << 0 }
43
- else
44
- 3.times { data << 255 }
9
+ opts = rest[0] unless rest.empty?
10
+ opts ||= {}
11
+ opts[:size] = compute_size(str) unless opts[:size]
12
+ opts[:pixel_size] = 3 unless opts[:pixel_size]
13
+ qr_code, data = build_qr_code(str, opts)
14
+ create_image(qr_code, data, outfile, opts)
15
+ end
16
+
17
+ class << self
18
+ private
19
+
20
+ def build_qr_code(str, opts)
21
+ qr = RQRCodeCore::QRCode.new(str, opts)
22
+ data = [].tap do |px|
23
+ qr.modules.each_index do |x|
24
+ qr.modules.each_index do |y|
25
+ if qr.checked?(x, y)
26
+ 3.times { px << 0 }
27
+ else
28
+ 3.times { px << 255 }
29
+ end
30
+ end
45
31
  end
46
32
  end
33
+ [qr, data]
47
34
  end
48
- MojoMagick::convert do |c|
49
- d = data.pack 'C'*data.size
50
- c.blob(d, :format => :rgb, :depth => 8, :size => ("%dx%d" % [qr.modules.size, qr.modules.size]))
51
- if opts[:pixel_size]
52
- wd = qr.modules.size * opts[:pixel_size].to_i
53
- c.scale "%dx%d" % [ wd, wd ]
54
- end
55
- if opts[:border]
56
- border = opts[:border].to_i
57
- c.bordercolor '"#ffffff"'
58
- c.border '%dx%d' % [ border, border ]
35
+
36
+ def create_image(qr_code, data, outfile, opts)
37
+ MojoMagick.convert do |c|
38
+ d = data.pack "C" * data.size
39
+ c.blob(d, format: :rgb, depth: 8, size: format("%dx%d", qr_code.modules.size, qr_code.modules.size))
40
+ if opts[:pixel_size]
41
+ wd = qr_code.modules.size * opts[:pixel_size].to_i
42
+ c.scale format("%dx%d", wd, wd)
43
+ end
44
+ if opts[:border]
45
+ border = opts[:border].to_i
46
+ c.bordercolor "white"
47
+ c.border format("%dx%d", border, border)
48
+ end
49
+ c.file outfile
59
50
  end
60
- c.file outfile
61
51
  end
62
- end
63
52
 
64
- private
65
- SIZE_RESTRICTIONS = [0, 7, 14, 24, 34, 44, 58, 64, 84, 98, 119]
53
+ def compute_size(str)
54
+ slen = str.size
55
+ ii = 0
56
+ while ii < SIZE_RESTRICTIONS.length
57
+ break if slen < SIZE_RESTRICTIONS[ii]
66
58
 
67
- def self.compute_size(str)
68
- slen = str.size
69
- size = 4
70
- ii = 0
71
- while ii < SIZE_RESTRICTIONS.length do
72
- if slen < SIZE_RESTRICTIONS[ii]
73
- break
59
+ ii += 1
74
60
  end
75
- ii+=1
76
- end
77
- if ii > 10
78
- raise "Your string is too big for this encoder. It should be less than #{SIZE_RESTRICTIONS.last} characters"
61
+ if ii > 10
62
+ raise "Your string is too big for this encoder. It should be less than #{SIZE_RESTRICTIONS.last} characters"
63
+ end
64
+
65
+ ii
79
66
  end
80
- return ii
81
67
  end
82
68
  end
data/lib/qr4r/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Qr4r
2
- VERSION = '0.3.4'
2
+ VERSION = "0.6.1".freeze
3
3
  end
data/qr4r.gemspec CHANGED
@@ -1,23 +1,28 @@
1
- $:.push File.expand_path("../lib", __FILE__)
1
+ $LOAD_PATH.push File.expand_path("lib", __dir__)
2
2
  require "qr4r/version"
3
3
 
4
4
  Gem::Specification.new do |s|
5
+ s.required_ruby_version = ">= 2.5.0"
5
6
  s.name = "qr4r"
7
+ s.licenses = ["WTFPL"]
6
8
  s.version = Qr4r::VERSION
7
9
  s.platform = Gem::Platform::RUBY
8
10
  s.authors = ["Jon Rogers"]
9
- s.email = ["r@2rye.com"]
10
- s.homepage = "http://github.com/2rye/qr4r"
11
+ s.email = ["jon@rcode5.com"]
12
+ s.homepage = "http://github.com/rcode5/qr4r"
11
13
  s.summary = "qr4r-#{Qr4r::VERSION}"
12
- s.description = %q{QR PNG Generator for Ruby. Leveraging RQRCode and MojoMagick modules}
14
+ s.description = "QR PNG Generator for Ruby. Leveraging RQRCode and MojoMagick modules"
13
15
 
14
16
  s.rubyforge_project = "qr4r"
15
-
17
+
16
18
  s.files = `git ls-files`.split("\n")
17
19
  s.test_files = `git ls-files -- {test,features}/*`.split("\n")
18
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
19
21
  s.require_paths = ["lib"]
20
- s.add_dependency('rqrcode')
21
- s.add_dependency('mojo_magick')
22
- s.add_development_dependency('rake')
22
+ s.add_dependency("mojo_magick", "~> 0.6.5")
23
+ s.add_dependency("rqrcode_core", "~> 0.1")
24
+ s.add_development_dependency("minitest", "~> 5.14")
25
+ s.add_development_dependency("rake", "~> 13.0")
26
+ s.add_development_dependency("rubocop", "~> 0.93")
27
+ s.add_development_dependency("rubocop-performance", "~> 1.8")
23
28
  end
data/test/qr4r_test.rb CHANGED
@@ -1,124 +1,120 @@
1
- require 'test/unit'
2
- require File::expand_path(File::join(File::dirname(__FILE__), '..', 'init'))
3
- require 'tempfile'
4
- class Qr4rTest < Test::Unit::TestCase
5
-
6
- def test_encode
7
- # do something
8
- f = Tempfile.new(['qr4r','.png'])
9
- Qr4r::encode('whatever yo', f.path)
10
- # assert that it worked
11
- assert File.exists?(f.path)
12
- r = MojoMagick::get_image_size(f.path)
13
- assert r[:height] == 25 * 3
14
- assert r[:width] == 25 * 3
15
- end
16
-
17
- def test_encode_with_size
18
- # do something
19
- f = Tempfile.new(['qr4r','.png'])
20
- Qr4r::encode('whatever yo', f.path, :size => 4)
21
- # assert that it worked
22
- assert File.exists?(f)
23
- r = MojoMagick::get_image_size(f.path)
24
- assert r[:height] == 33 * 3
25
- assert r[:width] == 33 * 3
26
- end
27
-
28
- def test_encode_with_size_and_border
29
- # do something
30
- f = Tempfile.new(['qr4r','.png'])
31
- Qr4r::encode('whatever yo', f.path, :size => 4, :border => 10)
32
- # assert that it worked
33
- assert File.exists?(f)
34
- r = MojoMagick::get_image_size(f.path)
35
- assert r[:height] == 33 * 3 + 20
36
- assert r[:width] == 33 * 3 + 20
37
- end
38
-
39
- def test_encode_with_pixel_size
40
- # do something
41
- f = Tempfile.new(['qr4r','.png'])
42
- Qr4r::encode('whatever yo', f.path, :pixel_size => 5)
43
- # assert that it worked
44
- assert File.exists?(f)
45
- r = MojoMagick::get_image_size(f.path)
46
- assert r[:height] == 25 * 5
47
- assert r[:width] == 25 * 5
48
- end
49
-
50
- def test_encode_with_pixel_size_as_string
51
- # do something
52
- f = Tempfile.new(['qr4r','.png'])
53
- Qr4r::encode('whatever yo', f.path, :pixel_size => '5')
54
- # assert that it worked
55
- assert File.exists?(f)
56
- r = MojoMagick::get_image_size(f.path)
57
- assert r[:height] == 25 * 5
58
- assert r[:width] == 25 * 5
59
- end
60
-
61
- def test_encode_with_size_and_level
62
- # do something
63
- f = Tempfile.new(['qr4r','.png'])
64
- Qr4r::encode('whatever yo', f.path, :size => 4, :level => :m)
65
- # assert that it worked
66
- assert File.exists?(f)
67
- r = MojoMagick::get_image_size(f.path)
68
- assert r[:height] == 33 * 3
69
- assert r[:width] == 33 * 3
70
- end
71
-
72
- def test_a_long_string_with_size_thats_too_small
73
- caught = false
74
- begin
75
- f = Tempfile.new(['qr4r','.png'])
76
- Qr4r::encode('this string should also be encodable. don\'t ya think', f.path, :size => 4)
77
- rescue
78
- caught = true
79
- end
80
- assert caught, 'Expected an error'
81
- end
82
-
83
- def test_a_long_string_with_size_thats_right
84
- f = Tempfile.new(['qr4r','.png'])
85
- Qr4r::encode('this string should also be encodable. don\'t ya think', f.path, :size => 10)
86
- assert File.exists?(f)
87
- r = MojoMagick::get_image_size(f.path)
88
- assert r[:height] == 57 * 3
89
- assert r[:width] == 57 * 3
90
- end
91
-
92
- def test_a_long_string_without_size
93
- f = Tempfile.new(['qr4r','.png'])
94
- Qr4r::encode('this string should also be encodable. don\'t ya think', f.path)
95
- assert File.exists?(f)
96
- r = MojoMagick::get_image_size(f.path)
97
- assert r[:height] = 41 * 3
98
- assert r[:width] = 41 * 3
99
-
100
- end
101
-
102
- def test_compute_size
103
- test_sizes = [ 7, 14, 24, 34, 44, 58, 64, 84, 98]
104
- test_sizes.each_with_index do |sz, idx|
105
- str = 'a'*(sz-1)
106
- assert Qr4r.send(:compute_size, str) == idx+1
107
- str = 'a'*(sz)
108
- assert Qr4r.send(:compute_size, str) == idx+2
109
- end
110
- end
111
-
112
- def test_compute_size_too_big
113
- str = 'a'*120
114
- caught = false
115
- begin
116
- Qr4r.send(:compute_size, str)
117
- rescue Exception => ex
118
- caught = true
119
- end
120
- assert caught, "Expected exception"
121
-
122
- end
123
-
124
- end
1
+ require "minitest/autorun"
2
+ require File.expand_path(File.join(File.dirname(__FILE__), "..", "init"))
3
+ require "tempfile"
4
+ class Qr4rTest < MiniTest::Test
5
+ def test_encode
6
+ # do something
7
+ f = Tempfile.new(["qr4r", ".png"])
8
+ Qr4r.encode("whatever yo", f.path)
9
+ # assert that it worked
10
+ assert File.exist?(f.path)
11
+ r = MojoMagick.get_image_size(f.path)
12
+ assert r[:height] == 25 * 3
13
+ assert r[:width] == 25 * 3
14
+ end
15
+
16
+ def test_encode_with_size
17
+ # do something
18
+ f = Tempfile.new(["qr4r", ".png"])
19
+ Qr4r.encode("whatever yo", f.path, size: 4)
20
+ # assert that it worked
21
+ assert File.exist?(f)
22
+ r = MojoMagick.get_image_size(f.path)
23
+ assert r[:height] == 33 * 3
24
+ assert r[:width] == 33 * 3
25
+ end
26
+
27
+ def test_encode_with_size_and_border
28
+ # do something
29
+ f = Tempfile.new(["qr4r", ".png"])
30
+ Qr4r.encode("whatever yo", f.path, size: 4, border: 10)
31
+ # assert that it worked
32
+ assert File.exist?(f)
33
+ r = MojoMagick.get_image_size(f.path)
34
+ assert r[:height] == 33 * 3 + 20
35
+ assert r[:width] == 33 * 3 + 20
36
+ end
37
+
38
+ def test_encode_with_pixel_size
39
+ # do something
40
+ f = Tempfile.new(["qr4r", ".png"])
41
+ Qr4r.encode("whatever yo", f.path, pixel_size: 5)
42
+ # assert that it worked
43
+ assert File.exist?(f)
44
+ r = MojoMagick.get_image_size(f.path)
45
+ assert r[:height] == 25 * 5
46
+ assert r[:width] == 25 * 5
47
+ end
48
+
49
+ def test_encode_with_pixel_size_as_string
50
+ # do something
51
+ f = Tempfile.new(["qr4r", ".png"])
52
+ Qr4r.encode("whatever yo", f.path, pixel_size: "5")
53
+ # assert that it worked
54
+ assert File.exist?(f)
55
+ r = MojoMagick.get_image_size(f.path)
56
+ assert r[:height] == 25 * 5
57
+ assert r[:width] == 25 * 5
58
+ end
59
+
60
+ def test_encode_with_size_and_level
61
+ # do something
62
+ f = Tempfile.new(["qr4r", ".png"])
63
+ Qr4r.encode("whatever yo", f.path, size: 4, level: :m)
64
+ # assert that it worked
65
+ assert File.exist?(f)
66
+ r = MojoMagick.get_image_size(f.path)
67
+ assert r[:height] == 33 * 3
68
+ assert r[:width] == 33 * 3
69
+ end
70
+
71
+ def test_a_long_string_with_size_thats_too_small
72
+ caught = false
73
+ begin
74
+ f = Tempfile.new(["qr4r", ".png"])
75
+ Qr4r.encode("this string should also be encodable. don't ya think", f.path, size: 4)
76
+ rescue StandardError
77
+ caught = true
78
+ end
79
+ assert caught, "Expected an error"
80
+ end
81
+
82
+ def test_a_long_string_with_size_thats_right
83
+ f = Tempfile.new(["qr4r", ".png"])
84
+ Qr4r.encode("this string should also be encodable. don't ya think", f.path, size: 10)
85
+ assert File.exist?(f)
86
+ r = MojoMagick.get_image_size(f.path)
87
+ assert r[:height] == 57 * 3
88
+ assert r[:width] == 57 * 3
89
+ end
90
+
91
+ def test_a_long_string_without_size
92
+ f = Tempfile.new(["qr4r", ".png"])
93
+ Qr4r.encode("this string should also be encodable. don't ya think", f.path)
94
+ assert File.exist?(f)
95
+ r = MojoMagick.get_image_size(f.path)
96
+ assert r[:height] = 41 * 3
97
+ assert r[:width] = 41 * 3
98
+ end
99
+
100
+ def test_compute_size
101
+ test_sizes = [7, 14, 24, 34, 44, 58, 64, 84, 98]
102
+ test_sizes.each_with_index do |sz, idx|
103
+ str = "a" * (sz - 1)
104
+ assert Qr4r.send(:compute_size, str) == idx + 1
105
+ str = "a" * sz
106
+ assert Qr4r.send(:compute_size, str) == idx + 2
107
+ end
108
+ end
109
+
110
+ def test_compute_size_too_big
111
+ str = "a" * 120
112
+ caught = false
113
+ begin
114
+ Qr4r.send(:compute_size, str)
115
+ rescue StandardError => _e
116
+ caught = true
117
+ end
118
+ assert caught, "Expected exception"
119
+ end
120
+ end
metadata CHANGED
@@ -1,75 +1,119 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qr4r
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
5
- prerelease:
4
+ version: 0.6.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Jon Rogers
9
- autorequire:
8
+ autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-09-17 00:00:00.000000000 Z
11
+ date: 2021-05-01 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: rqrcode
14
+ name: mojo_magick
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
- version: '0'
19
+ version: 0.6.5
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
- version: '0'
26
+ version: 0.6.5
30
27
  - !ruby/object:Gem::Dependency
31
- name: mojo_magick
28
+ name: rqrcode_core
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - "~>"
36
32
  - !ruby/object:Gem::Version
37
- version: '0'
33
+ version: '0.1'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - "~>"
44
39
  - !ruby/object:Gem::Version
45
- version: '0'
40
+ version: '0.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '5.14'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '5.14'
46
55
  - !ruby/object:Gem::Dependency
47
56
  name: rake
48
57
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
58
  requirements:
51
- - - ! '>='
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '13.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '13.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
52
74
  - !ruby/object:Gem::Version
53
- version: '0'
75
+ version: '0.93'
54
76
  type: :development
55
77
  prerelease: false
56
78
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
79
  requirements:
59
- - - ! '>='
80
+ - - "~>"
60
81
  - !ruby/object:Gem::Version
61
- version: '0'
82
+ version: '0.93'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop-performance
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.8'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.8'
62
97
  description: QR PNG Generator for Ruby. Leveraging RQRCode and MojoMagick modules
63
98
  email:
64
- - r@2rye.com
99
+ - jon@rcode5.com
65
100
  executables: []
66
101
  extensions: []
67
102
  extra_rdoc_files: []
68
103
  files:
69
- - .rvmrc
104
+ - ".circleci/config.yml"
105
+ - ".gitignore"
106
+ - ".rubocop-common.yml"
107
+ - ".rubocop-performance.yml"
108
+ - ".rubocop.yml"
109
+ - ".ruby-version"
110
+ - ".rvmrc"
70
111
  - Gemfile
112
+ - Gemfile.lock
113
+ - LICENSE.txt
71
114
  - README.md
72
115
  - Rakefile
116
+ - examples/generate_qr4r.rb
73
117
  - init.rb
74
118
  - lib/qr4r.rb
75
119
  - lib/qr4r.rb~
@@ -77,29 +121,28 @@ files:
77
121
  - lib/qr4r/version.rb~
78
122
  - qr4r.gemspec
79
123
  - test/qr4r_test.rb
80
- homepage: http://github.com/2rye/qr4r
81
- licenses: []
82
- post_install_message:
124
+ homepage: http://github.com/rcode5/qr4r
125
+ licenses:
126
+ - WTFPL
127
+ metadata: {}
128
+ post_install_message:
83
129
  rdoc_options: []
84
130
  require_paths:
85
131
  - lib
86
132
  required_ruby_version: !ruby/object:Gem::Requirement
87
- none: false
88
133
  requirements:
89
- - - ! '>='
134
+ - - ">="
90
135
  - !ruby/object:Gem::Version
91
- version: '0'
136
+ version: 2.5.0
92
137
  required_rubygems_version: !ruby/object:Gem::Requirement
93
- none: false
94
138
  requirements:
95
- - - ! '>='
139
+ - - ">="
96
140
  - !ruby/object:Gem::Version
97
141
  version: '0'
98
142
  requirements: []
99
- rubyforge_project: qr4r
100
- rubygems_version: 1.8.23
101
- signing_key:
102
- specification_version: 3
103
- summary: qr4r-0.3.4
143
+ rubygems_version: 3.0.3
144
+ signing_key:
145
+ specification_version: 4
146
+ summary: qr4r-0.6.1
104
147
  test_files:
105
148
  - test/qr4r_test.rb