audio_book_creator 0.0.1 → 0.2.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.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/.travis.yml +2 -2
- data/CHANGELOG.md +24 -0
- data/Gemfile +3 -3
- data/README.md +9 -4
- data/audio_book_creator.gemspec +3 -3
- data/{bin → exe}/audio_book_creator +3 -0
- data/lib/audio_book_creator.rb +4 -2
- data/lib/audio_book_creator/binder.rb +2 -1
- data/lib/audio_book_creator/book_def.rb +2 -2
- data/lib/audio_book_creator/cached_hash.rb +1 -1
- data/lib/audio_book_creator/cascading_array.rb +8 -8
- data/lib/audio_book_creator/chapter.rb +1 -1
- data/lib/audio_book_creator/cli.rb +36 -29
- data/lib/audio_book_creator/conductor.rb +5 -3
- data/lib/audio_book_creator/defaulter.rb +41 -0
- data/lib/audio_book_creator/editor.rb +2 -3
- data/lib/audio_book_creator/page_db.rb +14 -8
- data/lib/audio_book_creator/page_def.rb +7 -15
- data/lib/audio_book_creator/runner.rb +5 -3
- data/lib/audio_book_creator/speaker.rb +1 -1
- data/lib/audio_book_creator/spider.rb +9 -28
- data/lib/audio_book_creator/surfer_def.rb +1 -5
- data/lib/audio_book_creator/url_filter.rb +1 -1
- data/lib/audio_book_creator/version.rb +1 -1
- data/lib/audio_book_creator/web_page.rb +49 -0
- data/run_mutant +89 -0
- data/spec/audio_book_creator/binder_spec.rb +3 -3
- data/spec/audio_book_creator/book_creator_spec.rb +2 -3
- data/spec/audio_book_creator/book_def_spec.rb +33 -22
- data/spec/audio_book_creator/cached_hash_spec.rb +4 -0
- data/spec/audio_book_creator/cli_spec.rb +189 -122
- data/spec/audio_book_creator/conductor_spec.rb +17 -6
- data/spec/audio_book_creator/defaulter_spec.rb +154 -0
- data/spec/audio_book_creator/editor_spec.rb +7 -7
- data/spec/audio_book_creator/page_db_spec.rb +73 -11
- data/spec/audio_book_creator/page_def_spec.rb +26 -40
- data/spec/audio_book_creator/speaker_spec.rb +2 -2
- data/spec/audio_book_creator/spider_spec.rb +10 -15
- data/spec/audio_book_creator/surfer_def_spec.rb +1 -4
- data/spec/audio_book_creator/url_filter_spec.rb +1 -1
- data/spec/audio_book_creator/web_page_spec.rb +65 -0
- data/spec/audio_book_creator_spec.rb +23 -0
- data/spec/spec_helper.rb +15 -12
- metadata +14 -20
@@ -2,16 +2,13 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe AudioBookCreator::SurferDef do
|
4
4
|
context "with parameters" do
|
5
|
-
subject { described_class.new(
|
6
|
-
it { expect(subject.host).to eq("host") }
|
5
|
+
subject { described_class.new(5, true) }
|
7
6
|
it { expect(subject.max).to eq(5) }
|
8
7
|
it { expect(subject.regen_html).to be_truthy }
|
9
|
-
it { expect(subject.cache_filename).to eq("database")}
|
10
8
|
end
|
11
9
|
|
12
10
|
context "with nils" do
|
13
11
|
subject { described_class.new }
|
14
|
-
it { expect(subject.host).to be_nil }
|
15
12
|
it { expect(subject.regen_html).not_to be_truthy }
|
16
13
|
end
|
17
14
|
end
|
@@ -34,7 +34,7 @@ describe AudioBookCreator::UrlFilter do
|
|
34
34
|
end
|
35
35
|
|
36
36
|
context "visit with #extensions" do
|
37
|
-
%w(/page / .html .php .jsp .htm).each do |ext|
|
37
|
+
%w(/page / .html .php .jsp .htm .cfm).each do |ext|
|
38
38
|
it "visits page2#{ext}" do
|
39
39
|
expect(subject.include?(uri("page2#{ext}"))).not_to be_truthy
|
40
40
|
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe AudioBookCreator::WebPage do
|
4
|
+
describe "#initialize" do
|
5
|
+
it "sets url" do
|
6
|
+
expect(described_class.new("url", nil).url).to eq("url")
|
7
|
+
end
|
8
|
+
|
9
|
+
it "sets body" do
|
10
|
+
expect(described_class.new(nil, "body").body).to eq("body")
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "#css" do
|
15
|
+
subject { described_class.new("url", "<h1>body</h1><h2></h2><p>p1</p><p>p2</p>") }
|
16
|
+
it "fetches no element" do
|
17
|
+
expect(subject.css("title")).to eq([])
|
18
|
+
end
|
19
|
+
|
20
|
+
it "fetches blank element" do
|
21
|
+
expect(subject.css("h2")).to eq([""])
|
22
|
+
end
|
23
|
+
|
24
|
+
it "fetches single element" do
|
25
|
+
expect(subject.css("h1")).to eq(["body"])
|
26
|
+
end
|
27
|
+
|
28
|
+
it "fetches multi element" do
|
29
|
+
expect(subject.css("p text()")).to eq(%w(p1 p2))
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "#links" do
|
34
|
+
let(:root) { uri("") }
|
35
|
+
let(:subject) { web_page(root, "title", "<a href='tgt1'>a</a><a href='tgt2'>a</a>")}
|
36
|
+
|
37
|
+
it { expect(subject.links('h1')).to be_empty}
|
38
|
+
it { expect(subject.links('a')).to eq(uri(%w(tgt1 tgt2))) }
|
39
|
+
end
|
40
|
+
|
41
|
+
context "#eql" do
|
42
|
+
subject { described_class.new("url", "body") }
|
43
|
+
it "should understand ==" do
|
44
|
+
expect(subject).to eq(Class.new(described_class).new("url", "body"))
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should understand != nil" do
|
48
|
+
expect(subject).not_to eq(nil)
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should understand != different class" do
|
52
|
+
expect(subject).not_to eq("abc")
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should understand != url" do
|
56
|
+
expect(subject).not_to eq(described_class.new("url2", "body"))
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe ".map_urls" do
|
61
|
+
subject { described_class }
|
62
|
+
it { expect(subject.map_urls(site(%w(a b c#d)))).to eq(uri(%w(a b c))) }
|
63
|
+
it { expect(subject.map_urls(uri(%w(a b c#d)))).to eq(uri(%w(a b c))) }
|
64
|
+
end
|
65
|
+
end
|
@@ -22,4 +22,27 @@ describe AudioBookCreator do
|
|
22
22
|
expect(subject.should_write?("x", false)).not_to be_truthy
|
23
23
|
end
|
24
24
|
end
|
25
|
+
|
26
|
+
context ".logger=" do
|
27
|
+
let(:log) { double("logger") }
|
28
|
+
it "sets logger" do
|
29
|
+
subject.logger=log
|
30
|
+
expect(subject.logger).to eq(log)
|
31
|
+
subject.logger=nil
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
context ".logger" do
|
36
|
+
before { subject.logger=nil }
|
37
|
+
|
38
|
+
it "logs to stdout" do
|
39
|
+
expect(STDOUT).to receive(:write).with(/logging message/)
|
40
|
+
subject.logger.error "logging message"
|
41
|
+
end
|
42
|
+
|
43
|
+
it "defaults to warning" do
|
44
|
+
# clear out the cache up front
|
45
|
+
expect(subject.logger.level).to eq(Logger::WARN)
|
46
|
+
end
|
47
|
+
end
|
25
48
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,22 +1,20 @@
|
|
1
1
|
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
2
2
|
|
3
|
-
unless ENV['MUTANT']
|
4
|
-
|
5
|
-
|
6
|
-
require "codeclimate-test-reporter"
|
3
|
+
# unless ENV['MUTANT']
|
4
|
+
# require "simplecov"
|
5
|
+
# require "codeclimate-test-reporter"
|
7
6
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
]
|
7
|
+
# SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
|
8
|
+
# SimpleCov::Formatter::HTMLFormatter,
|
9
|
+
# CodeClimate::TestReporter::Formatter
|
10
|
+
# ])
|
13
11
|
|
14
|
-
end
|
12
|
+
# end
|
15
13
|
|
16
14
|
require_relative "support/test_logger"
|
17
15
|
|
18
16
|
begin
|
19
|
-
require "
|
17
|
+
require "byebug"
|
20
18
|
rescue LoadError
|
21
19
|
end
|
22
20
|
|
@@ -26,6 +24,11 @@ module SpecHelpers
|
|
26
24
|
%(<a href="#{url}"#{clazz}>link</a>")
|
27
25
|
end
|
28
26
|
|
27
|
+
def web_page(*args)
|
28
|
+
url = args.shift
|
29
|
+
AudioBookCreator::WebPage.new(url, page(*args))
|
30
|
+
end
|
31
|
+
|
29
32
|
def page(title, *args)
|
30
33
|
%(<html><head><title>#{title}</title></head>
|
31
34
|
<body>#{Array(args).join(" ")}</body>
|
@@ -79,7 +82,7 @@ module SpecHelpers
|
|
79
82
|
end
|
80
83
|
end
|
81
84
|
|
82
|
-
SimpleCov.start unless ENV['MUTANT']
|
85
|
+
# SimpleCov.start unless ENV['MUTANT']
|
83
86
|
|
84
87
|
require 'audio_book_creator'
|
85
88
|
|
metadata
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: audio_book_creator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Keenan Brock
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-01-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name: sqlite3
|
14
|
+
name: sqlite3
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
@@ -94,20 +94,6 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: coveralls
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
97
|
- !ruby/object:Gem::Dependency
|
112
98
|
name: codeclimate-test-reporter
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -135,12 +121,13 @@ files:
|
|
135
121
|
- ".gitignore"
|
136
122
|
- ".rspec"
|
137
123
|
- ".travis.yml"
|
124
|
+
- CHANGELOG.md
|
138
125
|
- Gemfile
|
139
126
|
- LICENSE.txt
|
140
127
|
- README.md
|
141
128
|
- Rakefile
|
142
129
|
- audio_book_creator.gemspec
|
143
|
-
-
|
130
|
+
- exe/audio_book_creator
|
144
131
|
- lib/audio_book_creator.rb
|
145
132
|
- lib/audio_book_creator/binder.rb
|
146
133
|
- lib/audio_book_creator/book_creator.rb
|
@@ -150,6 +137,7 @@ files:
|
|
150
137
|
- lib/audio_book_creator/chapter.rb
|
151
138
|
- lib/audio_book_creator/cli.rb
|
152
139
|
- lib/audio_book_creator/conductor.rb
|
140
|
+
- lib/audio_book_creator/defaulter.rb
|
153
141
|
- lib/audio_book_creator/editor.rb
|
154
142
|
- lib/audio_book_creator/logging.rb
|
155
143
|
- lib/audio_book_creator/page_db.rb
|
@@ -163,6 +151,8 @@ files:
|
|
163
151
|
- lib/audio_book_creator/url_filter.rb
|
164
152
|
- lib/audio_book_creator/version.rb
|
165
153
|
- lib/audio_book_creator/web.rb
|
154
|
+
- lib/audio_book_creator/web_page.rb
|
155
|
+
- run_mutant
|
166
156
|
- spec/audio_book_creator/binder_spec.rb
|
167
157
|
- spec/audio_book_creator/book_creator_spec.rb
|
168
158
|
- spec/audio_book_creator/book_def_spec.rb
|
@@ -171,6 +161,7 @@ files:
|
|
171
161
|
- spec/audio_book_creator/chapter_spec.rb
|
172
162
|
- spec/audio_book_creator/cli_spec.rb
|
173
163
|
- spec/audio_book_creator/conductor_spec.rb
|
164
|
+
- spec/audio_book_creator/defaulter_spec.rb
|
174
165
|
- spec/audio_book_creator/editor_spec.rb
|
175
166
|
- spec/audio_book_creator/logging_spec.rb
|
176
167
|
- spec/audio_book_creator/page_db_spec.rb
|
@@ -183,6 +174,7 @@ files:
|
|
183
174
|
- spec/audio_book_creator/surfer_def_spec.rb
|
184
175
|
- spec/audio_book_creator/url_filter_spec.rb
|
185
176
|
- spec/audio_book_creator/version_spec.rb
|
177
|
+
- spec/audio_book_creator/web_page_spec.rb
|
186
178
|
- spec/audio_book_creator/web_spec.rb
|
187
179
|
- spec/audio_book_creator_spec.rb
|
188
180
|
- spec/spec_helper.rb
|
@@ -207,7 +199,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
207
199
|
version: '0'
|
208
200
|
requirements: []
|
209
201
|
rubyforge_project:
|
210
|
-
rubygems_version: 2.
|
202
|
+
rubygems_version: 2.5.2
|
211
203
|
signing_key:
|
212
204
|
specification_version: 4
|
213
205
|
summary: Create an audiobook from a url
|
@@ -220,6 +212,7 @@ test_files:
|
|
220
212
|
- spec/audio_book_creator/chapter_spec.rb
|
221
213
|
- spec/audio_book_creator/cli_spec.rb
|
222
214
|
- spec/audio_book_creator/conductor_spec.rb
|
215
|
+
- spec/audio_book_creator/defaulter_spec.rb
|
223
216
|
- spec/audio_book_creator/editor_spec.rb
|
224
217
|
- spec/audio_book_creator/logging_spec.rb
|
225
218
|
- spec/audio_book_creator/page_db_spec.rb
|
@@ -232,6 +225,7 @@ test_files:
|
|
232
225
|
- spec/audio_book_creator/surfer_def_spec.rb
|
233
226
|
- spec/audio_book_creator/url_filter_spec.rb
|
234
227
|
- spec/audio_book_creator/version_spec.rb
|
228
|
+
- spec/audio_book_creator/web_page_spec.rb
|
235
229
|
- spec/audio_book_creator/web_spec.rb
|
236
230
|
- spec/audio_book_creator_spec.rb
|
237
231
|
- spec/spec_helper.rb
|