autopagerize 0.0.1 → 0.1.0
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/autopagerize.gemspec +1 -0
- data/lib/autopagerize.rb +18 -6
- data/lib/autopagerize/version.rb +1 -1
- data/spec/autopagerize_spec.rb +85 -4
- data/spec/spec_helper.rb +7 -0
- metadata +18 -3
data/autopagerize.gemspec
CHANGED
data/lib/autopagerize.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require "autopagerize/version"
|
2
2
|
require "addressable/uri"
|
3
3
|
require "nokogiri"
|
4
4
|
require "httpclient"
|
@@ -46,8 +46,9 @@ class Autopagerize
|
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
|
-
def
|
50
|
-
@
|
49
|
+
def process
|
50
|
+
@processed ||= begin
|
51
|
+
return true unless site
|
51
52
|
result = document.dup
|
52
53
|
|
53
54
|
# Insert rule:
|
@@ -68,13 +69,23 @@ class Autopagerize
|
|
68
69
|
@processed_page_elements << current.page
|
69
70
|
end
|
70
71
|
point.remove
|
71
|
-
result
|
72
|
+
@processed_document = result
|
73
|
+
true
|
72
74
|
end
|
73
75
|
end
|
74
76
|
|
77
|
+
def processed?
|
78
|
+
@processed
|
79
|
+
end
|
80
|
+
|
81
|
+
def processed_document
|
82
|
+
process
|
83
|
+
@processed_document || document
|
84
|
+
end
|
85
|
+
|
75
86
|
def processed_page_elements
|
76
|
-
|
77
|
-
@processed_page_elements
|
87
|
+
process
|
88
|
+
@processed_page_elements || []
|
78
89
|
end
|
79
90
|
|
80
91
|
def processed_html
|
@@ -100,6 +111,7 @@ class Autopagerize
|
|
100
111
|
end
|
101
112
|
|
102
113
|
def page
|
114
|
+
return nil unless site
|
103
115
|
document.xpath(site["data"]["pageElement"]).last
|
104
116
|
end
|
105
117
|
alias :page_element :page
|
data/lib/autopagerize/version.rb
CHANGED
data/spec/autopagerize_spec.rb
CHANGED
@@ -29,7 +29,7 @@ describe Autopagerize do
|
|
29
29
|
MultiJson.load(json)
|
30
30
|
end
|
31
31
|
|
32
|
-
|
32
|
+
let(:mock_pages) do
|
33
33
|
first = <<-HTML
|
34
34
|
<!doctype html>
|
35
35
|
<page>first page</page>
|
@@ -47,10 +47,91 @@ describe Autopagerize do
|
|
47
47
|
<page>final page</page>
|
48
48
|
HTML
|
49
49
|
|
50
|
+
[first, second, third]
|
51
|
+
end
|
52
|
+
|
53
|
+
let(:client) do
|
50
54
|
client = HTTPClient.new
|
51
|
-
|
55
|
+
mock_pages.each do |html|
|
56
|
+
client.test_loopback_response << html
|
57
|
+
end
|
58
|
+
client
|
59
|
+
end
|
60
|
+
|
61
|
+
it "#processed?" do
|
52
62
|
a = Autopagerize.new("http://bar/", siteinfo, :httpclient => client)
|
53
|
-
a.
|
54
|
-
a.
|
63
|
+
a.processed?.should be_false
|
64
|
+
a.process
|
65
|
+
a.processed?.should be_true
|
66
|
+
end
|
67
|
+
|
68
|
+
context "found" do
|
69
|
+
let(:autopagerize) do
|
70
|
+
Autopagerize.new("http://bar/", siteinfo, :httpclient => client)
|
71
|
+
end
|
72
|
+
|
73
|
+
it "#processed_document" do
|
74
|
+
doc = autopagerize.processed_document
|
75
|
+
doc.xpath('//page').length.should == 3
|
76
|
+
end
|
77
|
+
|
78
|
+
it "#processed_page_elements" do
|
79
|
+
autopagerize.processed_page_elements.length.should == 3
|
80
|
+
end
|
81
|
+
|
82
|
+
it "#each" do
|
83
|
+
autopagerize.to_enum.to_a.length.should == 3
|
84
|
+
end
|
85
|
+
|
86
|
+
it "#nextlink" do
|
87
|
+
autopagerize.nextlink.should == "http://bar/next.html"
|
88
|
+
end
|
89
|
+
|
90
|
+
it "#next" do
|
91
|
+
autopagerize.next.class.should == Autopagerize
|
92
|
+
end
|
93
|
+
|
94
|
+
it "#html" do
|
95
|
+
autopagerize.html.should == mock_pages.first
|
96
|
+
end
|
97
|
+
|
98
|
+
it "#page_element" do
|
99
|
+
page = autopagerize.page_element
|
100
|
+
page.node_name.should == "page"
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
context "not found" do
|
105
|
+
let(:autopagerize) do
|
106
|
+
Autopagerize.new("http://unknown/", siteinfo, :httpclient => client)
|
107
|
+
end
|
108
|
+
|
109
|
+
it "#processed_document equals #document" do
|
110
|
+
autopagerize.processed_document.should == autopagerize.document
|
111
|
+
end
|
112
|
+
|
113
|
+
it "#processed_page_elements equals []" do
|
114
|
+
autopagerize.processed_page_elements.should == []
|
115
|
+
end
|
116
|
+
|
117
|
+
it "#page_element" do
|
118
|
+
autopagerize.page_element.should be_nil
|
119
|
+
end
|
120
|
+
|
121
|
+
it "#nextlink" do
|
122
|
+
autopagerize.nextlink.should be_nil
|
123
|
+
end
|
124
|
+
|
125
|
+
it "#next" do
|
126
|
+
autopagerize.next.should be_nil
|
127
|
+
end
|
128
|
+
|
129
|
+
it "#each" do
|
130
|
+
autopagerize.to_enum.to_a.should == [autopagerize]
|
131
|
+
end
|
132
|
+
|
133
|
+
it "#html" do
|
134
|
+
autopagerize.html.should == mock_pages.first
|
135
|
+
end
|
55
136
|
end
|
56
137
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,8 +1,15 @@
|
|
1
1
|
# -- coding: utf-8
|
2
2
|
|
3
3
|
require "rubygems"
|
4
|
+
|
5
|
+
if ENV["COVERAGE"]
|
6
|
+
require "simplecov"
|
7
|
+
SimpleCov.start
|
8
|
+
end
|
9
|
+
|
4
10
|
require "bundler/setup"
|
5
11
|
Bundler.require :default, :test, :development
|
12
|
+
|
6
13
|
require "rspec-expectations"
|
7
14
|
require "rspec/matchers/built_in/be"
|
8
15
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: autopagerize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-11-
|
12
|
+
date: 2012-11-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: addressable
|
@@ -91,6 +91,22 @@ dependencies:
|
|
91
91
|
- - ! '>='
|
92
92
|
- !ruby/object:Gem::Version
|
93
93
|
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: simplecov
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
94
110
|
description: Concat paginated web pages to single page
|
95
111
|
email:
|
96
112
|
- k@uu59.org
|
@@ -135,4 +151,3 @@ summary: Concat paginated web pages to single page
|
|
135
151
|
test_files:
|
136
152
|
- spec/autopagerize_spec.rb
|
137
153
|
- spec/spec_helper.rb
|
138
|
-
has_rdoc:
|