brandeins 0.3.0.pre → 0.3.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/.rubocop.yml +9 -0
- data/.travis.yml +1 -0
- data/Gemfile +1 -3
- data/Gemfile.lock +1 -1
- data/Rakefile +3 -9
- data/brandeins.gemspec +2 -1
- data/lib/brandeins.rb +1 -0
- data/lib/brandeins/cli.rb +42 -25
- data/lib/brandeins/config.rb +7 -4
- data/lib/brandeins/kiosk.rb +16 -18
- data/lib/brandeins/merger/external/base.rb +5 -5
- data/lib/brandeins/merger/external/ghostscript_windows.rb +2 -2
- data/lib/brandeins/merger/external/pdftk.rb +2 -2
- data/lib/brandeins/merger/pdf_tools.rb +1 -0
- data/lib/brandeins/pages/archive.rb +6 -8
- data/lib/brandeins/pages/article.rb +1 -0
- data/lib/brandeins/pages/cover.rb +2 -2
- data/lib/brandeins/pages/magazine.rb +7 -14
- data/lib/brandeins/utils/cli_option_parser.rb +38 -27
- data/lib/brandeins/utils/cli_output.rb +3 -0
- data/lib/brandeins/utils/fetcher.rb +12 -2
- data/lib/brandeins/utils/merger.rb +3 -3
- data/lib/brandeins/version.rb +3 -1
- data/spec/lib/brandeins/kiosk_spec.rb +2 -2
- data/spec/lib/brandeins/pages/archive_spec.rb +2 -2
- data/spec/lib/brandeins_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- metadata +3 -4
- data/rubocop-todo.yml +0 -141
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 452e52a68913302848e8c2c5900f09f02a5c0a44
|
4
|
+
data.tar.gz: 42ad2272e2097b36fd48dc2e4da04d5e8f8dac3a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8b5380e9beed64f0377e5bd1420006135ce72687b083d463fbdf7c3167487d3380d8ee8e7888dd538b03ad63ccf328f7c66b90601331a659b9e3bb303247db99
|
7
|
+
data.tar.gz: 26f3a6237cae2991dc5f188997d0c3655142393e81fa4a3c39e7c578c99018ed01589908a0cedf3d1fa0d86a5f52330ff8bdd90d16d02a019d796c9fad87413a
|
data/.rubocop.yml
CHANGED
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
data/Rakefile
CHANGED
@@ -1,25 +1,19 @@
|
|
1
1
|
require 'bundler/gem_tasks'
|
2
|
-
require 'rake/testtask'
|
3
2
|
require 'rubocop/rake_task'
|
4
|
-
require 'rspec/
|
3
|
+
require 'rspec/core/rake_task'
|
5
4
|
|
6
5
|
Rubocop::RakeTask.new
|
7
|
-
|
8
|
-
Rake::TestTask.new(:spec) do |t|
|
9
|
-
t.pattern = 'spec/lib/**/*_spec.rb'
|
10
|
-
t.verbose = true
|
11
|
-
end
|
6
|
+
RSpec::Core::RakeTask.new(:spec)
|
12
7
|
|
13
8
|
task :load_version_file do
|
14
9
|
require_relative './lib/brandeins/version'
|
15
10
|
end
|
16
11
|
|
17
12
|
task install: [ :load_version_file ] do
|
18
|
-
require_relative './lib/brandeins/version'
|
19
13
|
sh "gem install ./pkg/brandeins-#{BrandEins::VERSION}.gem"
|
20
14
|
end
|
21
15
|
|
22
|
-
task
|
16
|
+
task publish: [ :load_version_file, :build ] do
|
23
17
|
sh "gem push ./pkg/brandeins-#{BrandEins::VERSION}.gem"
|
24
18
|
end
|
25
19
|
|
data/brandeins.gemspec
CHANGED
data/lib/brandeins.rb
CHANGED
data/lib/brandeins/cli.rb
CHANGED
@@ -8,7 +8,7 @@ require_relative '../brandeins'
|
|
8
8
|
require_relative '../brandeins/utils/cli_option_parser'
|
9
9
|
|
10
10
|
module BrandEins
|
11
|
-
class
|
11
|
+
class Cli
|
12
12
|
include Singleton
|
13
13
|
|
14
14
|
def self.run(args)
|
@@ -21,38 +21,55 @@ module BrandEins
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def run
|
24
|
-
options = BrandEins::CliOptionParser.parse(@args)
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
24
|
+
options = BrandEins::Utils::CliOptionParser.parse(@args)
|
25
|
+
abort 'Unknown command' unless %w[help version setup download].include? options.cmd
|
26
|
+
send options.cmd, options
|
27
|
+
end
|
28
|
+
|
29
|
+
def version(options)
|
30
|
+
puts BrandEins::VERSION
|
31
|
+
end
|
32
|
+
|
33
|
+
def help(options)
|
34
|
+
puts BrandEins::Utils::CliOptionParser.parser
|
35
|
+
end
|
36
|
+
|
37
|
+
def setup(options)
|
38
|
+
puts 'You need to install pdftk in order to merge the downloaded pdfs.'
|
39
|
+
puts 'Either download it from their website or use a package manager like'
|
40
|
+
puts 'homebrew to install it on your system.'
|
37
41
|
end
|
38
42
|
|
39
|
-
def download(
|
40
|
-
|
41
|
-
|
43
|
+
def download(options)
|
44
|
+
errors = validate_options(options)
|
45
|
+
abort errors.join("\n") if errors.size > 0
|
46
|
+
|
47
|
+
month = options.month
|
48
|
+
year = options.year
|
49
|
+
kiosk = BrandEins::Kiosk.new(options.to_h)
|
50
|
+
kiosk.download_magazine(month, year)
|
42
51
|
rescue BrandEins::Utils::Fetcher::ContentNotFetchedError => e
|
43
52
|
puts "Download Error: #{e}\n\n"
|
44
53
|
puts "#{e.backtrace.join('\n')}"
|
45
54
|
end
|
46
55
|
|
47
|
-
def validate_options
|
48
|
-
|
49
|
-
|
50
|
-
|
56
|
+
def validate_options(options)
|
57
|
+
[].tap do |errors|
|
58
|
+
if !valid_month?(options.month)
|
59
|
+
errors.push('Invalid month: Must be between 1 and 12')
|
60
|
+
end
|
61
|
+
if !valid_year?(options.year)
|
62
|
+
errors.push("Invalid year: Must be between 2000 and #{Time.now.year}")
|
63
|
+
end
|
51
64
|
end
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
65
|
+
end
|
66
|
+
|
67
|
+
def valid_month?(month)
|
68
|
+
(1..12).include? month
|
69
|
+
end
|
70
|
+
|
71
|
+
def valid_year?(year)
|
72
|
+
(2000..Time.now.year).include? year
|
56
73
|
end
|
57
74
|
|
58
75
|
end
|
data/lib/brandeins/config.rb
CHANGED
@@ -1,15 +1,18 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require 'pathname'
|
2
|
-
|
3
|
-
# BrandEins::Config['base_uri']
|
4
|
-
#
|
4
|
+
|
5
5
|
module BrandEins
|
6
|
+
# Used to store and retrieve default settings
|
7
|
+
# Access it like:
|
8
|
+
# BrandEins::Config['base_uri']
|
6
9
|
class Config
|
7
10
|
BASE_URI = 'http://www.brandeins.de'
|
8
11
|
ARCHIVE_URI = BASE_URI + '/archiv.html'
|
9
12
|
BASE_PATH = Pathname.new(ENV['HOME']) + '.brandeins'
|
10
13
|
CACHE_PATH = BASE_PATH + 'cache'
|
11
14
|
TEMP_PATH = BASE_PATH + 'temp'
|
12
|
-
CACHE_LIMIT_BYTES = 400 * 1024
|
15
|
+
CACHE_LIMIT_BYTES = 400 * 1024**2
|
13
16
|
|
14
17
|
def self.[](name)
|
15
18
|
const_get(name.upcase)
|
data/lib/brandeins/kiosk.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require 'pathname'
|
2
4
|
require 'fileutils'
|
3
5
|
|
4
6
|
require_relative 'config'
|
5
7
|
require_relative 'utils/fetcher'
|
6
8
|
require_relative 'pages/archive'
|
7
|
-
require_relative 'pages/archive'
|
8
9
|
require_relative 'pages/cover'
|
9
10
|
require_relative 'merger/pdf_tools'
|
10
11
|
|
@@ -13,7 +14,7 @@ module BrandEins
|
|
13
14
|
class Kiosk
|
14
15
|
attr_reader :target_path
|
15
16
|
|
16
|
-
|
17
|
+
InvalidPathError = Class.new StandardError
|
17
18
|
|
18
19
|
def initialize(opts = {})
|
19
20
|
@target_path = opts.fetch(:path) { Pathname.new('.').realpath.to_s }
|
@@ -24,7 +25,7 @@ module BrandEins
|
|
24
25
|
|
25
26
|
def create_directories_if_necessary
|
26
27
|
cache_path.mkpath unless cache_path.exist?
|
27
|
-
temp_path.mkpath
|
28
|
+
temp_path.mkpath unless temp_path.exist?
|
28
29
|
end
|
29
30
|
|
30
31
|
def set_opts_for_cli_output(opts)
|
@@ -35,23 +36,20 @@ module BrandEins
|
|
35
36
|
|
36
37
|
def raise_if_path_inaccessible
|
37
38
|
path = Pathname.new(@target_path)
|
38
|
-
|
39
|
-
|
40
|
-
end
|
39
|
+
path.writable? or raise InvalidPathError,
|
40
|
+
"Cannot access the given path: #{@target_path}"
|
41
41
|
end
|
42
42
|
|
43
|
-
def download_magazine(month
|
44
|
-
|
43
|
+
def download_magazine(month, year)
|
44
|
+
cli.info "Downloading to: #{@target_path}"
|
45
|
+
magazine = fetch_magazine(month, year)
|
45
46
|
cover_pdf_path = download_cover(magazine)
|
46
47
|
article_pdf_paths = download_article_pdfs(magazine)
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
def merge_pdf_files(pdf_files)
|
52
|
-
magazine_file_path = magazine_file_path(month: month, year: year)
|
53
|
-
merger.merge_pdf_files(pdf_files, magazine_file_path)
|
48
|
+
magazine_pdf_paths = article_pdf_paths.unshift(cover_pdf_path)
|
49
|
+
magazine_file_path = magazine_file_path(month, year)
|
50
|
+
merger.merge_pdf_files(magazine_pdf_paths, magazine_file_path)
|
54
51
|
clear_temp_path
|
52
|
+
cli.info "Successfully downloaded: #{magazine_file_path}"
|
55
53
|
magazine_file_path
|
56
54
|
end
|
57
55
|
|
@@ -64,11 +62,11 @@ module BrandEins
|
|
64
62
|
cover.save_to(temp_path)
|
65
63
|
end
|
66
64
|
|
67
|
-
def fetch_magazine(month
|
68
|
-
archive.magazine_for(month
|
65
|
+
def fetch_magazine(month, year)
|
66
|
+
archive.magazine_for(month, year)
|
69
67
|
end
|
70
68
|
|
71
|
-
def magazine_file_path(month
|
69
|
+
def magazine_file_path(month, year)
|
72
70
|
Pathname.new(@target_path) + "brandeins-#{month}-#{year}.pdf"
|
73
71
|
end
|
74
72
|
|
@@ -31,14 +31,14 @@ module BrandEins
|
|
31
31
|
cli.error "Error when merging file: #{e.inspect}"
|
32
32
|
return false
|
33
33
|
end
|
34
|
-
|
34
|
+
true
|
35
35
|
end
|
36
36
|
|
37
37
|
def cli
|
38
38
|
@cli ||= BrandEins::Utils::CliOutput.instance
|
39
39
|
end
|
40
40
|
|
41
|
-
def _exec
|
41
|
+
def _exec(cmd)
|
42
42
|
IO.popen(cmd) do |io|
|
43
43
|
io.each do |line|
|
44
44
|
puts line
|
@@ -46,13 +46,13 @@ module BrandEins
|
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
|
-
def _cmd_available?
|
49
|
+
def _cmd_available?(cmd, args)
|
50
50
|
begin
|
51
51
|
open("|#{cmd} #{args.join(' ')}").close
|
52
|
-
rescue
|
52
|
+
rescue Errno::ENOENT
|
53
53
|
return false
|
54
54
|
end
|
55
|
-
|
55
|
+
true
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
@@ -11,11 +11,11 @@ module BrandEins
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def args
|
14
|
-
[
|
14
|
+
%w[ -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=__target_pdf__ __pdf_files__ ]
|
15
15
|
end
|
16
16
|
|
17
17
|
def noop
|
18
|
-
[
|
18
|
+
%w[--version]
|
19
19
|
end
|
20
20
|
|
21
21
|
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
require 'nokogiri'
|
4
|
-
require 'english'
|
5
4
|
|
6
5
|
require_relative '../config'
|
7
6
|
require_relative '../pages/magazine'
|
@@ -24,28 +23,27 @@ module BrandEins
|
|
24
23
|
attr_reader :html
|
25
24
|
|
26
25
|
def initialize(opts = {})
|
27
|
-
@html = opts.
|
26
|
+
@html = opts.fetch(:html, nil)
|
28
27
|
@magazines = {}
|
29
28
|
end
|
30
29
|
|
31
30
|
def html
|
32
|
-
cli.info
|
31
|
+
cli.info 'Loading the archive' do
|
33
32
|
@html ||= fetcher.fetch(archive_url)
|
34
33
|
end
|
35
34
|
rescue BrandEins::Utils::Fetcher::ContentNotFetchedError => e
|
36
|
-
|
35
|
+
message = 'Could not download the archiv.html (Maybe the URL changed?)'
|
36
|
+
raise e, message + "\n=> Original error: #{e.message}", e.backtrace
|
37
37
|
end
|
38
38
|
|
39
39
|
def magazines_for_year(year)
|
40
40
|
@magazines[year] ||= parse_magazines_for_year(year)
|
41
41
|
end
|
42
42
|
|
43
|
-
def magazine_for(month
|
43
|
+
def magazine_for(month, year)
|
44
44
|
magazines_for_year(year)[month]
|
45
45
|
end
|
46
46
|
|
47
|
-
private
|
48
|
-
|
49
47
|
def document
|
50
48
|
@document ||= Nokogiri::HTML(html)
|
51
49
|
end
|
@@ -67,7 +65,7 @@ module BrandEins
|
|
67
65
|
|
68
66
|
def extract_magazine_month(figure)
|
69
67
|
meta = figure.css('.meta').first
|
70
|
-
meta.text.match(/(?:.+)(\d{2})\/(?:.+)/)
|
68
|
+
meta.text.match(/(?:.+)(\d{2})\/(?:.+)/) and $+.to_i
|
71
69
|
end
|
72
70
|
|
73
71
|
def brandeins_url
|
@@ -7,6 +7,7 @@ require_relative '../utils/fetcher'
|
|
7
7
|
|
8
8
|
module BrandEins
|
9
9
|
module Pages
|
10
|
+
# Represents the magazine cover
|
10
11
|
class Cover
|
11
12
|
|
12
13
|
def initialize(magazine)
|
@@ -23,7 +24,7 @@ module BrandEins
|
|
23
24
|
|
24
25
|
def to_pdf
|
25
26
|
cover_image = download_cover_image
|
26
|
-
|
27
|
+
create_cover_pdf(cover_image)
|
27
28
|
end
|
28
29
|
|
29
30
|
def download_cover_image
|
@@ -47,7 +48,6 @@ module BrandEins
|
|
47
48
|
return cover_file_path if File.exists? cover_file_path
|
48
49
|
File.binwrite(cover_file_path, to_pdf)
|
49
50
|
cover_file_path
|
50
|
-
rescue BrandEins::Utils::Fetcher::ContentNotFetchedError => e
|
51
51
|
end
|
52
52
|
|
53
53
|
def cover_file_path_for_path(path)
|
@@ -1,6 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
require 'english'
|
4
3
|
require 'nokogiri'
|
5
4
|
|
6
5
|
require_relative '../config'
|
@@ -25,9 +24,7 @@ module BrandEins
|
|
25
24
|
class Magazine
|
26
25
|
|
27
26
|
def initialize(opts = {})
|
28
|
-
if opts.is_a? String
|
29
|
-
opts = { html: opts }
|
30
|
-
end
|
27
|
+
opts = { html: opts } if opts.is_a? String
|
31
28
|
@html = opts[:html]
|
32
29
|
@url = opts[:url]
|
33
30
|
end
|
@@ -92,20 +89,16 @@ module BrandEins
|
|
92
89
|
end
|
93
90
|
|
94
91
|
def parse_year
|
95
|
-
|
96
|
-
$LAST_PAREN_MATCH.to_i
|
97
|
-
end
|
92
|
+
issue_text.match(/Ausgabe (?:.+)\/(.+)/) and $+.to_i
|
98
93
|
end
|
99
94
|
|
100
95
|
def parse_month
|
101
|
-
|
102
|
-
$LAST_PAREN_MATCH.to_i
|
103
|
-
end
|
96
|
+
issue_text.match(/Ausgabe (.+)\/(?:.+)/) and $+.to_i
|
104
97
|
end
|
105
98
|
|
106
99
|
def issue_text
|
107
100
|
node = document.css('.current-issue h3').last
|
108
|
-
|
101
|
+
node.children.first.text
|
109
102
|
end
|
110
103
|
|
111
104
|
def parse_url
|
@@ -132,12 +125,12 @@ module BrandEins
|
|
132
125
|
def file_path_for_pdf(path, pdf_url)
|
133
126
|
target_path = Pathname.new(path)
|
134
127
|
target_path.mkpath
|
135
|
-
|
128
|
+
target_path + file_name_for_pdf_url(pdf_url)
|
136
129
|
end
|
137
130
|
|
138
131
|
def file_name_for_pdf_url(pdf_url)
|
139
|
-
uri_path
|
140
|
-
|
132
|
+
uri_path = URI(pdf_url).path
|
133
|
+
File.basename(uri_path)
|
141
134
|
end
|
142
135
|
|
143
136
|
def cli
|
@@ -1,40 +1,51 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require 'ostruct'
|
2
4
|
|
3
5
|
module BrandEins
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
6
|
+
module Utils
|
7
|
+
# Used to parse Cli input
|
8
|
+
class CliOptionParser
|
9
|
+
def self.parse(args = ARGV)
|
10
|
+
options = OpenStruct.new
|
11
|
+
options.cmd = args.first
|
12
|
+
opt_parser = parser(options)
|
13
|
+
opt_parser.parse!(args)
|
14
|
+
options
|
15
|
+
end
|
14
16
|
|
15
|
-
|
16
|
-
|
17
|
-
|
17
|
+
def self.parser(options = {})
|
18
|
+
@@parser ||= begin
|
19
|
+
OptionParser.new do |opts|
|
20
|
+
opts.banner = 'Usage: brandeins download --path ~/Documents --month n --year n'
|
21
|
+
opts.separator ''
|
18
22
|
|
19
|
-
|
20
|
-
|
21
|
-
|
23
|
+
opts.on('-m MONTH', '--month month', Integer, 'The publication month of the magazine. E.g. for may: "5"') do |month|
|
24
|
+
options.month = month
|
25
|
+
end
|
22
26
|
|
23
|
-
|
24
|
-
|
25
|
-
|
27
|
+
opts.on('-y YEAR', '--year YEAR', Integer, "The publication year of the magazine. E.g. the current year '#{Time.now.year}'") do |year|
|
28
|
+
options.year = year
|
29
|
+
end
|
26
30
|
|
27
|
-
|
28
|
-
|
29
|
-
|
31
|
+
opts.on('--path [PATH]', 'The path where to download the magazine to. Default is the current directory.') do |path|
|
32
|
+
options.path = File.expand_path(path)
|
33
|
+
end
|
34
|
+
|
35
|
+
opts.on('-h', '--help', 'Show this message') do |help|
|
36
|
+
options.cmd = help
|
37
|
+
end
|
30
38
|
|
31
|
-
|
32
|
-
|
39
|
+
opts.on('-v', '--verbose', 'Be verbose') do |verbose|
|
40
|
+
options.verbose = verbose
|
41
|
+
end
|
42
|
+
|
43
|
+
opts.on('--version', 'Show the version') do |version|
|
44
|
+
options.cmd = version
|
45
|
+
end
|
46
|
+
end
|
33
47
|
end
|
34
48
|
end
|
35
|
-
|
36
|
-
opt_parser.parse!(args)
|
37
|
-
options
|
38
49
|
end
|
39
50
|
end
|
40
51
|
end
|
@@ -12,6 +12,7 @@ require_relative 'cli_output'
|
|
12
12
|
module BrandEins
|
13
13
|
module Utils
|
14
14
|
|
15
|
+
# Used as a centralized resource fetcher with a caching mechanism
|
15
16
|
class Fetcher
|
16
17
|
include Singleton
|
17
18
|
|
@@ -86,7 +87,10 @@ module BrandEins
|
|
86
87
|
end
|
87
88
|
|
88
89
|
def cache_size_in_bytes
|
89
|
-
cache_files.reduce(0)
|
90
|
+
cache_files.reduce(0) do |sum, (file, _)|
|
91
|
+
next unless file
|
92
|
+
sum += File.size?(file) || 0
|
93
|
+
end
|
90
94
|
end
|
91
95
|
|
92
96
|
def remove_oldest_cache_file
|
@@ -103,7 +107,13 @@ module BrandEins
|
|
103
107
|
end
|
104
108
|
|
105
109
|
def cache_files
|
106
|
-
@cache_files ||=
|
110
|
+
@cache_files ||= begin
|
111
|
+
files = Dir[cache_path + './*']
|
112
|
+
files_with_mtime = files.map do |file_path|
|
113
|
+
[file_path, File.mtime(file_path)]
|
114
|
+
end
|
115
|
+
Hash[files_with_mtime]
|
116
|
+
end
|
107
117
|
end
|
108
118
|
|
109
119
|
def cli
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require 'singleton'
|
2
4
|
require 'prawn'
|
3
5
|
|
@@ -5,12 +7,10 @@ require_relative './cli_output'
|
|
5
7
|
|
6
8
|
module BrandEins
|
7
9
|
module Utils
|
10
|
+
# Testing Prawn for merging pdfs
|
8
11
|
class Merger
|
9
12
|
include Singleton
|
10
13
|
|
11
|
-
def initialize
|
12
|
-
end
|
13
|
-
|
14
14
|
def merge_pdf_files(pdf_file_paths, target_pdf)
|
15
15
|
cli.info "Merging pdf files to: #{target_pdf}" do
|
16
16
|
Prawn::Document.generate(target_pdf, pdf_options) do |pdf|
|
data/lib/brandeins/version.rb
CHANGED
@@ -31,7 +31,7 @@ describe BrandEins::Kiosk do
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
-
describe '#fetch_magazine(
|
34
|
+
describe '#fetch_magazine(1, 2013)' do
|
35
35
|
it 'returns a magzine object' do
|
36
36
|
archive_html = load_fixture 'archive.html'
|
37
37
|
stub_request(:get, BrandEins::Config['archive_uri']).
|
@@ -59,7 +59,7 @@ describe BrandEins::Kiosk do
|
|
59
59
|
|
60
60
|
|
61
61
|
kiosk = BrandEins::Kiosk.new
|
62
|
-
magazine = kiosk.fetch_magazine(
|
62
|
+
magazine = kiosk.fetch_magazine(1, 2013)
|
63
63
|
expect(magazine).to be_a BrandEins::Pages::Magazine
|
64
64
|
end
|
65
65
|
end
|
@@ -6,7 +6,7 @@ require_lib 'brandeins/pages/archive'
|
|
6
6
|
|
7
7
|
describe BrandEins::Pages::Archive do
|
8
8
|
|
9
|
-
describe 'magazine_for(
|
9
|
+
describe 'magazine_for(1, 2000)' do
|
10
10
|
it 'returns the magazine for a given month and year' do
|
11
11
|
archive_html = load_fixture 'archive.html'
|
12
12
|
archive = BrandEins::Pages::Archive.new(html: archive_html)
|
@@ -23,7 +23,7 @@ describe BrandEins::Pages::Archive do
|
|
23
23
|
stub_request(:get, 'http://www.brandeins.de/archiv/2013/neugier/ein-schauspieler-in-daenemark.html').
|
24
24
|
to_return(status: 200, body: article_daenemark_html)
|
25
25
|
|
26
|
-
magazine = archive.magazine_for(
|
26
|
+
magazine = archive.magazine_for(1, 2013)
|
27
27
|
|
28
28
|
expect(magazine.url).to eq 'http://www.brandeins.de/archiv/2013/neugier.html'
|
29
29
|
expect(magazine.title).to eq 'Neugier'
|
data/spec/lib/brandeins_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brandeins
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.0
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gregory Igelmund
|
@@ -92,7 +92,6 @@ files:
|
|
92
92
|
- lib/brandeins/utils/fetcher.rb
|
93
93
|
- lib/brandeins/utils/merger.rb
|
94
94
|
- lib/brandeins/version.rb
|
95
|
-
- rubocop-todo.yml
|
96
95
|
- spec/lib/brandeins/kiosk_spec.rb
|
97
96
|
- spec/lib/brandeins/pages/archive_spec.rb
|
98
97
|
- spec/lib/brandeins/pages/article_spec.rb
|
@@ -127,9 +126,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
127
126
|
version: '0'
|
128
127
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
128
|
requirements:
|
130
|
-
- - '
|
129
|
+
- - '>='
|
131
130
|
- !ruby/object:Gem::Version
|
132
|
-
version:
|
131
|
+
version: '0'
|
133
132
|
requirements: []
|
134
133
|
rubyforge_project:
|
135
134
|
rubygems_version: 2.1.11
|
data/rubocop-todo.yml
DELETED
@@ -1,141 +0,0 @@
|
|
1
|
-
# This configuration was generated by `rubocop --auto-gen-config`.
|
2
|
-
# The point is for the user to remove these configuration records
|
3
|
-
# one by one as the offences are removed from the code base.
|
4
|
-
|
5
|
-
AccessControl:
|
6
|
-
Enabled: false
|
7
|
-
|
8
|
-
AlignParameters:
|
9
|
-
Enabled: false
|
10
|
-
|
11
|
-
AndOr:
|
12
|
-
Enabled: false
|
13
|
-
|
14
|
-
AssignmentInCondition:
|
15
|
-
Enabled: false
|
16
|
-
|
17
|
-
AvoidClassVars:
|
18
|
-
Enabled: false
|
19
|
-
|
20
|
-
AvoidFor:
|
21
|
-
Enabled: false
|
22
|
-
|
23
|
-
AvoidPerlBackrefs:
|
24
|
-
Enabled: false
|
25
|
-
|
26
|
-
BlockAlignment:
|
27
|
-
Enabled: false
|
28
|
-
|
29
|
-
BlockNesting:
|
30
|
-
Enabled: false
|
31
|
-
|
32
|
-
Blocks:
|
33
|
-
Enabled: false
|
34
|
-
|
35
|
-
CaseEquality:
|
36
|
-
Enabled: false
|
37
|
-
|
38
|
-
CaseIndentation:
|
39
|
-
Enabled: false
|
40
|
-
|
41
|
-
CollectionMethods:
|
42
|
-
Enabled: false
|
43
|
-
|
44
|
-
Documentation:
|
45
|
-
Enabled: false
|
46
|
-
|
47
|
-
EmptyLineBetweenDefs:
|
48
|
-
Enabled: false
|
49
|
-
|
50
|
-
EmptyLines:
|
51
|
-
Enabled: false
|
52
|
-
|
53
|
-
EmptyLiteral:
|
54
|
-
Enabled: false
|
55
|
-
|
56
|
-
FavorUnlessOverNegatedIf:
|
57
|
-
Enabled: false
|
58
|
-
|
59
|
-
HashSyntax:
|
60
|
-
Enabled: false
|
61
|
-
|
62
|
-
IfUnlessModifier:
|
63
|
-
Enabled: false
|
64
|
-
|
65
|
-
LeadingCommentSpace:
|
66
|
-
Enabled: false
|
67
|
-
|
68
|
-
LineLength:
|
69
|
-
Enabled: false
|
70
|
-
|
71
|
-
LiteralInCondition:
|
72
|
-
Enabled: false
|
73
|
-
|
74
|
-
MethodLength:
|
75
|
-
Enabled: false
|
76
|
-
|
77
|
-
MultilineTernaryOperator:
|
78
|
-
Enabled: false
|
79
|
-
|
80
|
-
NumericLiterals:
|
81
|
-
Enabled: false
|
82
|
-
|
83
|
-
ParenthesesAroundCondition:
|
84
|
-
Enabled: false
|
85
|
-
|
86
|
-
RedundantReturn:
|
87
|
-
Enabled: false
|
88
|
-
|
89
|
-
RedundantSelf:
|
90
|
-
Enabled: false
|
91
|
-
|
92
|
-
RescueException:
|
93
|
-
Enabled: false
|
94
|
-
|
95
|
-
Semicolon:
|
96
|
-
Enabled: false
|
97
|
-
|
98
|
-
ShadowingOuterLocalVariable:
|
99
|
-
Enabled: false
|
100
|
-
|
101
|
-
SingleLineMethods:
|
102
|
-
Enabled: false
|
103
|
-
|
104
|
-
SpaceAfterComma:
|
105
|
-
Enabled: false
|
106
|
-
|
107
|
-
SpaceAroundBraces:
|
108
|
-
Enabled: false
|
109
|
-
|
110
|
-
SpaceAroundEqualsInParameterDefault:
|
111
|
-
Enabled: false
|
112
|
-
|
113
|
-
SpaceAroundOperators:
|
114
|
-
Enabled: false
|
115
|
-
|
116
|
-
SpaceInsideBrackets:
|
117
|
-
Enabled: false
|
118
|
-
|
119
|
-
SpaceInsideParens:
|
120
|
-
Enabled: false
|
121
|
-
|
122
|
-
StringLiterals:
|
123
|
-
Enabled: false
|
124
|
-
|
125
|
-
Syntax:
|
126
|
-
Enabled: false
|
127
|
-
|
128
|
-
TrailingWhitespace:
|
129
|
-
Enabled: false
|
130
|
-
|
131
|
-
UnlessElse:
|
132
|
-
Enabled: false
|
133
|
-
|
134
|
-
UnusedLocalVariable:
|
135
|
-
Enabled: false
|
136
|
-
|
137
|
-
UselessAssignment:
|
138
|
-
Enabled: false
|
139
|
-
|
140
|
-
WordArray:
|
141
|
-
Enabled: false
|