rqrcode_png_bin 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6f7a93c7e88af7ad00650a260fdf82666f2e5c00
4
- data.tar.gz: 0d43808a613a8e202a26dcc39f8b2f881b457ccf
3
+ metadata.gz: 3af632bfe45808e81abd4c88cfb19cd0cc842e87
4
+ data.tar.gz: 49e8deddb8c9236ab199df2fb99de0d51b852b3c
5
5
  SHA512:
6
- metadata.gz: 7304ea95eafea1003b5a9b89e1a443cc428e1196598541682e51e92e5260dc311e6597a5a668db827a5211bb5cd3d9c6dd4587e926db9d15d32754ee3fbf78da
7
- data.tar.gz: 8007c59f8f2b9800e729bf37ef53d5ec631fffe110a6f53a42c57bd454d984ea974e46fc8e100c04f2411b7499ddab775a84d778834611c507a567f2f0857e10
6
+ metadata.gz: 25fb3ed536294faaab8a92c736cc0bfad2843721ffb35643862ebed21857b9aceafeefa349e52ef672d7c273320a2b2c84238c4730bb78725724692848a45f92
7
+ data.tar.gz: df4057489ee9c0673b231bec9935b72ed3b0daf2c551f1c20c36fcdb69972263aced58090ef3b88f5eec28ec81c008d65e42326088d126e076fc0e099cae7283
data/README.md CHANGED
@@ -8,7 +8,20 @@ command line interface for rqrcode_png
8
8
 
9
9
  ## Usage
10
10
 
11
- rqrcode_png STRING > qrcode.png
11
+ $ rqrcode_png STRING > qrcode.png
12
+
13
+ or
14
+
15
+ $ rqrcode_png -f TSV_FILE
16
+
17
+ ## TSV format
18
+
19
+ Two formats exists.
20
+
21
+ 1. 1 line : 1 text for encoding
22
+ 2. 1 line : 1 text for encoding\<TAB\>1 filename
23
+
24
+ If you choose format one, output filename is deterimined automatically from text for encoding (with CGI#escape).
12
25
 
13
26
  ## Contributing
14
27
 
@@ -5,25 +5,37 @@ module RqrcodePngBin
5
5
  class App
6
6
  def initialize(argv = [])
7
7
  @argv = argv
8
- @size = 4
9
- @level = :m
8
+
10
9
  @canvas = nil
10
+ @file = nil
11
+ @level = :m
12
+ @size = 4
11
13
 
12
14
  parser.parse!(@argv)
13
15
  end
14
- attr_reader :size, :level, :canvas
16
+ attr_reader :canvas, :file, :level, :size
15
17
 
16
18
  def run
17
- if str
18
- png = RQRCode::QRCode.new(str, opts).to_img
19
- png = png.resize(*canvas) if canvas
20
-
21
- STDOUT.puts png
19
+ if file
20
+ FileReader.new(file).each {|str, dest|
21
+ open(dest, 'wb') {|f|
22
+ f.puts generate_png(str)
23
+ }
24
+ }
25
+ elsif str
26
+ STDOUT.puts generate_png(str)
22
27
  else
23
- STDERR.puts "rqrcode_png #{VERSION}", nil, parser.help
28
+ STDERR.puts "rqrcode_png #{VERSION}", '', parser.help
24
29
  end
25
30
  end
26
31
 
32
+ def generate_png(str)
33
+ png = RQRCode::QRCode.new(str, opts).to_img
34
+ png = png.resize(*canvas) if canvas
35
+
36
+ png
37
+ end
38
+
27
39
  #
28
40
  # [return] String
29
41
  #
@@ -48,13 +60,21 @@ module RqrcodePngBin
48
60
  OptionParser.new do |opt|
49
61
  opt.version = VERSION
50
62
  opt.banner = "Usage: rqrcode_png [option] string"
51
- opt.on('-s', '--size SIZE (default 4)') {|v|
52
- re = %r{\A[0-9]+\z}
63
+
64
+ opt.on('-c', '--canvas CANVAS (ex 200x200)') {|v|
65
+ re = %r{\A([0-9]+)x([0-9]+)\z}
53
66
 
54
67
  if v =~ re
55
- @size = v.to_i
68
+ @canvas = [$1.to_i, $2.to_i]
56
69
  else
57
- raise ArgumentError, "option size should match #{re}"
70
+ raise ArgumentError, "option canvas should match #{re}"
71
+ end
72
+ }
73
+ opt.on('-f', '--from-file FILE') {|v|
74
+ if File.exist?(v)
75
+ @file = v
76
+ else
77
+ raise ArgumentError, "file you specified '#{v}' does not exist"
58
78
  end
59
79
  }
60
80
  opt.on('-l', '--level LEVEL (default m)') {|v|
@@ -66,13 +86,13 @@ module RqrcodePngBin
66
86
  raise ArgumentError, "option level should be included #{options}"
67
87
  end
68
88
  }
69
- opt.on('-c', '--canvas CANVAS (ex 200x200)') {|v|
70
- re = %r{\A([0-9]+)x([0-9]+)\z}
89
+ opt.on('-s', '--size SIZE (default 4)') {|v|
90
+ re = %r{\A[0-9]+\z}
71
91
 
72
92
  if v =~ re
73
- @canvas = [$1.to_i, $2.to_i]
93
+ @size = v.to_i
74
94
  else
75
- raise ArgumentError, "option canvas should match #{re}"
95
+ raise ArgumentError, "option size should match #{re}"
76
96
  end
77
97
  }
78
98
  end
@@ -0,0 +1,33 @@
1
+ require "cgi"
2
+
3
+ module RqrcodePngBin
4
+ class FileReader
5
+ def initialize(file)
6
+ @file = open(file)
7
+ @pat = %r{\A([^\t]+)(?:\t([^\t]+))?\z}
8
+
9
+ @str = nil
10
+ @dest = nil
11
+ end
12
+
13
+ #
14
+ # [param] Proc block
15
+ #
16
+ def each(&block)
17
+ @file.each_line {|line|
18
+ split!(line.chomp)
19
+ block.call(@str, @dest)
20
+ }
21
+ end
22
+
23
+ #
24
+ # [param] String line
25
+ #
26
+ def split!(line)
27
+ @pat =~ line
28
+
29
+ @str = $1
30
+ @dest = $2 ? $2 : "#{CGI.escape($1)}.png"
31
+ end
32
+ end
33
+ end
@@ -1,3 +1,3 @@
1
1
  module RqrcodePngBin
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -1,6 +1,7 @@
1
1
  require "rqrcode_png"
2
2
  require "rqrcode_png_bin/version"
3
3
  require "rqrcode_png_bin/app"
4
+ require "rqrcode_png_bin/file_reader"
4
5
 
5
6
  module RqrcodePngBin
6
7
  end
@@ -1,26 +1,43 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  require 'spec_helper'
3
3
 
4
- describe RqrcodePngBin do
4
+ describe RqrcodePngBin::App do
5
5
  def app(argv = [])
6
6
  RqrcodePngBin::App.new(argv)
7
7
  end
8
8
 
9
9
  describe '#parser' do
10
- context 'size' do
10
+ context 'canvas' do
11
11
  context 'nil' do
12
12
  it {
13
- expect(app.size).to be == 4
13
+ expect(app.canvas).to be_nil
14
14
  }
15
15
  end
16
- context '5' do
16
+ context '200x200' do
17
17
  it {
18
- expect(app(%w(-s 5)).size).to be == 5
18
+ expect(app(%w(-c 200x200)).canvas).to be == [200, 200]
19
19
  }
20
20
  end
21
- context 'a' do
21
+ context 'abc' do
22
22
  it {
23
- expect {app(%w(-s a))}.to raise_error(ArgumentError)
23
+ expect {app(%w(-c abc))}.to raise_error(ArgumentError)
24
+ }
25
+ end
26
+ end
27
+ context 'file' do
28
+ context 'nil' do
29
+ it {
30
+ expect(app.file).to be_nil
31
+ }
32
+ end
33
+ context 'file exist' do
34
+ it {
35
+ expect(app(['-f', __FILE__]).file).to be == __FILE__
36
+ }
37
+ end
38
+ context 'file not exist' do
39
+ it {
40
+ expect {app(%w(-f foo)).file}.to raise_error(ArgumentError)
24
41
  }
25
42
  end
26
43
  end
@@ -41,20 +58,20 @@ describe RqrcodePngBin do
41
58
  }
42
59
  end
43
60
  end
44
- context 'canvas' do
61
+ context 'size' do
45
62
  context 'nil' do
46
63
  it {
47
- expect(app.canvas).to be_nil
64
+ expect(app.size).to be == 4
48
65
  }
49
66
  end
50
- context '200x200' do
67
+ context '5' do
51
68
  it {
52
- expect(app(%w(-c 200x200)).canvas).to be == [200, 200]
69
+ expect(app(%w(-s 5)).size).to be == 5
53
70
  }
54
71
  end
55
- context 'abc' do
72
+ context 'a' do
56
73
  it {
57
- expect {app(%w(-c abc))}.to raise_error(ArgumentError)
74
+ expect {app(%w(-s a))}.to raise_error(ArgumentError)
58
75
  }
59
76
  end
60
77
  end
@@ -0,0 +1,49 @@
1
+ require 'spec_helper'
2
+
3
+ describe RqrcodePngBin::FileReader do
4
+ describe '#split!' do
5
+ let(:reader) {
6
+ RqrcodePngBin::FileReader.new(File.dirname(__FILE__) + '/support/dummy')
7
+ }
8
+ let(:str) {
9
+ reader.instance_variable_get('@str')
10
+ }
11
+ let(:dest) {
12
+ reader.instance_variable_get('@dest')
13
+ }
14
+
15
+ context 'only string without escape' do
16
+ before {
17
+ reader.split!('abc')
18
+ }
19
+ context '@str' do
20
+ it { expect(str).to be == 'abc' }
21
+ end
22
+ context '@dest' do
23
+ it { expect(dest).to be == 'abc.png' }
24
+ end
25
+ end
26
+ context 'only string with escape' do
27
+ before {
28
+ reader.split!('http://github.com')
29
+ }
30
+ context '@str' do
31
+ it { expect(str).to be == 'http://github.com' }
32
+ end
33
+ context '@dest' do
34
+ it { expect(dest).to be == 'http%3A%2F%2Fgithub.com.png' }
35
+ end
36
+ end
37
+ context 'string with filename' do
38
+ before {
39
+ reader.split!("str\tfilename")
40
+ }
41
+ context '@str' do
42
+ it { expect(str).to be == 'str' }
43
+ end
44
+ context '@dest' do
45
+ it { expect(dest).to be == 'filename' }
46
+ end
47
+ end
48
+ end
49
+ end
File without changes
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rqrcode_png_bin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - wtnabe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-28 00:00:00.000000000 Z
11
+ date: 2014-01-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rqrcode_png
@@ -84,10 +84,13 @@ files:
84
84
  - bin/rqrcode_png
85
85
  - lib/rqrcode_png_bin.rb
86
86
  - lib/rqrcode_png_bin/app.rb
87
+ - lib/rqrcode_png_bin/file_reader.rb
87
88
  - lib/rqrcode_png_bin/version.rb
88
89
  - rqrcode_png_bin.gemspec
89
- - spec/rqrcode_png_bin_spec.rb
90
+ - spec/app_spec.rb
91
+ - spec/file_reader_spec.rb
90
92
  - spec/spec_helper.rb
93
+ - spec/support/dummy
91
94
  homepage: https://github.com/wtnabe/rqrcode_png_bin
92
95
  licenses:
93
96
  - BSD
@@ -113,5 +116,7 @@ signing_key:
113
116
  specification_version: 4
114
117
  summary: command line interface for rqrcode_png
115
118
  test_files:
116
- - spec/rqrcode_png_bin_spec.rb
119
+ - spec/app_spec.rb
120
+ - spec/file_reader_spec.rb
117
121
  - spec/spec_helper.rb
122
+ - spec/support/dummy