yasuri 2.0.11 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -12,7 +12,7 @@ describe 'Yasuri' do
12
12
  describe '::StructNode' do
13
13
  before do
14
14
  @agent = Mechanize.new
15
- @page = @agent.get(uri + "/structual_text.html")
15
+ @page = @agent.get(uri + "/struct/structual_text.html")
16
16
 
17
17
  @table_1996 = [
18
18
  { "title" => "The Perfect Insider",
@@ -132,4 +132,45 @@ describe 'Yasuri' do
132
132
  end
133
133
 
134
134
  end
135
+
136
+ describe '::StructNode::Links' do
137
+ before do
138
+ @agent = Mechanize.new
139
+ @page = @agent.get(uri + "/struct/structual_links.html")
140
+
141
+ @table = [
142
+ { "title" => "Child01,02",
143
+ "child" => [{"p" => "Child 01 page."}, {"p" => "Child 02 page."}] },
144
+
145
+ { "title" => "Child01,02,03",
146
+ "child" => [{"p" => "Child 01 page."}, {"p" => "Child 02 page."}, {"p" => "Child 03 page."}]}
147
+ ]
148
+ end
149
+
150
+ it 'return child node in links inside struct' do
151
+ node = Yasuri::StructNode.new('/html/body/table/tr', "table", [
152
+ Yasuri::TextNode.new('./td[1]', "title"),
153
+ Yasuri::LinksNode.new('./td/a', "child", [
154
+ Yasuri::TextNode.new('/html/body/p', "p"),
155
+ ])
156
+ ])
157
+ expected = @table
158
+ actual = node.inject(@agent, @page)
159
+ expect(actual).to match expected
160
+ end
161
+ end # descrive
162
+
163
+ describe '::StructNode::Pages' do
164
+ before do
165
+ @agent = Mechanize.new
166
+ @page = @agent.get(uri + "/struct/structual_text.html") #dummy
167
+ end
168
+
169
+ it 'not supported' do
170
+ node = Yasuri::StructNode.new('/html/body/table[1]/tr', "table", [
171
+ Yasuri::PaginateNode.new("/html/body/nav/span/a[@class='next']", "pages", [])
172
+ ])
173
+ expect{ node.inject(@agent, @page) }.to raise_error(NotImplementedError, "PagenateNode inside StructNode, Not Supported")
174
+ end
175
+ end
135
176
  end
data/yasuri.gemspec CHANGED
@@ -14,12 +14,13 @@ Gem::Specification.new do |spec|
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
17
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
18
+ spec.bindir = "exe"
18
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
20
  spec.require_paths = ["lib"]
20
21
 
21
- spec.add_development_dependency "bundler", "~> 1.7"
22
- spec.add_development_dependency "rake", "~> 10.0"
22
+ spec.add_development_dependency "bundler"
23
+ spec.add_development_dependency "rake"
23
24
  spec.add_development_dependency "rspec"
24
25
  spec.add_development_dependency "fuubar"
25
26
  spec.add_development_dependency "glint"
@@ -28,4 +29,5 @@ Gem::Specification.new do |spec|
28
29
  spec.add_development_dependency "codeclimate-test-reporter"
29
30
 
30
31
  spec.add_dependency "mechanize"
32
+ spec.add_dependency "thor"
31
33
  end
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yasuri
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.11
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - TAC
8
- autorequire:
9
- bindir: bin
8
+ autorequire:
9
+ bindir: exe
10
10
  cert_chain: []
11
- date: 2016-11-14 00:00:00.000000000 Z
11
+ date: 2021-03-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.7'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.7'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -136,16 +136,33 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: thor
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
139
153
  description: Yasuri is an easy web-scraping library for supporting "Mechanize".
140
154
  email:
141
155
  - tac@tac42.net
142
- executables: []
156
+ executables:
157
+ - yasuri
143
158
  extensions: []
144
159
  extra_rdoc_files: []
145
160
  files:
146
161
  - ".coveralls.yml"
162
+ - ".github/workflows/ruby.yml"
147
163
  - ".gitignore"
148
164
  - ".rspec"
165
+ - ".ruby-version"
149
166
  - ".travis.yml"
150
167
  - Gemfile
151
168
  - LICENSE
@@ -154,15 +171,22 @@ files:
154
171
  - USAGE.ja.md
155
172
  - USAGE.md
156
173
  - app.rb
174
+ - exe/yasuri
157
175
  - lib/yasuri.rb
158
176
  - lib/yasuri/version.rb
159
177
  - lib/yasuri/yasuri.rb
178
+ - lib/yasuri/yasuri_cli.rb
160
179
  - lib/yasuri/yasuri_links_node.rb
180
+ - lib/yasuri/yasuri_map_node.rb
161
181
  - lib/yasuri/yasuri_node.rb
162
182
  - lib/yasuri/yasuri_node_generator.rb
163
183
  - lib/yasuri/yasuri_paginate_node.rb
164
184
  - lib/yasuri/yasuri_struct_node.rb
165
185
  - lib/yasuri/yasuri_text_node.rb
186
+ - spec/cli_resources/tree.json
187
+ - spec/cli_resources/tree.yml
188
+ - spec/cli_resources/tree_wrong.json
189
+ - spec/cli_resources/tree_wrong.yml
166
190
  - spec/htdocs/child01.html
167
191
  - spec/htdocs/child01_sub.html
168
192
  - spec/htdocs/child02.html
@@ -174,10 +198,13 @@ files:
174
198
  - spec/htdocs/pagination/page02.html
175
199
  - spec/htdocs/pagination/page03.html
176
200
  - spec/htdocs/pagination/page04.html
177
- - spec/htdocs/structual_text.html
201
+ - spec/htdocs/struct/structual_links.html
202
+ - spec/htdocs/struct/structual_text.html
178
203
  - spec/servers/httpserver.rb
179
204
  - spec/spec_helper.rb
205
+ - spec/yasuri_cli_spec.rb
180
206
  - spec/yasuri_links_node_spec.rb
207
+ - spec/yasuri_map_spec.rb
181
208
  - spec/yasuri_node_spec.rb
182
209
  - spec/yasuri_paginate_node_spec.rb
183
210
  - spec/yasuri_spec.rb
@@ -188,7 +215,7 @@ homepage: https://github.com/tac0x2a/yasuri
188
215
  licenses:
189
216
  - MIT
190
217
  metadata: {}
191
- post_install_message:
218
+ post_install_message:
192
219
  rdoc_options: []
193
220
  require_paths:
194
221
  - lib
@@ -203,12 +230,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
203
230
  - !ruby/object:Gem::Version
204
231
  version: '0'
205
232
  requirements: []
206
- rubyforge_project:
207
- rubygems_version: 2.4.5
208
- signing_key:
233
+ rubygems_version: 3.2.3
234
+ signing_key:
209
235
  specification_version: 4
210
236
  summary: Yasuri is easy scraping library.
211
237
  test_files:
238
+ - spec/cli_resources/tree.json
239
+ - spec/cli_resources/tree.yml
240
+ - spec/cli_resources/tree_wrong.json
241
+ - spec/cli_resources/tree_wrong.yml
212
242
  - spec/htdocs/child01.html
213
243
  - spec/htdocs/child01_sub.html
214
244
  - spec/htdocs/child02.html
@@ -220,10 +250,13 @@ test_files:
220
250
  - spec/htdocs/pagination/page02.html
221
251
  - spec/htdocs/pagination/page03.html
222
252
  - spec/htdocs/pagination/page04.html
223
- - spec/htdocs/structual_text.html
253
+ - spec/htdocs/struct/structual_links.html
254
+ - spec/htdocs/struct/structual_text.html
224
255
  - spec/servers/httpserver.rb
225
256
  - spec/spec_helper.rb
257
+ - spec/yasuri_cli_spec.rb
226
258
  - spec/yasuri_links_node_spec.rb
259
+ - spec/yasuri_map_spec.rb
227
260
  - spec/yasuri_node_spec.rb
228
261
  - spec/yasuri_paginate_node_spec.rb
229
262
  - spec/yasuri_spec.rb