cal-ios-image-proc 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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e02ce76ebd001cab4b2b6a12e566e55102e12e60
4
+ data.tar.gz: 0a654a7bfc6e50410918d8484f7346a48234ebc5
5
+ SHA512:
6
+ metadata.gz: 12813dcdb8a13c62e8ade515f37b9969a2fc600c071b134651a520190a1f906a796e74e9ac608672fc3e8d7a8bf9c03afbf69d57346e05e33aea62675b43a327
7
+ data.tar.gz: a0038003d9ddc7948f220a595c93e02e384237444d51526de77012d5fb33dd5c4da32a293e05335f5b56d0233aef68975d545516c7347b7d104bff31703c544c
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.2.4
5
+ before_install: gem install bundler -v 1.13.1
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'cucumber', '~>1.3'
4
+ gem 'calabash-cucumber', '~>0.18.0'
5
+ gem 'run_loop', '~>2.0'
6
+ gem 'ruby-opencv'
7
+ gem 'rspec'
data/LICENSE ADDED
@@ -0,0 +1,203 @@
1
+ Eclipse Public License - v 1.0
2
+
3
+ THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
4
+ LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
5
+ CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
6
+
7
+ 1. DEFINITIONS
8
+
9
+ "Contribution" means:
10
+
11
+ a) in the case of the initial Contributor, the initial code and documentation
12
+ distributed under this Agreement, and
13
+ b) in the case of each subsequent Contributor:
14
+ i) changes to the Program, and
15
+ ii) additions to the Program;
16
+
17
+ where such changes and/or additions to the Program originate from and are
18
+ distributed by that particular Contributor. A Contribution 'originates'
19
+ from a Contributor if it was added to the Program by such Contributor
20
+ itself or anyone acting on such Contributor's behalf. Contributions do not
21
+ include additions to the Program which: (i) are separate modules of
22
+ software distributed in conjunction with the Program under their own
23
+ license agreement, and (ii) are not derivative works of the Program.
24
+
25
+ "Contributor" means any person or entity that distributes the Program.
26
+
27
+ "Licensed Patents" mean patent claims licensable by a Contributor which are
28
+ necessarily infringed by the use or sale of its Contribution alone or when
29
+ combined with the Program.
30
+
31
+ "Program" means the Contributions distributed in accordance with this
32
+ Agreement.
33
+
34
+ "Recipient" means anyone who receives the Program under this Agreement,
35
+ including all Contributors.
36
+
37
+ 2. GRANT OF RIGHTS
38
+ a) Subject to the terms of this Agreement, each Contributor hereby grants
39
+ Recipient a non-exclusive, worldwide, royalty-free copyright license to
40
+ reproduce, prepare derivative works of, publicly display, publicly
41
+ perform, distribute and sublicense the Contribution of such Contributor,
42
+ if any, and such derivative works, in source code and object code form.
43
+ b) Subject to the terms of this Agreement, each Contributor hereby grants
44
+ Recipient a non-exclusive, worldwide, royalty-free patent license under
45
+ Licensed Patents to make, use, sell, offer to sell, import and otherwise
46
+ transfer the Contribution of such Contributor, if any, in source code and
47
+ object code form. This patent license shall apply to the combination of
48
+ the Contribution and the Program if, at the time the Contribution is
49
+ added by the Contributor, such addition of the Contribution causes such
50
+ combination to be covered by the Licensed Patents. The patent license
51
+ shall not apply to any other combinations which include the Contribution.
52
+ No hardware per se is licensed hereunder.
53
+ c) Recipient understands that although each Contributor grants the licenses
54
+ to its Contributions set forth herein, no assurances are provided by any
55
+ Contributor that the Program does not infringe the patent or other
56
+ intellectual property rights of any other entity. Each Contributor
57
+ disclaims any liability to Recipient for claims brought by any other
58
+ entity based on infringement of intellectual property rights or
59
+ otherwise. As a condition to exercising the rights and licenses granted
60
+ hereunder, each Recipient hereby assumes sole responsibility to secure
61
+ any other intellectual property rights needed, if any. For example, if a
62
+ third party patent license is required to allow Recipient to distribute
63
+ the Program, it is Recipient's responsibility to acquire that license
64
+ before distributing the Program.
65
+ d) Each Contributor represents that to its knowledge it has sufficient
66
+ copyright rights in its Contribution, if any, to grant the copyright
67
+ license set forth in this Agreement.
68
+
69
+ 3. REQUIREMENTS
70
+
71
+ A Contributor may choose to distribute the Program in object code form under
72
+ its own license agreement, provided that:
73
+
74
+ a) it complies with the terms and conditions of this Agreement; and
75
+ b) its license agreement:
76
+ i) effectively disclaims on behalf of all Contributors all warranties
77
+ and conditions, express and implied, including warranties or
78
+ conditions of title and non-infringement, and implied warranties or
79
+ conditions of merchantability and fitness for a particular purpose;
80
+ ii) effectively excludes on behalf of all Contributors all liability for
81
+ damages, including direct, indirect, special, incidental and
82
+ consequential damages, such as lost profits;
83
+ iii) states that any provisions which differ from this Agreement are
84
+ offered by that Contributor alone and not by any other party; and
85
+ iv) states that source code for the Program is available from such
86
+ Contributor, and informs licensees how to obtain it in a reasonable
87
+ manner on or through a medium customarily used for software exchange.
88
+
89
+ When the Program is made available in source code form:
90
+
91
+ a) it must be made available under this Agreement; and
92
+ b) a copy of this Agreement must be included with each copy of the Program.
93
+ Contributors may not remove or alter any copyright notices contained
94
+ within the Program.
95
+
96
+ Each Contributor must identify itself as the originator of its Contribution,
97
+ if
98
+ any, in a manner that reasonably allows subsequent Recipients to identify the
99
+ originator of the Contribution.
100
+
101
+ 4. COMMERCIAL DISTRIBUTION
102
+
103
+ Commercial distributors of software may accept certain responsibilities with
104
+ respect to end users, business partners and the like. While this license is
105
+ intended to facilitate the commercial use of the Program, the Contributor who
106
+ includes the Program in a commercial product offering should do so in a manner
107
+ which does not create potential liability for other Contributors. Therefore,
108
+ if a Contributor includes the Program in a commercial product offering, such
109
+ Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
110
+ every other Contributor ("Indemnified Contributor") against any losses,
111
+ damages and costs (collectively "Losses") arising from claims, lawsuits and
112
+ other legal actions brought by a third party against the Indemnified
113
+ Contributor to the extent caused by the acts or omissions of such Commercial
114
+ Contributor in connection with its distribution of the Program in a commercial
115
+ product offering. The obligations in this section do not apply to any claims
116
+ or Losses relating to any actual or alleged intellectual property
117
+ infringement. In order to qualify, an Indemnified Contributor must:
118
+ a) promptly notify the Commercial Contributor in writing of such claim, and
119
+ b) allow the Commercial Contributor to control, and cooperate with the
120
+ Commercial Contributor in, the defense and any related settlement
121
+ negotiations. The Indemnified Contributor may participate in any such claim at
122
+ its own expense.
123
+
124
+ For example, a Contributor might include the Program in a commercial product
125
+ offering, Product X. That Contributor is then a Commercial Contributor. If
126
+ that Commercial Contributor then makes performance claims, or offers
127
+ warranties related to Product X, those performance claims and warranties are
128
+ such Commercial Contributor's responsibility alone. Under this section, the
129
+ Commercial Contributor would have to defend claims against the other
130
+ Contributors related to those performance claims and warranties, and if a
131
+ court requires any other Contributor to pay any damages as a result, the
132
+ Commercial Contributor must pay those damages.
133
+
134
+ 5. NO WARRANTY
135
+
136
+ EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
137
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
138
+ IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
139
+ NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
140
+ Recipient is solely responsible for determining the appropriateness of using
141
+ and distributing the Program and assumes all risks associated with its
142
+ exercise of rights under this Agreement , including but not limited to the
143
+ risks and costs of program errors, compliance with applicable laws, damage to
144
+ or loss of data, programs or equipment, and unavailability or interruption of
145
+ operations.
146
+
147
+ 6. DISCLAIMER OF LIABILITY
148
+
149
+ EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
150
+ CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
151
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION
152
+ LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
153
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
154
+ ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
155
+ EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY
156
+ OF SUCH DAMAGES.
157
+
158
+ 7. GENERAL
159
+
160
+ If any provision of this Agreement is invalid or unenforceable under
161
+ applicable law, it shall not affect the validity or enforceability of the
162
+ remainder of the terms of this Agreement, and without further action by the
163
+ parties hereto, such provision shall be reformed to the minimum extent
164
+ necessary to make such provision valid and enforceable.
165
+
166
+ If Recipient institutes patent litigation against any entity (including a
167
+ cross-claim or counterclaim in a lawsuit) alleging that the Program itself
168
+ (excluding combinations of the Program with other software or hardware)
169
+ infringes such Recipient's patent(s), then such Recipient's rights granted
170
+ under Section 2(b) shall terminate as of the date such litigation is filed.
171
+
172
+ All Recipient's rights under this Agreement shall terminate if it fails to
173
+ comply with any of the material terms or conditions of this Agreement and does
174
+ not cure such failure in a reasonable period of time after becoming aware of
175
+ such noncompliance. If all Recipient's rights under this Agreement terminate,
176
+ Recipient agrees to cease use and distribution of the Program as soon as
177
+ reasonably practicable. However, Recipient's obligations under this Agreement
178
+ and any licenses granted by Recipient relating to the Program shall continue
179
+ and survive.
180
+
181
+ Everyone is permitted to copy and distribute copies of this Agreement, but in
182
+ order to avoid inconsistency the Agreement is copyrighted and may only be
183
+ modified in the following manner. The Agreement Steward reserves the right to
184
+ publish new versions (including revisions) of this Agreement from time to
185
+ time. No one other than the Agreement Steward has the right to modify this
186
+ Agreement. The Eclipse Foundation is the initial Agreement Steward. The
187
+ Eclipse Foundation may assign the responsibility to serve as the Agreement
188
+ Steward to a suitable separate entity. Each new version of the Agreement will
189
+ be given a distinguishing version number. The Program (including
190
+ Contributions) may always be distributed subject to the version of the
191
+ Agreement under which it was received. In addition, after a new version of the
192
+ Agreement is published, Contributor may elect to distribute the Program
193
+ (including its Contributions) under the new version. Except as expressly
194
+ stated in Sections 2(a) and 2(b) above, Recipient receives no rights or
195
+ licenses to the intellectual property of any Contributor under this Agreement,
196
+ whether expressly, by implication, estoppel or otherwise. All rights in the
197
+ Program not expressly granted under this Agreement are reserved.
198
+
199
+ This Agreement is governed by the laws of the State of New York and the
200
+ intellectual property laws of the United States of America. No party to this
201
+ Agreement will bring a legal action under this Agreement more than one year
202
+ after the cause of action arose. Each party waives its rights to a jury trial in
203
+ any resulting litigation.
data/README.md ADDED
@@ -0,0 +1,32 @@
1
+ # calabash-ios-image-proc
2
+
3
+ Image processing (template matching) which can be used in calabash tests
4
+
5
+ # Installation (OSX only)
6
+
7
+ If you don't have **brew** tool it can be installed with:<br />
8
+ `$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"`
9
+
10
+ After brew installed we can install **Open_CV**:<br />
11
+ `$ brew tap homebrew/science`<br />
12
+ `$ brew info opencv`<br />
13
+ `$ brew install opencv`<br />
14
+ Default installation folder of **OpenCV** is: /usr/local/Cellar/opencv/**_installed_version_**/
15
+
16
+ And since we don't have plans to use python we can ignore warning about it
17
+
18
+ Ruby library for **OpenCV** can be installed with:<br />
19
+ `$ gem install ruby-opencv -- --with-opencv-dir=<path_to_opencvdir>` (from previous step)<br />
20
+ Like if you have: <br />
21
+ `==> Summary /usr/local/Cellar/opencv/2.4.12_2: 261 files, 35.6M` <br />
22
+ command will be: <br />
23
+ `$ gem install ruby-opencv -- --with-opencv-dir="/usr/local/Cellar/opencv/2.4.12_2"` <br />
24
+
25
+ (**Optional**)For Ruby I suggest to use **rbenv**. For installation follow steps described under:
26
+ https://github.com/rbenv/rbenv#homebrew-on-mac-os-x
27
+
28
+ # Screenshot and template
29
+ At least tiff and png formats supported. <br />
30
+ Please be careful with taking screenshot (best option is take it with calabash screenshot method). <br />
31
+ For example: from Xcode for iPhone 6s screenshot resolution is 562×1000 but on calabash it is 750×1334
32
+ as a result **template taken from Xcode screenshot cannot be found in calabash**
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "features/support/lib/match_template"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,36 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "cal-ios-image-proc"
7
+ spec.version = "0.0.2"
8
+ spec.authors = ["Arkadiusz Konopacki"]
9
+ spec.email = ["ark.konopacki@gmail.com"]
10
+
11
+ spec.summary = %q{cal-ios-image-proc}
12
+ spec.description = %q{Simple implementation of image operation with calabash-ios.}
13
+ spec.homepage = "https://github.com/ark-konopacki/calabash-ios-image-proc"
14
+ spec.license = 'MIT'
15
+
16
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
17
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
18
+ if spec.respond_to?(:metadata)
19
+ spec.metadata['allowed_push_host'] = "https://rubygems.org"
20
+ else
21
+ raise "RubyGems 2.0 or newer is required to protect against " \
22
+ "public gem pushes."
23
+ end
24
+
25
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
26
+ f.match(%r{^(test|spec|features)/})
27
+ end
28
+ spec.bindir = "exe"
29
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
30
+ spec.require_paths = ["lib"]
31
+
32
+ spec.add_development_dependency "bundler", "~> 1.13"
33
+ spec.add_development_dependency "ruby-opencv", "~> 0"
34
+ spec.add_development_dependency "rake", "~> 10.0"
35
+ spec.add_development_dependency "rspec", "~> 3.0"
36
+ end
@@ -0,0 +1,112 @@
1
+
2
+ require 'opencv'
3
+ include OpenCV
4
+
5
+ # @param {String} template_file
6
+ # @param {String} screen_file
7
+ # @return {Integer} x coordinates
8
+ # @return {Integer} y coordinates
9
+ def find_template_in_image(template_file, screen_file, show = false)
10
+ template_file_name = File.expand_path(File.dirname(__FILE__) + "/images/#{template_file}")
11
+ template = CvMat.load(template_file_name)
12
+ screen_file_name = File.expand_path(File.dirname(__FILE__) + "/images/#{screen_file}")
13
+ match_image = CvMat.load(screen_file_name)
14
+ result = match_image.match_template(template, :sqdiff_normed)
15
+
16
+ find = result.normalize.min_max_loc
17
+
18
+ # for :sqdiff_normed lower value mean better match
19
+ if find[0] <= 0.00001
20
+
21
+ pt1 = result.min_max_loc[2] # minimum location
22
+ pt2 = CvPoint.new(pt1.x + template.width, pt1.y + template.height)
23
+
24
+ if show
25
+ pt3 = CvPoint.new(pt1.x, pt2.y)
26
+ pt4 = CvPoint.new(pt2.x, pt1.y)
27
+
28
+ match_image.rectangle!(pt1, pt2, :color => CvColor::Red, :thickness => 1)
29
+
30
+ match_image.line!(pt1, pt2, :color => CvColor::Red, :thickness => 1)
31
+
32
+ match_image.line!(pt3, pt4, :color => CvColor::Red, :thickness => 1)
33
+
34
+ window = GUI::Window.new("Display #{template_file} on image") # Create a window for display.
35
+ window.show(match_image) # Show our image inside it.
36
+ sleep 10
37
+ # GUI::wait_key # Wait for a keystroke in the window.
38
+ end
39
+
40
+
41
+ if match_image.width == 750 || match_image.width == 640
42
+ ratio = 2
43
+ elsif match_image.width == 1242
44
+ ratio = 3
45
+ else
46
+ ratio = 1
47
+ end
48
+
49
+ x = (pt1.x + (pt2.x - pt1.x)/ratio)/ratio
50
+ y = (pt1.y + (pt2.y - pt1.y)/ratio)/ratio
51
+
52
+ # puts "x is :#{x}"
53
+ # puts "y is :#{y}"
54
+ return x,y
55
+ end
56
+
57
+ return nil,nil
58
+
59
+ end
60
+
61
+
62
+ # @param {String} template_file
63
+ # @param {String} screen_file
64
+ # @param {Integer} match_level
65
+ # @return {Boolean}
66
+ def find_template(template_file, screen_file, match_level)
67
+ template_file_name = File.expand_path(File.dirname(__FILE__) + "/images/#{template_file}")
68
+ template = CvMat.load(template_file_name)
69
+
70
+ screen_file_name = File.expand_path(File.dirname(__FILE__) + "/images/#{screen_file}")
71
+ match_image = CvMat.load(screen_file_name)
72
+ result = match_image.match_template(template, :sqdiff_normed)
73
+
74
+ find = result.normalize.min_max_loc
75
+ if find[0] <= match_level
76
+ true
77
+ end
78
+ end
79
+
80
+ # @param {String} file_name
81
+ def save_screen(file_name = nil)
82
+ res = http({:method => :get, :path => 'screenshot'})
83
+ if file_name.nil? || file_name == ''
84
+ current_screen = 'current_screen.png'
85
+ else
86
+ current_screen = file_name
87
+ end
88
+ File.open(File.expand_path(File.dirname(__FILE__) + "/images/#{current_screen}"), 'wb') { |f| f.write res }
89
+ end
90
+
91
+ # @param {Integer} x
92
+ # @param {Integer} y
93
+ def touch_by_x_y(x,y)
94
+ uia_handle_command(:tapOffset, {:x => x, :y => y})
95
+ end
96
+
97
+ # @param {String} image
98
+ def touch_image(template_file)
99
+ save_screen
100
+ x,y = find_template_in_image(template_file, 'current_screen.png')
101
+ if x != nil
102
+ touch_by_x_y(x,y)
103
+ true
104
+ else
105
+ false
106
+ end
107
+ end
108
+
109
+ def should_see_image(template_file)
110
+ save_screen
111
+ find_template(template_file, 'current_screen.png', 0.00001)
112
+ end
metadata ADDED
@@ -0,0 +1,113 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cal-ios-image-proc
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Arkadiusz Konopacki
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-10-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.13'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.13'
27
+ - !ruby/object:Gem::Dependency
28
+ name: ruby-opencv
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.0'
69
+ description: Simple implementation of image operation with calabash-ios.
70
+ email:
71
+ - ark.konopacki@gmail.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - ".gitignore"
77
+ - ".rspec"
78
+ - ".travis.yml"
79
+ - Gemfile
80
+ - LICENSE
81
+ - README.md
82
+ - Rakefile
83
+ - bin/console
84
+ - bin/setup
85
+ - calabash-ios-image-proc.gemspec
86
+ - lib/match_template.rb
87
+ homepage: https://github.com/ark-konopacki/calabash-ios-image-proc
88
+ licenses:
89
+ - MIT
90
+ metadata:
91
+ allowed_push_host: https://rubygems.org
92
+ post_install_message:
93
+ rdoc_options: []
94
+ require_paths:
95
+ - lib
96
+ required_ruby_version: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ required_rubygems_version: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ requirements: []
107
+ rubyforge_project:
108
+ rubygems_version: 2.4.5.1
109
+ signing_key:
110
+ specification_version: 4
111
+ summary: cal-ios-image-proc
112
+ test_files: []
113
+ has_rdoc: