klipbook 1.0.2 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.txt +13 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +17 -6
- data/LICENSE.txt +1 -1
- data/README.md +64 -32
- data/bin/klipbook +45 -9
- data/features/collate.feature +6 -46
- data/features/pretty_print.feature +51 -0
- data/features/step_definitions/collate_steps.rb +8 -52
- data/features/step_definitions/pretty_print_steps.rb +61 -0
- data/klipbook.gemspec +25 -20
- data/lib/klipbook/collate/book_file.rb +54 -0
- data/lib/klipbook/commands/collate.rb +17 -0
- data/lib/klipbook/commands/list_books.rb +19 -0
- data/lib/klipbook/commands/pretty_print.rb +17 -0
- data/lib/klipbook/{output/html_summary_writer.rb → pretty_print/html_printer.rb} +4 -5
- data/lib/klipbook/sources/amazon_site/book_scraper.rb +3 -3
- data/lib/klipbook/sources/book.rb +28 -0
- data/lib/klipbook/{fetcher.rb → sources/book_source.rb} +7 -10
- data/lib/klipbook/sources/clipping.rb +11 -0
- data/lib/klipbook/sources/kindle_device/file.rb +4 -4
- data/lib/klipbook/util/struct_to_json.rb +11 -0
- data/lib/klipbook/version.rb +1 -1
- data/lib/klipbook.rb +13 -10
- data/spec/lib/klipbook/collate/book_file_spec.rb +73 -0
- data/spec/lib/klipbook/{printer_spec.rb → commands/list_books_spec.rb} +5 -5
- data/spec/lib/klipbook/commands/pretty_print_spec.rb +40 -0
- data/spec/lib/klipbook/{output/html_summary_writer_spec.rb → pretty_print/html_printer_spec.rb} +4 -4
- data/spec/lib/klipbook/{fetcher_spec.rb → sources/book_source_spec.rb} +12 -12
- data/spec/lib/klipbook/{book_spec.rb → sources/book_spec.rb} +2 -2
- data/spec/lib/klipbook/sources/kindle_device/file_spec.rb +24 -4
- metadata +24 -19
- data/lib/klipbook/book.rb +0 -18
- data/lib/klipbook/clipping.rb +0 -9
- data/lib/klipbook/collator.rb +0 -17
- data/lib/klipbook/output/book_helpers.rb +0 -12
- data/lib/klipbook/printer.rb +0 -18
- data/spec/lib/klipbook/collator_spec.rb +0 -40
- /data/lib/klipbook/{output → pretty_print}/html_book_summary.erb +0 -0
- /data/lib/klipbook/{invalid_source_error.rb → sources/invalid_source_error.rb} +0 -0
- /data/lib/klipbook/{blank.rb → util/blank.rb} +0 -0
@@ -7,7 +7,7 @@ describe Klipbook::Book do
|
|
7
7
|
|
8
8
|
context 'with no author' do
|
9
9
|
let(:book) do
|
10
|
-
Klipbook::Book.new do |b|
|
10
|
+
Klipbook::Book.new.tap do |b|
|
11
11
|
b.title = 'Book title'
|
12
12
|
end
|
13
13
|
end
|
@@ -19,7 +19,7 @@ describe Klipbook::Book do
|
|
19
19
|
|
20
20
|
context 'with an author' do
|
21
21
|
let(:book) do
|
22
|
-
Klipbook::Book.new do |b|
|
22
|
+
Klipbook::Book.new.tap do |b|
|
23
23
|
b.title = 'Book title'
|
24
24
|
b.author = 'Rob Ripjaw'
|
25
25
|
end
|
@@ -2,18 +2,38 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Klipbook::Sources::KindleDevice::File do
|
4
4
|
|
5
|
-
let(:file) { Klipbook::Sources::KindleDevice::File.new('file
|
5
|
+
let(:file) { Klipbook::Sources::KindleDevice::File.new('file path', max_books, file_parser) }
|
6
6
|
|
7
|
-
let
|
7
|
+
let(:max_books) { 30 }
|
8
8
|
|
9
|
-
let
|
9
|
+
let(:entries) { [] }
|
10
10
|
|
11
|
-
let
|
11
|
+
let(:file_parser) do
|
12
12
|
Object.new.tap do |fake_parser|
|
13
13
|
stub(fake_parser).extract_entries { entries }
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
+
let(:input_file) do
|
18
|
+
Object.new.tap do |fake_file|
|
19
|
+
stub(fake_file).read { 'file text' }
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
before :each do
|
24
|
+
stub(File).open.returns do |*args|
|
25
|
+
passed_block = args.last
|
26
|
+
passed_block.call(input_file)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe 'initially' do
|
31
|
+
it 'reads the contents of the input file' do
|
32
|
+
file
|
33
|
+
File.should have_received.open('file path', 'r')
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
17
37
|
describe '#books' do
|
18
38
|
subject { file.books }
|
19
39
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: klipbook
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.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:
|
12
|
+
date: 2013-02-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: gli
|
@@ -140,7 +140,7 @@ dependencies:
|
|
140
140
|
- !ruby/object:Gem::Version
|
141
141
|
version: '0'
|
142
142
|
- !ruby/object:Gem::Dependency
|
143
|
-
name: pry
|
143
|
+
name: pry-debugger
|
144
144
|
requirement: !ruby/object:Gem::Requirement
|
145
145
|
none: false
|
146
146
|
requirements:
|
@@ -276,34 +276,39 @@ files:
|
|
276
276
|
- features/collate.feature
|
277
277
|
- features/fixtures/clippings-for-three-books.txt
|
278
278
|
- features/list.feature
|
279
|
+
- features/pretty_print.feature
|
279
280
|
- features/step_definitions/collate_steps.rb
|
280
281
|
- features/step_definitions/list_steps.rb
|
282
|
+
- features/step_definitions/pretty_print_steps.rb
|
281
283
|
- features/support/env.rb
|
282
284
|
- klipbook.gemspec
|
283
285
|
- lib/klipbook.rb
|
284
|
-
- lib/klipbook/
|
285
|
-
- lib/klipbook/
|
286
|
-
- lib/klipbook/
|
287
|
-
- lib/klipbook/
|
286
|
+
- lib/klipbook/collate/book_file.rb
|
287
|
+
- lib/klipbook/commands/collate.rb
|
288
|
+
- lib/klipbook/commands/list_books.rb
|
289
|
+
- lib/klipbook/commands/pretty_print.rb
|
288
290
|
- lib/klipbook/config.rb
|
289
|
-
- lib/klipbook/
|
290
|
-
- lib/klipbook/
|
291
|
-
- lib/klipbook/output/book_helpers.rb
|
292
|
-
- lib/klipbook/output/html_book_summary.erb
|
293
|
-
- lib/klipbook/output/html_summary_writer.rb
|
294
|
-
- lib/klipbook/printer.rb
|
291
|
+
- lib/klipbook/pretty_print/html_book_summary.erb
|
292
|
+
- lib/klipbook/pretty_print/html_printer.rb
|
295
293
|
- lib/klipbook/sources/amazon_site/book_scraper.rb
|
296
294
|
- lib/klipbook/sources/amazon_site/site_scraper.rb
|
295
|
+
- lib/klipbook/sources/book.rb
|
296
|
+
- lib/klipbook/sources/book_source.rb
|
297
|
+
- lib/klipbook/sources/clipping.rb
|
298
|
+
- lib/klipbook/sources/invalid_source_error.rb
|
297
299
|
- lib/klipbook/sources/kindle_device/entry.rb
|
298
300
|
- lib/klipbook/sources/kindle_device/entry_parser.rb
|
299
301
|
- lib/klipbook/sources/kindle_device/file.rb
|
300
302
|
- lib/klipbook/sources/kindle_device/file_parser.rb
|
303
|
+
- lib/klipbook/util/blank.rb
|
304
|
+
- lib/klipbook/util/struct_to_json.rb
|
301
305
|
- lib/klipbook/version.rb
|
302
|
-
- spec/lib/klipbook/
|
303
|
-
- spec/lib/klipbook/
|
304
|
-
- spec/lib/klipbook/
|
305
|
-
- spec/lib/klipbook/
|
306
|
-
- spec/lib/klipbook/
|
306
|
+
- spec/lib/klipbook/collate/book_file_spec.rb
|
307
|
+
- spec/lib/klipbook/commands/list_books_spec.rb
|
308
|
+
- spec/lib/klipbook/commands/pretty_print_spec.rb
|
309
|
+
- spec/lib/klipbook/pretty_print/html_printer_spec.rb
|
310
|
+
- spec/lib/klipbook/sources/book_source_spec.rb
|
311
|
+
- spec/lib/klipbook/sources/book_spec.rb
|
307
312
|
- spec/lib/klipbook/sources/kindle_device/entry_parser_spec.rb
|
308
313
|
- spec/lib/klipbook/sources/kindle_device/file_parser_spec.rb
|
309
314
|
- spec/lib/klipbook/sources/kindle_device/file_spec.rb
|
@@ -325,7 +330,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
325
330
|
version: '0'
|
326
331
|
segments:
|
327
332
|
- 0
|
328
|
-
hash: -
|
333
|
+
hash: -33745898634206631
|
329
334
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
330
335
|
none: false
|
331
336
|
requirements:
|
data/lib/klipbook/book.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
module Klipbook
|
2
|
-
class Book
|
3
|
-
attr_accessor :asin, :author, :title, :last_update, :clippings
|
4
|
-
|
5
|
-
def initialize
|
6
|
-
yield self if block_given?
|
7
|
-
end
|
8
|
-
|
9
|
-
def title_and_author
|
10
|
-
author_txt = author ? " by #{author}" : ''
|
11
|
-
"#{title}#{author_txt}"
|
12
|
-
end
|
13
|
-
|
14
|
-
def get_binding
|
15
|
-
binding
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
data/lib/klipbook/clipping.rb
DELETED
data/lib/klipbook/collator.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
module Klipbook
|
2
|
-
class Collator
|
3
|
-
def initialize(books, summary_writer=Klipbook::Output::HtmlSummaryWriter.new)
|
4
|
-
@books = books
|
5
|
-
@summary_writer = summary_writer
|
6
|
-
end
|
7
|
-
|
8
|
-
def collate_books(output_dir, force, message_stream=$stdout)
|
9
|
-
message_stream.puts "Using output directory: #{output_dir}"
|
10
|
-
|
11
|
-
@books.each do |book|
|
12
|
-
@summary_writer.write(book, output_dir, force)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
data/lib/klipbook/printer.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
module Klipbook
|
2
|
-
class Printer
|
3
|
-
def initialize(books)
|
4
|
-
@books = books
|
5
|
-
end
|
6
|
-
|
7
|
-
def print(output=$stdout)
|
8
|
-
if @books.empty?
|
9
|
-
output.puts 'No books available'
|
10
|
-
else
|
11
|
-
output.puts 'Book list:'
|
12
|
-
@books.each_with_index do |book, index|
|
13
|
-
output.puts "[#{index + 1}] #{book.title_and_author}"
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Klipbook::Collator do
|
4
|
-
|
5
|
-
let (:it) { Klipbook::Collator.new(books, summary_writer) }
|
6
|
-
|
7
|
-
let (:summary_writer) do
|
8
|
-
Object.new.tap do |fake_writer|
|
9
|
-
stub(fake_writer).write
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
let (:message_stream) do
|
14
|
-
Object.new.tap do |fake_stream|
|
15
|
-
stub(fake_stream).puts
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
let (:book_one) { Klipbook::Book.new }
|
20
|
-
let (:book_two) { Klipbook::Book.new }
|
21
|
-
let (:books) { [ book_one, book_two ] }
|
22
|
-
|
23
|
-
let(:output_dir) { 'fake output dir' }
|
24
|
-
|
25
|
-
describe '#collate_books' do
|
26
|
-
|
27
|
-
subject { it.collate_books(output_dir, true, message_stream) }
|
28
|
-
|
29
|
-
it 'prints a message displaying the output directory' do
|
30
|
-
subject
|
31
|
-
message_stream.should have_received.puts('Using output directory: fake output dir')
|
32
|
-
end
|
33
|
-
|
34
|
-
it 'passes each book to the summary writer' do
|
35
|
-
subject
|
36
|
-
summary_writer.should have_received.write(book_one, output_dir, true)
|
37
|
-
summary_writer.should have_received.write(book_two, output_dir, true)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
File without changes
|
File without changes
|
File without changes
|