jpegoptim 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -3,7 +3,7 @@ source "http://rubygems.org"
3
3
  # Example:
4
4
  # gem "depq", ">= 0.4"
5
5
  # gem "hash-utils", ">= 0.9.0"
6
- gem "pipe-run", ">= 0.1.0"
6
+ gem "pipe-run", ">= 0.2.0"
7
7
  gem "command-builder", ">= 0.1.0"
8
8
  gem "unix-whereis", ">= 0.1.0"
9
9
 
data/Gemfile.lock CHANGED
@@ -9,7 +9,7 @@ GEM
9
9
  bundler (~> 1.0.0)
10
10
  git (>= 1.2.5)
11
11
  rake
12
- pipe-run (0.1.0)
12
+ pipe-run (0.2.0)
13
13
  rake (0.8.7)
14
14
  unix-whereis (0.1.0)
15
15
  command-builder (>= 0.1.0)
@@ -23,5 +23,5 @@ DEPENDENCIES
23
23
  bundler (~> 1.0.0)
24
24
  command-builder (>= 0.1.0)
25
25
  jeweler (~> 1.5.2)
26
- pipe-run (>= 0.1.0)
26
+ pipe-run (>= 0.2.0)
27
27
  unix-whereis (>= 0.1.0)
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  Jpegoptim
2
2
  =========
3
3
 
4
- **Jpegoptim** provides Ruby interface to the `jpegoptim` tool.
4
+ **Jpegoptim** provides Ruby interface to the [`jpegoptim`][1] tool.
5
5
  Some examples follow: (for details, see module documentation)
6
6
 
7
7
  require "jpegoptim"
@@ -10,10 +10,13 @@ Some examples follow: (for details, see module documentation)
10
10
 
11
11
  Jpegoptim.optimize(["foo.jpg", "empty.jpg", "nonexist.jpg"], { :preserve => true, :strip => :all })
12
12
 
13
- # will run 'jpegoptim --strip-all --preserve foo.jpg bar.jpgug empty.jpg'
13
+ # will run 'jpegoptim --strip-all --preserve foo.jpg bar.jpg empty.jpg'
14
14
  # and then will return for example:
15
15
  # '#<struct Jpegoptim::Result succeed={"foo.jpg => -22.1}}, errors=[["empty.jpg", "ERROR"]]>
16
16
 
17
+ It can be also run asynchronously by non-blocking way (with [`eventmachine`][4])
18
+ simply by giving block with one argument to `#optimize`. See documentation.
19
+
17
20
  ### Call Result
18
21
 
19
22
  Result contains members `:success` and `:errors`. Sucess member contains
@@ -57,5 +60,7 @@ Copyright
57
60
  Copyright &copy; 2011 [Martin Kozák][3]. See `LICENSE.txt` for
58
61
  further details.
59
62
 
63
+ [1]: http://www.kokkonen.net/tjko/projects.html
60
64
  [2]: http://github.com/martinkozak/qrpc/issues
61
65
  [3]: http://www.martinkozak.net/
66
+ [4]: http://rubyeventmachine.com/
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
data/lib/jpegoptim.rb CHANGED
@@ -7,7 +7,7 @@ require "unix/whereis"
7
7
 
8
8
  ##
9
9
  # The +jpegoptim+ tool command frontend.
10
- # @see
10
+ # @see http://www.kokkonen.net/tjko/projects.html
11
11
  #
12
12
 
13
13
  module Jpegoptim
@@ -67,8 +67,12 @@ module Jpegoptim
67
67
  # responsible for optimizing files on the right place. Use Ruby
68
68
  # methods for it.
69
69
  #
70
+ # If block is given, runs +jpegoptim+ asynchronously. In that case,
71
+ # +em-pipe-run+ file must be already required.
72
+ #
70
73
  # @param [String, Array] paths file path or array of paths for optimizing
71
74
  # @param [Hash] options options
75
+ # @param [Proc] block block for giving back the results
72
76
  # @option options [Boolean, Symbol] :strip says what informations strip, see +jpegoptim+ documentation, default is +:all+
73
77
  # @option options [Boolean] :preserve turns on preserving the timestamps
74
78
  # @option options [Integer] :max set maximum image quality factor
@@ -76,7 +80,7 @@ module Jpegoptim
76
80
  # @return [Struct] see {Result}
77
81
  #
78
82
 
79
- def self.optimize(paths, options = { })
83
+ def self.optimize(paths, options = { }, &block)
80
84
 
81
85
  # Command
82
86
  cmd = CommandBuilder::new(self::COMMAND)
@@ -111,13 +115,24 @@ module Jpegoptim
111
115
  if options[:debug] == true
112
116
  STDERR.write cmd.to_s + "\n"
113
117
  end
114
-
115
- output = Pipe.run(cmd.to_s)
116
-
117
- # Parses output
118
- succeed, errors = __parse_output(output)
119
- return self::Result::new(succeed, errors)
120
-
118
+
119
+ cmd = cmd.to_s
120
+
121
+ # Blocking
122
+ if block.nil?
123
+ output = Pipe.run(cmd)
124
+
125
+ # Parses output
126
+ succeed, errors = __parse_output(output)
127
+ return self::Result::new(succeed, errors)
128
+
129
+ # Non-blocking
130
+ else
131
+ Pipe.run(cmd) do |output|
132
+ succeed, errors = __parse_output(output)
133
+ block.call(self::Result::new(succeed, errors))
134
+ end
135
+ end
121
136
  end
122
137
 
123
138
 
data/test CHANGED
@@ -3,6 +3,13 @@
3
3
 
4
4
  $:.push("./lib")
5
5
  require "jpegoptim"
6
+ require "em-pipe-run"
6
7
 
7
- puts Jpegoptim.available?.inspect
8
- puts Jpegoptim.optimize(["foo.jpg", "bar.jpg", "empty.jpg"], { :preserve => true, :strip => :all, :debug => true })
8
+ EM::run do
9
+ puts Jpegoptim.available?.inspect
10
+ Jpegoptim.optimize(["x.jpg"], { :preserve => true, :strip => :all, :debug => true }) do |results|
11
+ puts results.inspect
12
+ end
13
+
14
+ puts "something"
15
+ end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: jpegoptim
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.0
5
+ version: 0.2.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - "Martin Koz\xC3\xA1k"
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-02-21 00:00:00 +01:00
13
+ date: 2011-02-22 00:00:00 +01:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 0.1.0
23
+ version: 0.2.0
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: *id001
@@ -85,7 +85,6 @@ files:
85
85
  - README.md
86
86
  - Rakefile
87
87
  - VERSION
88
- - jpegoptim.gemspec
89
88
  - lib/jpegoptim.rb
90
89
  - test
91
90
  has_rdoc: true
@@ -102,7 +101,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
102
101
  requirements:
103
102
  - - ">="
104
103
  - !ruby/object:Gem::Version
105
- hash: -392424592510368295
104
+ hash: -56402776733951615
106
105
  segments:
107
106
  - 0
108
107
  version: "0"
data/jpegoptim.gemspec DELETED
@@ -1,60 +0,0 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{jpegoptim}
8
- s.version = "0.1.0"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Martin Kozák"]
12
- s.date = %q{2011-02-21}
13
- s.email = %q{martinkozak@martinkozak.net}
14
- s.extra_rdoc_files = [
15
- "LICENSE.txt",
16
- "README.md"
17
- ]
18
- s.files = [
19
- ".document",
20
- "Gemfile",
21
- "Gemfile.lock",
22
- "LICENSE.txt",
23
- "README.md",
24
- "Rakefile",
25
- "VERSION",
26
- "jpegoptim.gemspec",
27
- "lib/jpegoptim.rb",
28
- "test"
29
- ]
30
- s.homepage = %q{https://github.com/martinkozak/jpegoptim}
31
- s.licenses = ["MIT"]
32
- s.require_paths = ["lib"]
33
- s.rubygems_version = %q{1.5.2}
34
- s.summary = %q{Ruby interface to 'jpegoptim' tool.}
35
-
36
- if s.respond_to? :specification_version then
37
- s.specification_version = 3
38
-
39
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
40
- s.add_runtime_dependency(%q<pipe-run>, [">= 0.1.0"])
41
- s.add_runtime_dependency(%q<command-builder>, [">= 0.1.0"])
42
- s.add_runtime_dependency(%q<unix-whereis>, [">= 0.1.0"])
43
- s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
44
- s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
45
- else
46
- s.add_dependency(%q<pipe-run>, [">= 0.1.0"])
47
- s.add_dependency(%q<command-builder>, [">= 0.1.0"])
48
- s.add_dependency(%q<unix-whereis>, [">= 0.1.0"])
49
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
50
- s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
51
- end
52
- else
53
- s.add_dependency(%q<pipe-run>, [">= 0.1.0"])
54
- s.add_dependency(%q<command-builder>, [">= 0.1.0"])
55
- s.add_dependency(%q<unix-whereis>, [">= 0.1.0"])
56
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
57
- s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
58
- end
59
- end
60
-