rocrad 0.1.2 → 0.1.3

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.
data/Gemfile CHANGED
@@ -4,14 +4,15 @@ source "http://rubygems.org"
4
4
  # gem "activesupport", ">= 2.3.5"
5
5
 
6
6
  gem "uuid", "~> 2.3.2"
7
+ gem "rmagick", "~> 2.13.1"
7
8
 
8
9
  # Add dependencies to develop your gem here.
9
10
  # Include everything needed to run rake, tests, features, etc.
10
11
  group :development do
11
- gem "mocha", "~> 0.9.0"
12
- gem "rake", "~> 0.8.0"
13
- gem "bundler", "~> 1.0.0"
12
+ gem "mocha", "~> 0.9.12"
13
+ gem "rake", "~> 0.8.7"
14
+ gem "bundler", "~> 1.0.14"
14
15
  gem "jeweler", "~> 1.6.0"
15
- gem "rcov", ">= 0"
16
- gem "test-unit", "2.3.0"
16
+ gem "rcov", "~> 0.9.9"
17
+ gem "test-unit", "~> 2.3.0"
17
18
  end
data/Gemfile.lock CHANGED
@@ -10,6 +10,7 @@ GEM
10
10
  mocha (0.9.12)
11
11
  rake (0.8.7)
12
12
  rcov (0.9.9)
13
+ rmagick (2.13.1)
13
14
  test-unit (2.3.0)
14
15
  uuid (2.3.2)
15
16
  macaddr (~> 1.0)
@@ -18,10 +19,11 @@ PLATFORMS
18
19
  ruby
19
20
 
20
21
  DEPENDENCIES
21
- bundler (~> 1.0.0)
22
+ bundler (~> 1.0.14)
22
23
  jeweler (~> 1.6.0)
23
- mocha (~> 0.9.0)
24
- rake (~> 0.8.0)
25
- rcov
26
- test-unit (= 2.3.0)
24
+ mocha (~> 0.9.12)
25
+ rake (~> 0.8.7)
26
+ rcov (~> 0.9.9)
27
+ rmagick (~> 2.13.1)
28
+ test-unit (~> 2.3.0)
27
29
  uuid (~> 2.3.2)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.1.3
@@ -0,0 +1,40 @@
1
+ class Rocrad
2
+ class Mixed < Rocrad
3
+
4
+ attr_accessor :areas
5
+
6
+ def initialize(src="", options = {})
7
+ super(src)
8
+ @areas = options.delete(:areas) || []
9
+ yield self if block_given?
10
+ end
11
+
12
+ def add_area(x, y, w, h)
13
+ @txt = ""
14
+ @areas << {:x => x, :y => y, :w => w, :h => h}
15
+ end
16
+
17
+ def areas=(value)
18
+ @areas = value.instance_of?(Array) ? value : []
19
+ @areas.delete_if { |area| !area.is_a?(Hash) or !area.has_key?(:x) or !area.has_key?(:y) or
20
+ !area.has_key?(:w) or !area.has_key?(:h) }
21
+ @txt = ""
22
+ end
23
+
24
+ private
25
+
26
+ #Convert parts of image to string
27
+ def convert
28
+ @txt = ""
29
+ @areas.each do |area|
30
+ image = Rocrad.new(@src.to_s)
31
+ image.crop!(area[:x].to_i, area[:y].to_i, area[:w].to_i, area[:h].to_i)
32
+ @txt << image.to_s
33
+ end
34
+ rescue
35
+ raise Rocrad::ConversionError
36
+ end
37
+
38
+ end
39
+ end
40
+
data/lib/rocrad.rb CHANGED
@@ -2,42 +2,37 @@ require "pathname"
2
2
  require "tempfile"
3
3
  require "uuid"
4
4
  require "net/http"
5
+ require "RMagick"
5
6
 
6
7
  require "rocrad/errors"
8
+ require "rocrad/mixed"
7
9
 
8
10
  class Rocrad
9
11
 
10
- attr_accessor :options
12
+ attr_accessor :src
13
+ attr_reader :tmp, :txt
11
14
 
12
-
13
- def initialize(src="", options={})
14
- @uid = UUID.new
15
- @source = get_source src
16
- @clear_console_output = options.delete(:clear_console_output)
17
- @clear_console_output = true if @clear_console_output.nil?
18
- @value = ""
15
+ def initialize(src="")
16
+ @uid = UUID.new
17
+ @src = get_source src
18
+ @txt = ""
19
+ @tmp = nil
19
20
  end
20
21
 
21
- def source= src=""
22
- @value = ""
23
- @source = get_source src
24
- end
25
-
26
- #TODO: Clear console for MacOS or Windows
27
- def clear_console_output
28
- return "" unless @clear_console_output
29
- "2>/dev/null" if File.exist?("/dev/null") #Linux console clear
22
+ def src=(value="")
23
+ @txt = ""
24
+ @src = get_source value
30
25
  end
31
26
 
32
27
  #Output value
33
28
  def to_s
34
- return @value if @value != ""
35
- if @source.instance_of? Pathname and @source.file?
29
+ return @txt if @txt != ""
30
+ if @src.instance_of? Pathname and @src.file?
36
31
  convert
37
- @value
38
- elsif @source.instance_of? URI::HTTP
32
+ @txt
33
+ elsif @src.instance_of? URI::HTTP
39
34
  convert_via_http
40
- @value
35
+ @txt
41
36
  else
42
37
  raise ImageNotSelectedError
43
38
  end
@@ -48,17 +43,31 @@ class Rocrad
48
43
  to_s.gsub(" ", "").gsub("\n", "").gsub("\r", "")
49
44
  end
50
45
 
46
+ #Crop image to convert
47
+ def crop!(x, y, w, h)
48
+ @txt = ""
49
+ src = Magick::Image.read(@src.to_s).first
50
+ src.crop!(x, y, w, h)
51
+ @tmp = Pathname.new(Dir::tmpdir).join("#{@uid.generate}_#{@src.sub(@src.extname, "-crop#{@src.extname}").basename}")
52
+ src.write @tmp.to_s
53
+ self
54
+ end
55
+
51
56
  private
52
57
 
58
+ def cco
59
+ "2>/dev/null" if File.exist?("/dev/null") #Linux console clear
60
+ end
61
+
53
62
  def convert_via_http
54
- tmp_path = Pathname.new(Dir::tmpdir).join("#{@uid.generate}_#{Pathname.new(@source.request_uri).basename}")
63
+ tmp_path = Pathname.new(Dir::tmpdir).join("#{@uid.generate}_#{Pathname.new(@src.request_uri).basename}")
55
64
  tmp_file = File.new(tmp_path.to_s, File::CREAT|File::TRUNC|File::RDWR, 0644)
56
- tmp_file.write(Net::HTTP.get(@source))
65
+ tmp_file.write(Net::HTTP.get(@src))
57
66
  tmp_file.close
58
- uri = @source
59
- @source = tmp_path
67
+ uri = @src
68
+ @src = tmp_path
60
69
  convert
61
- @source = uri
70
+ @src = uri
62
71
  remove_file([tmp_path])
63
72
  end
64
73
 
@@ -79,41 +88,43 @@ class Rocrad
79
88
  begin
80
89
  File.unlink(file) if File.exist?(file)
81
90
  rescue
82
- system "rm -f #{file}"
91
+ system "rm -f #{file} #{cco}"
83
92
  end
84
93
  end
85
94
  true
86
95
  rescue
87
- raise Rocrad::TempFilesNotRemovedError
96
+ raise TempFilesNotRemovedError
88
97
  end
89
98
 
90
99
  #Convert image to pnm
91
100
  def image_to_pnm
92
- pnm_image = Pathname.new(Dir::tmpdir).join("#{@uid.generate}_#{@source.sub(@source.extname, ".pnm").basename}")
93
- redirection = "#{@source} > #{pnm_image} #{clear_console_output}"
94
- case @source.extname
101
+ src = @tmp ? @tmp : @src
102
+ pnm = Pathname.new(Dir::tmpdir).join("#{@uid.generate}_#{@src.sub(@src.extname, ".pnm").basename}")
103
+ case @src.extname
95
104
  when ".jpg" then
96
- `djpeg -greyscale -pnm #{redirection}`
105
+ `djpeg -colors 2 -grayscale -dct float -pnm #{src} > #{pnm} #{cco}`
97
106
  when ".tif" then
98
- `tifftopnm #{redirection}`
107
+ `tifftopnm #{src} > #{pnm} #{cco}`
99
108
  when ".png" then
100
- `pngtopnm #{redirection}`
109
+ `pngtopnm #{src} > #{pnm} #{cco}`
101
110
  when ".bmp" then
102
- `bmptopnm #{redirection}`
111
+ `bmptopnm #{src} > #{pnm} #{cco}`
103
112
  else
104
113
  raise UnsupportedFileTypeError
105
114
  end
106
- pnm_image
115
+ pnm
107
116
  end
108
117
 
109
118
  #Convert image to string
110
119
  def convert
111
- txt_file = Pathname.new(Dir::tmpdir).join("#{@uid.generate}_#{@source.sub(@source.extname, ".txt").basename}")
112
- pnm_image = image_to_pnm
120
+ src = @tmp ? @tmp : @src
121
+ txt = Pathname.new(Dir::tmpdir).join("#{@uid.generate}_#{src.sub(src.extname, ".txt").basename}")
122
+ pnm = image_to_pnm
113
123
  begin
114
- `gocr #{pnm_image} -o #{txt_file} #{clear_console_output}`
115
- @value = File.read(txt_file)
116
- remove_file([pnm_image, txt_file])
124
+ `ocrad #{pnm} -l -F utf8 -o #{txt} #{cco}`
125
+ @txt = File.read(txt)
126
+ @tmp ? remove_file([pnm, txt, @tmp]) : remove_file([pnm, txt])
127
+ @tmp = nil
117
128
  rescue
118
129
  raise ConversionError
119
130
  end
data/rocrad.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{rocrad}
8
- s.version = "0.1.2"
8
+ s.version = "0.1.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ludwig Bratke"]
12
- s.date = %q{2011-05-27}
12
+ s.date = %q{2011-05-29}
13
13
  s.description = %q{Ruby library for working with Ocrad - The GNU OCR}
14
14
  s.email = %q{EeCnee1@netscape.net}
15
15
  s.extra_rdoc_files = [
@@ -27,6 +27,7 @@ Gem::Specification.new do |s|
27
27
  "VERSION",
28
28
  "lib/rocrad.rb",
29
29
  "lib/rocrad/errors.rb",
30
+ "lib/rocrad/mixed.rb",
30
31
  "rocrad.gemspec",
31
32
  "test/helper.rb",
32
33
  "test/images/mixed.tif",
@@ -36,6 +37,7 @@ Gem::Specification.new do |s|
36
37
  "test/images/test.png",
37
38
  "test/images/test.tif",
38
39
  "test/images/test1.tif",
40
+ "test/test_mixed.rb",
39
41
  "test/test_rocrad.rb"
40
42
  ]
41
43
  s.homepage = %q{http://github.com/EeCnee/rocrad}
@@ -49,29 +51,32 @@ Gem::Specification.new do |s|
49
51
 
50
52
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
51
53
  s.add_runtime_dependency(%q<uuid>, ["~> 2.3.2"])
52
- s.add_development_dependency(%q<mocha>, ["~> 0.9.0"])
53
- s.add_development_dependency(%q<rake>, ["~> 0.8.0"])
54
- s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
54
+ s.add_runtime_dependency(%q<rmagick>, ["~> 2.13.1"])
55
+ s.add_development_dependency(%q<mocha>, ["~> 0.9.12"])
56
+ s.add_development_dependency(%q<rake>, ["~> 0.8.7"])
57
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.14"])
55
58
  s.add_development_dependency(%q<jeweler>, ["~> 1.6.0"])
56
- s.add_development_dependency(%q<rcov>, [">= 0"])
57
- s.add_development_dependency(%q<test-unit>, ["= 2.3.0"])
59
+ s.add_development_dependency(%q<rcov>, ["~> 0.9.9"])
60
+ s.add_development_dependency(%q<test-unit>, ["~> 2.3.0"])
58
61
  else
59
62
  s.add_dependency(%q<uuid>, ["~> 2.3.2"])
60
- s.add_dependency(%q<mocha>, ["~> 0.9.0"])
61
- s.add_dependency(%q<rake>, ["~> 0.8.0"])
62
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
63
+ s.add_dependency(%q<rmagick>, ["~> 2.13.1"])
64
+ s.add_dependency(%q<mocha>, ["~> 0.9.12"])
65
+ s.add_dependency(%q<rake>, ["~> 0.8.7"])
66
+ s.add_dependency(%q<bundler>, ["~> 1.0.14"])
63
67
  s.add_dependency(%q<jeweler>, ["~> 1.6.0"])
64
- s.add_dependency(%q<rcov>, [">= 0"])
65
- s.add_dependency(%q<test-unit>, ["= 2.3.0"])
68
+ s.add_dependency(%q<rcov>, ["~> 0.9.9"])
69
+ s.add_dependency(%q<test-unit>, ["~> 2.3.0"])
66
70
  end
67
71
  else
68
72
  s.add_dependency(%q<uuid>, ["~> 2.3.2"])
69
- s.add_dependency(%q<mocha>, ["~> 0.9.0"])
70
- s.add_dependency(%q<rake>, ["~> 0.8.0"])
71
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
73
+ s.add_dependency(%q<rmagick>, ["~> 2.13.1"])
74
+ s.add_dependency(%q<mocha>, ["~> 0.9.12"])
75
+ s.add_dependency(%q<rake>, ["~> 0.8.7"])
76
+ s.add_dependency(%q<bundler>, ["~> 1.0.14"])
72
77
  s.add_dependency(%q<jeweler>, ["~> 1.6.0"])
73
- s.add_dependency(%q<rcov>, [">= 0"])
74
- s.add_dependency(%q<test-unit>, ["= 2.3.0"])
78
+ s.add_dependency(%q<rcov>, ["~> 0.9.9"])
79
+ s.add_dependency(%q<test-unit>, ["~> 2.3.0"])
75
80
  end
76
81
  end
77
82
 
@@ -0,0 +1,92 @@
1
+ require 'helper'
2
+ require 'pathname'
3
+
4
+ class TestMixed < Test::Unit::TestCase
5
+
6
+ def setup
7
+ @path = Pathname.new(__FILE__.gsub("test_mixed.rb", "")).expand_path
8
+ @tif = @path.join("images", "mixed.tif").to_s
9
+ @txt_tif = "43ZZ".downcase
10
+ end
11
+
12
+ def test_should_be_instantiable
13
+ assert_equal Rocrad::Mixed, Rocrad::Mixed.new.class
14
+ assert_equal Rocrad::Mixed, Rocrad::Mixed.new(@tif).class
15
+ end
16
+
17
+ def test_should_translate_parts_of_the_image_to_text
18
+ mix_block = Rocrad::Mixed.new(@tif) do |image|
19
+ image.add_area(28, 19, 25, 25) #position of 4
20
+ image.add_area(180, 22, 20, 28) # position of 3
21
+ image.add_area(218, 22, 24, 28) # position of z
22
+ image.add_area(248, 24, 22, 22) # position of z
23
+ end
24
+ assert_equal @txt_tif, mix_block.to_s_without_spaces
25
+
26
+ mix_block = Rocrad::Mixed.new(@tif, {:areas => [
27
+ {:x => 28, :y=>19, :w=>25, :h=>25}, #position of 4
28
+ {:x => 180, :y=>22, :w=>20, :h=>28}, # position of 3
29
+ {:x => 218, :y=>22, :w=>24, :h=>28}, # position of z
30
+ {:x => 248, :y=>24, :w=>22, :h=>22} # position of z
31
+ ]})
32
+ assert_equal @txt_tif, mix_block.to_s_without_spaces
33
+ end
34
+
35
+ def test_show_areas
36
+
37
+ mix_block = Rocrad::Mixed.new(@tif) do |image|
38
+ image.add_area(28, 19, 25, 25) #position of 4
39
+ image.add_area(180, 22, 20, 28) # position of 3
40
+ image.add_area(218, 22, 24, 28) # position of z
41
+ image.add_area(248, 24, 22, 22) # position of z
42
+ end
43
+
44
+ areas = [{:x=>28, :h=>25, :w=>25, :y=>19},
45
+ {:x=>180, :h=>28, :w=>20, :y=>22},
46
+ {:x=>218, :h=>28, :w=>24, :y=>22},
47
+ {:x=>248, :h=>22, :w=>22, :y=>24}]
48
+ assert_equal(areas, mix_block.areas)
49
+ end
50
+
51
+ def test_show_areas2
52
+ mix_block = Rocrad::Mixed.new(@tif, {:areas => [
53
+ {:x => 28, :y=>19, :w=>25, :h=>25}, #position of 4
54
+ {:x => 180, :y=>22, :w=>20, :h=>28}, # position of 3
55
+ {:x => 218, :y=>22, :w=>24, :h=>28}, # position of z
56
+ {:x => 248, :y=>24, :w=>22, :h=>22} # position of z
57
+ ]})
58
+
59
+ areas = [{:x=>28, :h=>25, :w=>25, :y=>19},
60
+ {:x=>180, :h=>28, :w=>20, :y=>22},
61
+ {:x=>218, :h=>28, :w=>24, :y=>22},
62
+ {:x=>248, :h=>22, :w=>22, :y=>24}]
63
+ assert_equal(areas, mix_block.areas)
64
+ end
65
+
66
+ def test_edit_areas
67
+ mix_block = Rocrad::Mixed.new(@tif, {:areas => [
68
+ {:x => 28, :y=>19, :w=>25, :h=>25}, #position of 4
69
+ {:x => 180, :y=>22, :w=>20, :h=>28}, # position of 3
70
+ {:x => 218, :y=>22, :w=>24, :h=>28}, # position of z
71
+ {:x => 248, :y=>24, :w=>22, :h=>22} # position of z
72
+ ]})
73
+
74
+ mix_block.areas = mix_block.areas[1..3]
75
+ areas = [{:x=>180, :h=>28, :w=>20, :y=>22},
76
+ {:x=>218, :h=>28, :w=>24, :y=>22},
77
+ {:x=>248, :h=>22, :w=>22, :y=>24}]
78
+ assert_equal(areas, mix_block.areas)
79
+ assert_equal @txt_tif[1..3], mix_block.to_s_without_spaces
80
+
81
+ mix_block.areas = []
82
+ assert_equal([], mix_block.areas)
83
+ assert_equal "", mix_block.to_s_without_spaces
84
+
85
+ mix_block.areas = nil
86
+ #assert_equal([], mix_block.areas)
87
+ assert_equal "", mix_block.to_s_without_spaces
88
+ end
89
+
90
+ end
91
+
92
+
data/test/test_rocrad.rb CHANGED
@@ -7,16 +7,20 @@ end
7
7
  class TestRocrad < Test::Unit::TestCase
8
8
 
9
9
  def setup
10
- @path = Pathname.new(__FILE__.gsub("test_rocrad.rb", "")).expand_path
11
- @image_jpg = @path.join("images", "test.jpg").to_s
12
- f = File.open(@image_jpg.to_s, "r")
13
- @chars = f.chars.to_a
10
+ @path = Pathname.new(__FILE__.gsub("test_rocrad.rb", "")).expand_path
11
+ @jpg = @path.join("images", "test.jpg").to_s
12
+ f = File.open(@jpg.to_s, "r")
13
+ @chars = f.chars.to_a
14
14
  f.close
15
+ @txt_jpg = ["3", "R", "8", "Z".downcase].to_s
16
+ @txt_tif = "43ZZ".downcase
17
+ @txt_png = ["H", "W", "9", "W".downcase].to_s
18
+ @txt_bmp = ["Z".downcase, "L", "A", "6"].to_s
15
19
  end
16
20
 
17
21
  def test_convert_via_http
18
22
  Net::HTTP.expects(:get).returns(@chars)
19
- assert_equal "3R8Z", Rocrad.new("http://localhost:3000/uploads/picture/data/4dd21bfd828bf81bdd00000d/nzp_img_17_4_2011_8_55_29.jpg").to_s_without_spaces
23
+ assert_equal @txt_jpg, Rocrad.new("http://localhost:3000/uploads/picture/data/4dd21bfd828bf81bdd00000d/nzp_img_17_4_2011_8_55_29.jpg").to_s_without_spaces
20
24
  end
21
25
 
22
26
  def test_convert_via_http_raise_exception
@@ -28,12 +32,12 @@ class TestRocrad < Test::Unit::TestCase
28
32
  def test_be_instantiable
29
33
  assert_equal Rocrad, Rocrad.new.class
30
34
  assert_equal Rocrad, Rocrad.new("").class
31
- assert_equal Rocrad, Rocrad.new(@image_jpg).class
35
+ assert_equal Rocrad, Rocrad.new(@jpg).class
32
36
  end
33
37
 
34
38
  def test_translate_image_to_text
35
- assert_equal "3R8Z", Rocrad.new(@image_jpg).to_s_without_spaces
36
- assert_equal "43ZZ", Rocrad.new(@path.join("images", "test.tif").to_s).to_s_without_spaces
39
+ assert_equal @txt_jpg, Rocrad.new(@jpg).to_s_without_spaces
40
+ assert_equal @txt_tif, Rocrad.new(@path.join("images", "test.tif").to_s).to_s_without_spaces
37
41
  end
38
42
 
39
43
  def test_unsupported_file_type_error
@@ -49,43 +53,55 @@ class TestRocrad < Test::Unit::TestCase
49
53
  end
50
54
 
51
55
  def test_translate_images_png_jpg
52
- assert_equal "HW9W", Rocrad.new(@path.join("images", "test.png").to_s).to_s_without_spaces
53
- assert_equal "3R8Z", Rocrad.new(@path.join("images", "test.jpg").to_s).to_s_without_spaces
56
+ assert_equal @txt_png, Rocrad.new(@path.join("images", "test.png").to_s).to_s_without_spaces
57
+ assert_equal @txt_jpg, Rocrad.new(@path.join("images", "test.jpg").to_s).to_s_without_spaces
54
58
  end
55
59
 
56
60
  def test_translate_images_bmp
57
- pend
58
- assert_equal "ZLA6", Rocrad.new(@path.join("images", "test.bmp").to_s).to_s_without_spaces
59
- end
60
-
61
- def test_translate_mixed_tif
62
- pend
63
- assert_equal "43ZZ", Rocrad.new(@path.join("images", "mixed.tif").to_s).to_s_without_spaces
61
+ assert_equal @txt_bmp, Rocrad.new(@path.join("images", "test.bmp").to_s).to_s_without_spaces
64
62
  end
65
63
 
66
64
  def test_translate_test1_tif
67
- pend
68
- assert_equal "V2V4", Rocrad.new(@path.join("images", "test1.tif").to_s).to_s_without_spaces
65
+ assert_equal "V2V4".downcase, Rocrad.new(@path.join("images", "test1.tif").to_s).to_s_without_spaces
69
66
  end
70
67
 
71
68
  def test_change_the_image
72
- image = Rocrad.new(@image_jpg)
73
- assert_equal "3R8Z", image.to_s_without_spaces
74
- image.source = @path.join("images", "test.tif").to_s
75
- assert_equal "43ZZ", image.to_s_without_spaces
69
+ image = Rocrad.new(@jpg)
70
+ assert_equal @txt_jpg, image.to_s_without_spaces
71
+ image.src = @path.join("images", "test.tif").to_s
72
+ assert_equal @txt_tif, image.to_s_without_spaces
76
73
  end
77
74
 
78
75
  def test_unique_uid
79
- assert_not_equal Rocrad.new(@image_jpg).instance_variable_get(:@uid).generate,
80
- Rocrad.new(@image_jpg).instance_variable_get(:@uid).generate
76
+ assert_not_equal Rocrad.new(@jpg).instance_variable_get(:@uid).generate,
77
+ Rocrad.new(@jpg).instance_variable_get(:@uid).generate
78
+ end
79
+
80
+ def test_should_crop_image_tif
81
+ tif = @path.join("images", "test.tif").to_s
82
+ assert_equal "4", Rocrad.new(tif).crop!(140, 10, 36, 40).to_s_without_spaces
83
+ assert_equal "3", Rocrad.new(tif).crop!(180, 10, 36, 40).to_s_without_spaces
84
+ assert_equal "Z".downcase, Rocrad.new(tif).crop!(200, 10, 36, 40).to_s_without_spaces
85
+ assert_equal "Z".downcase, Rocrad.new(tif).crop!(220, 10, 30, 40).to_s_without_spaces
86
+ end
87
+
88
+ def test_should_crop_image_tif_same_instance
89
+ tif = @path.join("images", "test.tif").to_s
90
+ instance = Rocrad.new(tif)
91
+ assert_equal "4", instance.crop!(140, 10, 36, 40).to_s_without_spaces
92
+ assert_equal "3", instance.crop!(180, 10, 36, 40).to_s_without_spaces
93
+ assert_equal "Z".downcase, instance.crop!(200, 10, 36, 40).to_s_without_spaces
94
+ assert_equal "Z".downcase, instance.crop!(220, 10, 30, 40).to_s_without_spaces
81
95
  end
82
96
 
83
- def test_generate_a_unique id
84
- reg = Rocrad.new(@image_jpg)
85
- assert_equal reg.generate_uid, reg.generate_uid
86
- value = reg.generate_uid
87
- reg.convert
88
- assert_not_equal value, reg.generate_uid
97
+ def test_attr_reader_while_cropping
98
+ tif = @path.join("images", "test.tif").to_s
99
+ rocrad = Rocrad.new(tif).crop!(140, 10, 36, 40)
100
+ assert_equal "", rocrad.txt
101
+ assert rocrad.tmp.instance_of? Pathname
102
+ assert_equal "4", rocrad.to_s_without_spaces
103
+ assert rocrad.txt.include?("4")
104
+ assert_nil rocrad.tmp
89
105
  end
90
106
 
91
107
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rocrad
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 29
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 2
10
- version: 0.1.2
9
+ - 3
10
+ version: 0.1.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ludwig Bratke
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-05-27 00:00:00 +02:00
18
+ date: 2011-05-29 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -35,56 +35,72 @@ dependencies:
35
35
  version_requirements: *id001
36
36
  prerelease: false
37
37
  - !ruby/object:Gem::Dependency
38
- type: :development
38
+ type: :runtime
39
39
  requirement: &id002 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
43
43
  - !ruby/object:Gem::Version
44
- hash: 59
44
+ hash: 57
45
+ segments:
46
+ - 2
47
+ - 13
48
+ - 1
49
+ version: 2.13.1
50
+ name: rmagick
51
+ version_requirements: *id002
52
+ prerelease: false
53
+ - !ruby/object:Gem::Dependency
54
+ type: :development
55
+ requirement: &id003 !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ~>
59
+ - !ruby/object:Gem::Version
60
+ hash: 35
45
61
  segments:
46
62
  - 0
47
63
  - 9
48
- - 0
49
- version: 0.9.0
64
+ - 12
65
+ version: 0.9.12
50
66
  name: mocha
51
- version_requirements: *id002
67
+ version_requirements: *id003
52
68
  prerelease: false
53
69
  - !ruby/object:Gem::Dependency
54
70
  type: :development
55
- requirement: &id003 !ruby/object:Gem::Requirement
71
+ requirement: &id004 !ruby/object:Gem::Requirement
56
72
  none: false
57
73
  requirements:
58
74
  - - ~>
59
75
  - !ruby/object:Gem::Version
60
- hash: 63
76
+ hash: 49
61
77
  segments:
62
78
  - 0
63
79
  - 8
64
- - 0
65
- version: 0.8.0
80
+ - 7
81
+ version: 0.8.7
66
82
  name: rake
67
- version_requirements: *id003
83
+ version_requirements: *id004
68
84
  prerelease: false
69
85
  - !ruby/object:Gem::Dependency
70
86
  type: :development
71
- requirement: &id004 !ruby/object:Gem::Requirement
87
+ requirement: &id005 !ruby/object:Gem::Requirement
72
88
  none: false
73
89
  requirements:
74
90
  - - ~>
75
91
  - !ruby/object:Gem::Version
76
- hash: 23
92
+ hash: 11
77
93
  segments:
78
94
  - 1
79
95
  - 0
80
- - 0
81
- version: 1.0.0
96
+ - 14
97
+ version: 1.0.14
82
98
  name: bundler
83
- version_requirements: *id004
99
+ version_requirements: *id005
84
100
  prerelease: false
85
101
  - !ruby/object:Gem::Dependency
86
102
  type: :development
87
- requirement: &id005 !ruby/object:Gem::Requirement
103
+ requirement: &id006 !ruby/object:Gem::Requirement
88
104
  none: false
89
105
  requirements:
90
106
  - - ~>
@@ -96,28 +112,30 @@ dependencies:
96
112
  - 0
97
113
  version: 1.6.0
98
114
  name: jeweler
99
- version_requirements: *id005
115
+ version_requirements: *id006
100
116
  prerelease: false
101
117
  - !ruby/object:Gem::Dependency
102
118
  type: :development
103
- requirement: &id006 !ruby/object:Gem::Requirement
119
+ requirement: &id007 !ruby/object:Gem::Requirement
104
120
  none: false
105
121
  requirements:
106
- - - ">="
122
+ - - ~>
107
123
  - !ruby/object:Gem::Version
108
- hash: 3
124
+ hash: 41
109
125
  segments:
110
126
  - 0
111
- version: "0"
127
+ - 9
128
+ - 9
129
+ version: 0.9.9
112
130
  name: rcov
113
- version_requirements: *id006
131
+ version_requirements: *id007
114
132
  prerelease: false
115
133
  - !ruby/object:Gem::Dependency
116
134
  type: :development
117
- requirement: &id007 !ruby/object:Gem::Requirement
135
+ requirement: &id008 !ruby/object:Gem::Requirement
118
136
  none: false
119
137
  requirements:
120
- - - "="
138
+ - - ~>
121
139
  - !ruby/object:Gem::Version
122
140
  hash: 3
123
141
  segments:
@@ -126,7 +144,7 @@ dependencies:
126
144
  - 0
127
145
  version: 2.3.0
128
146
  name: test-unit
129
- version_requirements: *id007
147
+ version_requirements: *id008
130
148
  prerelease: false
131
149
  description: Ruby library for working with Ocrad - The GNU OCR
132
150
  email: EeCnee1@netscape.net
@@ -148,6 +166,7 @@ files:
148
166
  - VERSION
149
167
  - lib/rocrad.rb
150
168
  - lib/rocrad/errors.rb
169
+ - lib/rocrad/mixed.rb
151
170
  - rocrad.gemspec
152
171
  - test/helper.rb
153
172
  - test/images/mixed.tif
@@ -157,6 +176,7 @@ files:
157
176
  - test/images/test.png
158
177
  - test/images/test.tif
159
178
  - test/images/test1.tif
179
+ - test/test_mixed.rb
160
180
  - test/test_rocrad.rb
161
181
  has_rdoc: true
162
182
  homepage: http://github.com/EeCnee/rocrad