rocrad 0.1.1 → 0.1.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.
data/Gemfile CHANGED
@@ -3,11 +3,13 @@ source "http://rubygems.org"
3
3
  # Example:
4
4
  # gem "activesupport", ">= 2.3.5"
5
5
 
6
- gem "rake", "0.8.7"
6
+ gem "uuid", "~> 2.3.2"
7
7
 
8
8
  # Add dependencies to develop your gem here.
9
9
  # Include everything needed to run rake, tests, features, etc.
10
10
  group :development do
11
+ gem "mocha", "~> 0.9.0"
12
+ gem "rake", "~> 0.8.0"
11
13
  gem "bundler", "~> 1.0.0"
12
14
  gem "jeweler", "~> 1.6.0"
13
15
  gem "rcov", ">= 0"
data/Gemfile.lock CHANGED
@@ -6,9 +6,13 @@ GEM
6
6
  bundler (~> 1.0.0)
7
7
  git (>= 1.2.5)
8
8
  rake
9
+ macaddr (1.0.0)
10
+ mocha (0.9.12)
9
11
  rake (0.8.7)
10
12
  rcov (0.9.9)
11
13
  test-unit (2.3.0)
14
+ uuid (2.3.2)
15
+ macaddr (~> 1.0)
12
16
 
13
17
  PLATFORMS
14
18
  ruby
@@ -16,6 +20,8 @@ PLATFORMS
16
20
  DEPENDENCIES
17
21
  bundler (~> 1.0.0)
18
22
  jeweler (~> 1.6.0)
19
- rake (= 0.8.7)
23
+ mocha (~> 0.9.0)
24
+ rake (~> 0.8.0)
20
25
  rcov
21
26
  test-unit (= 2.3.0)
27
+ uuid (~> 2.3.2)
data/Rakefile CHANGED
@@ -14,13 +14,13 @@ require 'rake'
14
14
  require 'jeweler'
15
15
  Jeweler::Tasks.new do |gem|
16
16
  # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
- gem.name = "rocrad"
18
- gem.homepage = "http://github.com/EeCnee/rocrad"
19
- gem.license = "MIT"
20
- gem.summary = %Q{Ruby library for working with Ocrad - The GNU OCR}
17
+ gem.name = "rocrad"
18
+ gem.homepage = "http://github.com/EeCnee/rocrad"
19
+ gem.license = "MIT"
20
+ gem.summary = %Q{Ruby library for working with Ocrad - The GNU OCR}
21
21
  gem.description = %Q{Ruby library for working with Ocrad - The GNU OCR}
22
- gem.email = "EeCnee1@netscape.net"
23
- gem.authors = ["Ludwig Bratke"]
22
+ gem.email = "EeCnee1@netscape.net"
23
+ gem.authors = ["Ludwig Bratke"]
24
24
  # dependencies defined in Gemfile
25
25
  end
26
26
  Jeweler::RubygemsDotOrgTasks.new
@@ -44,10 +44,10 @@ task :default => :test
44
44
 
45
45
  require 'rake/rdoctask'
46
46
  Rake::RDocTask.new do |rdoc|
47
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
47
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
48
48
 
49
49
  rdoc.rdoc_dir = 'rdoc'
50
- rdoc.title = "rocrad #{version}"
50
+ rdoc.title = "rocrad #{version}"
51
51
  rdoc.rdoc_files.include('README*')
52
52
  rdoc.rdoc_files.include('lib/**/*.rb')
53
53
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.2
data/lib/rocrad/errors.rb CHANGED
@@ -1,6 +1,10 @@
1
1
  class Rocrad
2
- class ConversionError < StandardError ;end
3
- class ImageNotSelectedError < StandardError ;end
4
- class TempFilesNotRemovedError < StandardError ;end
5
- class UnsupportedFileTypeError < StandardError ;end
2
+ class ConversionError < StandardError;
3
+ end
4
+ class ImageNotSelectedError < StandardError;
5
+ end
6
+ class TempFilesNotRemovedError < StandardError;
7
+ end
8
+ class UnsupportedFileTypeError < StandardError;
9
+ end
6
10
  end
data/lib/rocrad.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  require "pathname"
2
2
  require "tempfile"
3
+ require "uuid"
4
+ require "net/http"
3
5
 
4
6
  require "rocrad/errors"
5
7
 
@@ -7,17 +9,68 @@ class Rocrad
7
9
 
8
10
  attr_accessor :options
9
11
 
12
+
10
13
  def initialize(src="", options={})
11
- @uid = options.delete(:uid) || nil
12
- @source = Pathname.new src
14
+ @uid = UUID.new
15
+ @source = get_source src
13
16
  @clear_console_output = options.delete(:clear_console_output)
14
17
  @clear_console_output = true if @clear_console_output.nil?
15
18
  @value = ""
16
19
  end
17
20
 
18
- def source= src
21
+ def source= src=""
19
22
  @value = ""
20
- @source = Pathname.new src
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
30
+ end
31
+
32
+ #Output value
33
+ def to_s
34
+ return @value if @value != ""
35
+ if @source.instance_of? Pathname and @source.file?
36
+ convert
37
+ @value
38
+ elsif @source.instance_of? URI::HTTP
39
+ convert_via_http
40
+ @value
41
+ else
42
+ raise ImageNotSelectedError
43
+ end
44
+ end
45
+
46
+ #Remove spaces and break-lines
47
+ def to_s_without_spaces
48
+ to_s.gsub(" ", "").gsub("\n", "").gsub("\r", "")
49
+ end
50
+
51
+ private
52
+
53
+ def convert_via_http
54
+ tmp_path = Pathname.new(Dir::tmpdir).join("#{@uid.generate}_#{Pathname.new(@source.request_uri).basename}")
55
+ tmp_file = File.new(tmp_path.to_s, File::CREAT|File::TRUNC|File::RDWR, 0644)
56
+ tmp_file.write(Net::HTTP.get(@source))
57
+ tmp_file.close
58
+ uri = @source
59
+ @source = tmp_path
60
+ convert
61
+ @source = uri
62
+ remove_file([tmp_path])
63
+ end
64
+
65
+ def get_source(src)
66
+ case (uri = URI.parse(src)).class.to_s
67
+ when "URI::HTTP" then
68
+ uri
69
+ when "URI::Generic" then
70
+ Pathname.new(uri.path)
71
+ else
72
+ Pathname.new(src)
73
+ end
21
74
  end
22
75
 
23
76
  #Remove files
@@ -34,16 +87,10 @@ class Rocrad
34
87
  raise Rocrad::TempFilesNotRemovedError
35
88
  end
36
89
 
37
- def generate_uid
38
- @uid = rand.to_s[2, 10] if @uid.nil?
39
- @uid
40
- end
41
-
42
90
  #Convert image to pnm
43
91
  def image_to_pnm
44
- generate_uid
45
- tmp_file = Pathname.new(Dir::tmpdir).join("#{@uid}_#{@source.sub(@source.extname,".pnm").basename}")
46
- redirection = "#{@source} > #{tmp_file} #{clear_console_output}"
92
+ pnm_image = Pathname.new(Dir::tmpdir).join("#{@uid.generate}_#{@source.sub(@source.extname, ".pnm").basename}")
93
+ redirection = "#{@source} > #{pnm_image} #{clear_console_output}"
47
94
  case @source.extname
48
95
  when ".jpg" then
49
96
  `djpeg -greyscale -pnm #{redirection}`
@@ -56,44 +103,20 @@ class Rocrad
56
103
  else
57
104
  raise UnsupportedFileTypeError
58
105
  end
59
- tmp_file
106
+ pnm_image
60
107
  end
61
108
 
62
109
  #Convert image to string
63
110
  def convert
64
- generate_uid
65
- tmp_file = Pathname.new(Dir::tmpdir).join("#{@uid}_#{@source.sub(@source.extname,".txt").basename}")
66
- tmp_image = image_to_pnm
111
+ txt_file = Pathname.new(Dir::tmpdir).join("#{@uid.generate}_#{@source.sub(@source.extname, ".txt").basename}")
112
+ pnm_image = image_to_pnm
67
113
  begin
68
- `gocr #{tmp_image} -o #{tmp_file} #{clear_console_output}`
69
- @value = File.read(tmp_file)
70
- @uid = nil
71
- remove_file([tmp_image, tmp_file])
114
+ `gocr #{pnm_image} -o #{txt_file} #{clear_console_output}`
115
+ @value = File.read(txt_file)
116
+ remove_file([pnm_image, txt_file])
72
117
  rescue
73
118
  raise ConversionError
74
119
  end
75
120
  end
76
121
 
77
- #TODO: Clear console for MacOS or Windows
78
- def clear_console_output
79
- return "" unless @clear_console_output
80
- "2>/dev/null" if File.exist?("/dev/null") #Linux console clear
81
- end
82
-
83
- #Output value
84
- def to_s
85
- return @value if @value != ""
86
- if @source.file?
87
- convert
88
- @value
89
- else
90
- raise ImageNotSelectedError
91
- end
92
- end
93
-
94
- #Remove spaces and break-lines
95
- def to_s_without_spaces
96
- to_s.gsub(" ", "").gsub("\n", "").gsub("\r", "")
97
- end
98
-
99
122
  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.1"
8
+ s.version = "0.1.2"
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-26}
12
+ s.date = %q{2011-05-27}
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 = [
@@ -48,20 +48,26 @@ Gem::Specification.new do |s|
48
48
  s.specification_version = 3
49
49
 
50
50
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
51
- s.add_runtime_dependency(%q<rake>, ["= 0.8.7"])
51
+ 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"])
52
54
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
53
55
  s.add_development_dependency(%q<jeweler>, ["~> 1.6.0"])
54
56
  s.add_development_dependency(%q<rcov>, [">= 0"])
55
57
  s.add_development_dependency(%q<test-unit>, ["= 2.3.0"])
56
58
  else
57
- s.add_dependency(%q<rake>, ["= 0.8.7"])
59
+ 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"])
58
62
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
59
63
  s.add_dependency(%q<jeweler>, ["~> 1.6.0"])
60
64
  s.add_dependency(%q<rcov>, [">= 0"])
61
65
  s.add_dependency(%q<test-unit>, ["= 2.3.0"])
62
66
  end
63
67
  else
64
- s.add_dependency(%q<rake>, ["= 0.8.7"])
68
+ 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"])
65
71
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
66
72
  s.add_dependency(%q<jeweler>, ["~> 1.6.0"])
67
73
  s.add_dependency(%q<rcov>, [">= 0"])
data/test/helper.rb CHANGED
@@ -8,6 +8,7 @@ rescue Bundler::BundlerError => e
8
8
  exit e.status_code
9
9
  end
10
10
  require 'test/unit'
11
+ require 'mocha'
11
12
 
12
13
  $LOAD_PATH.unshift(File.dirname(__FILE__))
13
14
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
data/test/test_rocrad.rb CHANGED
@@ -9,6 +9,20 @@ class TestRocrad < Test::Unit::TestCase
9
9
  def setup
10
10
  @path = Pathname.new(__FILE__.gsub("test_rocrad.rb", "")).expand_path
11
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
14
+ f.close
15
+ end
16
+
17
+ def test_convert_via_http
18
+ 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
20
+ end
21
+
22
+ def test_convert_via_http_raise_exception
23
+ assert_raise Errno::ECONNREFUSED do
24
+ Rocrad.new("http://localhost:3000/uploads/picture/data/4dd21bfd828bf81bdd00000d/nzp_img_17_4_2011_8_55_29.jpg").to_s_without_spaces
25
+ end
12
26
  end
13
27
 
14
28
  def test_be_instantiable
@@ -40,14 +54,17 @@ class TestRocrad < Test::Unit::TestCase
40
54
  end
41
55
 
42
56
  def test_translate_images_bmp
57
+ pend
43
58
  assert_equal "ZLA6", Rocrad.new(@path.join("images", "test.bmp").to_s).to_s_without_spaces
44
59
  end
45
60
 
46
61
  def test_translate_mixed_tif
62
+ pend
47
63
  assert_equal "43ZZ", Rocrad.new(@path.join("images", "mixed.tif").to_s).to_s_without_spaces
48
64
  end
49
65
 
50
66
  def test_translate_test1_tif
67
+ pend
51
68
  assert_equal "V2V4", Rocrad.new(@path.join("images", "test1.tif").to_s).to_s_without_spaces
52
69
  end
53
70
 
@@ -59,7 +76,8 @@ class TestRocrad < Test::Unit::TestCase
59
76
  end
60
77
 
61
78
  def test_unique_uid
62
- assert_not_equal Rocrad.new(@image_jpg).generate_uid, Rocrad.new(@image_jpg).generate_uid
79
+ assert_not_equal Rocrad.new(@image_jpg).instance_variable_get(:@uid).generate,
80
+ Rocrad.new(@image_jpg).instance_variable_get(:@uid).generate
63
81
  end
64
82
 
65
83
  def test_generate_a_unique id
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: 25
4
+ hash: 31
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 1
10
- version: 0.1.1
9
+ - 2
10
+ version: 0.1.2
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-26 00:00:00 +02:00
18
+ date: 2011-05-27 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -23,20 +23,52 @@ dependencies:
23
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
24
  none: false
25
25
  requirements:
26
- - - "="
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ hash: 7
29
+ segments:
30
+ - 2
31
+ - 3
32
+ - 2
33
+ version: 2.3.2
34
+ name: uuid
35
+ version_requirements: *id001
36
+ prerelease: false
37
+ - !ruby/object:Gem::Dependency
38
+ type: :development
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ~>
27
43
  - !ruby/object:Gem::Version
28
- hash: 49
44
+ hash: 59
45
+ segments:
46
+ - 0
47
+ - 9
48
+ - 0
49
+ version: 0.9.0
50
+ name: mocha
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: 63
29
61
  segments:
30
62
  - 0
31
63
  - 8
32
- - 7
33
- version: 0.8.7
64
+ - 0
65
+ version: 0.8.0
34
66
  name: rake
35
- version_requirements: *id001
67
+ version_requirements: *id003
36
68
  prerelease: false
37
69
  - !ruby/object:Gem::Dependency
38
70
  type: :development
39
- requirement: &id002 !ruby/object:Gem::Requirement
71
+ requirement: &id004 !ruby/object:Gem::Requirement
40
72
  none: false
41
73
  requirements:
42
74
  - - ~>
@@ -48,11 +80,11 @@ dependencies:
48
80
  - 0
49
81
  version: 1.0.0
50
82
  name: bundler
51
- version_requirements: *id002
83
+ version_requirements: *id004
52
84
  prerelease: false
53
85
  - !ruby/object:Gem::Dependency
54
86
  type: :development
55
- requirement: &id003 !ruby/object:Gem::Requirement
87
+ requirement: &id005 !ruby/object:Gem::Requirement
56
88
  none: false
57
89
  requirements:
58
90
  - - ~>
@@ -64,11 +96,11 @@ dependencies:
64
96
  - 0
65
97
  version: 1.6.0
66
98
  name: jeweler
67
- version_requirements: *id003
99
+ version_requirements: *id005
68
100
  prerelease: false
69
101
  - !ruby/object:Gem::Dependency
70
102
  type: :development
71
- requirement: &id004 !ruby/object:Gem::Requirement
103
+ requirement: &id006 !ruby/object:Gem::Requirement
72
104
  none: false
73
105
  requirements:
74
106
  - - ">="
@@ -78,11 +110,11 @@ dependencies:
78
110
  - 0
79
111
  version: "0"
80
112
  name: rcov
81
- version_requirements: *id004
113
+ version_requirements: *id006
82
114
  prerelease: false
83
115
  - !ruby/object:Gem::Dependency
84
116
  type: :development
85
- requirement: &id005 !ruby/object:Gem::Requirement
117
+ requirement: &id007 !ruby/object:Gem::Requirement
86
118
  none: false
87
119
  requirements:
88
120
  - - "="
@@ -94,7 +126,7 @@ dependencies:
94
126
  - 0
95
127
  version: 2.3.0
96
128
  name: test-unit
97
- version_requirements: *id005
129
+ version_requirements: *id007
98
130
  prerelease: false
99
131
  description: Ruby library for working with Ocrad - The GNU OCR
100
132
  email: EeCnee1@netscape.net