epuber 0.3.7 → 0.3.9
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/epuber.gemspec +1 -0
- data/lib/epuber/command/compile.rb +2 -0
- data/lib/epuber/command/server.rb +11 -6
- data/lib/epuber/command.rb +8 -0
- data/lib/epuber/compiler/file_finders/abstract.rb +6 -4
- data/lib/epuber/compiler/file_finders/imaginary.rb +20 -12
- data/lib/epuber/compiler/file_types/xhtml_file.rb +1 -0
- data/lib/epuber/compiler/opf_generator.rb +1 -0
- data/lib/epuber/compiler/xhtml_processor.rb +9 -0
- data/lib/epuber/config.rb +0 -8
- data/lib/epuber/user_interface.rb +1 -1
- data/lib/epuber/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aeafa25a224668d8a2921e09e38b2cccf3ef5304
|
4
|
+
data.tar.gz: ace5b8bd2c4433cc0f3e1332bf908643c8d2e64d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8ff682097d6ca7ff9a2a92a98d9c47aacfaf7ab9666a3ab2257a5f0cd86c99fa8670e806f9e88a93419a4b624306039e383df9a2a791458db57e57960ff40f53
|
7
|
+
data.tar.gz: e66dda4964520cd025f27c9f3140186df77d9d68a08b14313bb1ffc778125764eabe9ac0d496e4810b2af87ea8ea0f6dc0ae377a6362077e8bc9926aec49c6ed
|
data/epuber.gemspec
CHANGED
@@ -14,6 +14,7 @@ Gem::Specification.new do |spec|
|
|
14
14
|
spec.summary = 'Epuber is simple tool to compile and pack source files into EPUB format.'
|
15
15
|
spec.homepage = 'https://github.com/epuber-io/epuber'
|
16
16
|
spec.license = 'MIT'
|
17
|
+
spec.required_ruby_version = '>= 2.0'
|
17
18
|
|
18
19
|
spec.files = Dir['bin/**/*'] + Dir['lib/**/*'] + %w(epuber.gemspec Gemfile LICENSE.txt README.md)
|
19
20
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
@@ -44,14 +44,19 @@ module Epuber
|
|
44
44
|
|
45
45
|
help!('Not existing target') if target.nil?
|
46
46
|
|
47
|
-
|
48
|
-
|
49
|
-
if
|
50
|
-
|
51
|
-
|
52
|
-
|
47
|
+
begin
|
48
|
+
Epuber::Server.run!(book, target, verbose: verbose?) do |uri|
|
49
|
+
if OS.osx?
|
50
|
+
if @open_web_browser
|
51
|
+
system "open #{uri}"
|
52
|
+
else
|
53
|
+
puts 'Web browser can be automatically opened by adding --open flag, see --help'
|
54
|
+
end
|
53
55
|
end
|
54
56
|
end
|
57
|
+
rescue Interrupt
|
58
|
+
write_lockfile
|
59
|
+
raise
|
55
60
|
end
|
56
61
|
end
|
57
62
|
end
|
data/lib/epuber/command.rb
CHANGED
@@ -28,6 +28,8 @@ module Epuber
|
|
28
28
|
super
|
29
29
|
UI.current_command = nil
|
30
30
|
|
31
|
+
rescue Interrupt
|
32
|
+
UI.error('[!] Cancelled')
|
31
33
|
rescue => e
|
32
34
|
UI.error!(e)
|
33
35
|
|
@@ -61,5 +63,11 @@ module Epuber
|
|
61
63
|
raise PlainInformative, "No `.bookspec' found in the project directory." if bookspec_files.empty?
|
62
64
|
raise PlainInformative, "Multiple `.bookspec' found in current directory" if bookspec_files.count > 1
|
63
65
|
end
|
66
|
+
|
67
|
+
def write_lockfile
|
68
|
+
unless Epuber::Config.test?
|
69
|
+
Epuber::Config.instance.save_lockfile
|
70
|
+
end
|
71
|
+
end
|
64
72
|
end
|
65
73
|
end
|
@@ -43,20 +43,20 @@ module Epuber
|
|
43
43
|
attr_reader :context_path
|
44
44
|
|
45
45
|
# @param [String] pattern original pattern for searching
|
46
|
-
# @param [Symbol] groups list of groups
|
46
|
+
# @param [Array<Symbol> | Symbol] groups list of groups
|
47
47
|
# @param [String] context_path context path of current searching
|
48
48
|
# @param [Array<String>] files_paths list of founded files
|
49
49
|
#
|
50
50
|
def initialize(pattern, groups, context_path, files_paths)
|
51
51
|
@pattern = pattern
|
52
|
-
@groups = groups
|
52
|
+
@groups = Array(groups)
|
53
53
|
@context_path = context_path
|
54
54
|
@files_paths = files_paths
|
55
55
|
end
|
56
56
|
|
57
57
|
def to_s
|
58
58
|
str = "Found too many files for pattern `#{pattern}` from context path #{context_path}"
|
59
|
-
str += ", file groups #{groups.map(
|
59
|
+
str += ", file groups #{groups.map(&:inspect)}" if !groups.nil? && !groups.empty?
|
60
60
|
str + ", founded files #{files_paths}"
|
61
61
|
end
|
62
62
|
end
|
@@ -98,6 +98,8 @@ module Epuber
|
|
98
98
|
end
|
99
99
|
|
100
100
|
|
101
|
+
# @param [Array<Symbol> | Symbol] groups
|
102
|
+
#
|
101
103
|
def assert_one_file(files, pattern: nil, groups: nil, context_path: nil)
|
102
104
|
raise FileNotFoundError.new(pattern, context_path) if files.empty?
|
103
105
|
raise MultipleFilesFoundError.new(pattern, groups, context_path, files) if files.count >= 2
|
@@ -109,7 +111,7 @@ module Epuber
|
|
109
111
|
# When it founds too many (more than two) it will raise MultipleFilesFoundError
|
110
112
|
#
|
111
113
|
# @param [String] pattern pattern of the desired files
|
112
|
-
# @param [Symbol] groups list of group names, nil or empty array for all groups, for valid values see GROUP_EXTENSIONS
|
114
|
+
# @param [Array<Symbol> | Symbol] groups list of group names, nil or empty array for all groups, for valid values see GROUP_EXTENSIONS
|
113
115
|
# @param [String] context_path path for root of searching, it is also defines start folder of relative path
|
114
116
|
#
|
115
117
|
# @return [Array<String>] list of founded files
|
@@ -86,7 +86,9 @@ module Epuber
|
|
86
86
|
|
87
87
|
def __core_find_files_from_pattern(pattern)
|
88
88
|
parts = self.class.path_parts(pattern)
|
89
|
-
find_recurser(root, parts).flatten
|
89
|
+
found_entries = find_recurser(root, parts).flatten
|
90
|
+
file_entries = found_entries.reject { |entry| entry.is_a?(DirEntry) }
|
91
|
+
file_entries.map do |item|
|
90
92
|
item.absolute_path
|
91
93
|
end
|
92
94
|
end
|
@@ -112,6 +114,8 @@ module Epuber
|
|
112
114
|
return [] unless dir.respond_to? :[]
|
113
115
|
|
114
116
|
pattern, *parts = parts
|
117
|
+
return [] if pattern.nil?
|
118
|
+
|
115
119
|
matches = case pattern
|
116
120
|
when '**'
|
117
121
|
case parts
|
@@ -125,20 +129,12 @@ module Epuber
|
|
125
129
|
end.flatten.uniq
|
126
130
|
when []
|
127
131
|
parts = [] # end recursion
|
128
|
-
dir.entries.flatten.uniq
|
132
|
+
dir.entries.values.flatten.uniq
|
129
133
|
else
|
130
134
|
directories_under(dir)
|
131
135
|
end
|
132
136
|
else
|
133
|
-
regex_body = pattern
|
134
|
-
.gsub('?', '.')
|
135
|
-
.gsub('*', '.*')
|
136
|
-
.gsub('(', '\(')
|
137
|
-
.gsub(')', '\)')
|
138
|
-
.gsub(/\{(.*?)\}/) do
|
139
|
-
"(#{Regexp.last_match[1].gsub(',', '|')})"
|
140
|
-
end
|
141
|
-
.gsub(/\A\./, '(?!\.).')
|
137
|
+
regex_body = pattern_to_regex(pattern)
|
142
138
|
dir.entries.reject { |k, _v| /\A#{regex_body}\Z/ !~ k }.values
|
143
139
|
end
|
144
140
|
|
@@ -151,12 +147,24 @@ module Epuber
|
|
151
147
|
|
152
148
|
# @param [DirEntry] dir
|
153
149
|
#
|
154
|
-
# @return [
|
150
|
+
# @return [Array<DirEntry>]
|
155
151
|
#
|
156
152
|
def directories_under(dir)
|
157
153
|
children = dir.entries.values.select { |f| f.is_a?(DirEntry) }
|
158
154
|
(Array(dir) + children + children.map { |c| directories_under(c) }).flatten.uniq
|
159
155
|
end
|
156
|
+
|
157
|
+
def pattern_to_regex(pattern)
|
158
|
+
pattern.gsub('.', '\.')
|
159
|
+
.gsub('?', '.')
|
160
|
+
.gsub('*', '.*')
|
161
|
+
.gsub('(', '\(')
|
162
|
+
.gsub(')', '\)')
|
163
|
+
.gsub(/\{(.*?)\}/) do
|
164
|
+
"(#{Regexp.last_match[1].gsub(',', '|')})"
|
165
|
+
end
|
166
|
+
.gsub(/\A\./, '(?!\.).')
|
167
|
+
end
|
160
168
|
end
|
161
169
|
end
|
162
170
|
end
|
@@ -70,6 +70,7 @@ module Epuber
|
|
70
70
|
|
71
71
|
XHTMLProcessor.add_viewport(xhtml_doc, target.default_viewport) unless target.default_viewport.nil?
|
72
72
|
self.properties << :scripted if XHTMLProcessor.using_javascript?(xhtml_doc)
|
73
|
+
self.properties << :remote_resources if XHTMLProcessor.using_remote_resources?(xhtml_doc)
|
73
74
|
|
74
75
|
XHTMLProcessor.resolve_links(xhtml_doc, destination_path, file_resolver.dest_finder)
|
75
76
|
XHTMLProcessor.resolve_images(xhtml_doc, destination_path, file_resolver)
|
@@ -213,6 +213,15 @@ module Epuber
|
|
213
213
|
!xhtml_doc.at_css('script').nil?
|
214
214
|
end
|
215
215
|
|
216
|
+
def self.using_remote_resources?(xhtml_doc)
|
217
|
+
regexp = %r{^[^:/?#]+://.*}
|
218
|
+
|
219
|
+
result = false
|
220
|
+
result ||= xhtml_doc.css('[src]').any? { |node| node['src'] =~ regexp }
|
221
|
+
result ||= xhtml_doc.css('link[href]').any? { |node| node['href'] =~ regexp }
|
222
|
+
result
|
223
|
+
end
|
224
|
+
|
216
225
|
# @param [Nokogiri::XML::Document] xhtml_doc
|
217
226
|
# @param [String] file_path path of referring file
|
218
227
|
# @param [FileResolver] file_resolver
|
data/lib/epuber/config.rb
CHANGED
@@ -36,7 +36,7 @@ module Epuber
|
|
36
36
|
$stdout.puts unless @last_processing_file_line.nil?
|
37
37
|
|
38
38
|
$stdout.puts(_format_message(:error, message, location: location))
|
39
|
-
_print_backtrace(location.try(:backtrace_locations) || message.try(:backtrace_locations) || caller_locations, location: location) if current_command.verbose?
|
39
|
+
_print_backtrace(location.try(:backtrace_locations) || message.try(:backtrace_locations) || caller_locations, location: location) if current_command && current_command.verbose?
|
40
40
|
end
|
41
41
|
|
42
42
|
# @param [String] message message of the error
|
data/lib/epuber/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: epuber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roman Kříž
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -541,7 +541,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
541
541
|
requirements:
|
542
542
|
- - ">="
|
543
543
|
- !ruby/object:Gem::Version
|
544
|
-
version: '0'
|
544
|
+
version: '2.0'
|
545
545
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
546
546
|
requirements:
|
547
547
|
- - ">="
|