epuber 0.9.2 → 0.9.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b94e989f6c4461b34fe954d6d60a7b09c573f1c53281bcab8ce0014b2311a47f
4
- data.tar.gz: 12c22458537652c184dd1fdc054faa2cbb26d161cfbd6ed4ec45fe2ecd49c430
3
+ metadata.gz: cdced1dd2ebd0dc9d67e06757560ed5acd26d93303db343b53985b3c7aeebe20
4
+ data.tar.gz: e979d0957ff1a554bc4f29cb4e2bbe6cd0a113a83a42ed46a6e80c8f049e8008
5
5
  SHA512:
6
- metadata.gz: ee04850fd4bcc3d2ce2ed97f4c9f14356b7dfffa25bac2decb4cf079ed8eeefc797cacb5ca891930d7da97c910d714bc1074e259b3afc4452b3af74b5753adbc
7
- data.tar.gz: da0f454494fbe9964f71f0a3ca74aca9c586c4132846b6980c1f58f3499b0f7183164c31bda542698ff6ac1db1e7daa9b8077be83114c5f0bf10b6de1a062892
6
+ metadata.gz: b2ea5b2448b893e8c1c6cb47d4868cdfcd8e16aefeb54733c880c686107439ba51ec50aa89f0f571b6322998d5fe1d4862d4b8a4e78df003fbe4d1d849ebcbc9
7
+ data.tar.gz: 6492a8277ff6d0179a5fd91e3758cc0edc5ff73faf584237336395a52d151654a7c451085ddde6e40532010b3e6d5f9046a3f058237c7879b6da184141b63877
@@ -36,19 +36,19 @@ module Epuber
36
36
  attr_reader :destination_path
37
37
 
38
38
 
39
- # @return [Array<FileTypes::Abstract>] all files that will be in spine
39
+ # @return [Array<Epuber::Compiler::FileTypes::AbstractFile>] all files that will be in spine
40
40
  #
41
41
  attr_reader :spine_files
42
42
 
43
- # @return [Array<FileTypes::Abstract>] all files that has to be in manifest file (OPF)
43
+ # @return [Array<Epuber::Compiler::FileTypes::AbstractFile>] all files that has to be in manifest file (OPF)
44
44
  #
45
45
  attr_reader :manifest_files
46
46
 
47
- # @return [Array<FileTypes::Abstract>] all files that will be copied to EPUB package
47
+ # @return [Array<Epuber::Compiler::FileTypes::AbstractFile>] all files that will be copied to EPUB package
48
48
  #
49
49
  attr_reader :package_files
50
50
 
51
- # @return [Array<FileTypes::Abstract>] totally all files
51
+ # @return [Array<Epuber::Compiler::FileTypes::AbstractFile>] totally all files
52
52
  #
53
53
  attr_reader :files
54
54
 
@@ -27,9 +27,12 @@ module Epuber
27
27
  # @param [Compiler::CompilationContext] compilation_context
28
28
  #
29
29
  def process(compilation_context)
30
- return if destination_file_up_to_date?
31
-
32
- write_processed(process_css(File.read(abs_source_path), compilation_context))
30
+ if destination_file_up_to_date?
31
+ # HACK: for now, we need to process the file again, because we need to find linked files
32
+ process_css(File.read(final_destination_path), compilation_context)
33
+ else
34
+ write_processed(process_css(File.read(abs_source_path), compilation_context))
35
+ end
33
36
  end
34
37
 
35
38
  # Processes CSS file, resolves all linked files and adds them to file resolver
@@ -49,8 +52,10 @@ module Epuber
49
52
  # resolve links to files, add other linked resources and compute correct path
50
53
  UI.print_step_processing_time('resolving url()') do
51
54
  parser.each_rule_set do |rule_set, _media_types|
55
+ # @type [CssParser::RuleSet::Declarations]
52
56
  declarations = rule_set.instance_eval { @declarations }
53
57
  declarations.each do |property, decl_value|
58
+ # @type [String]
54
59
  value = decl_value.to_s
55
60
  next unless value =~ URL_REGEXP
56
61
 
@@ -70,8 +75,10 @@ module Epuber
70
75
  new_url = SourceFile.resolve_relative_file(destination_path,
71
76
  path,
72
77
  compilation_context.file_resolver,
73
- group: resource_group)
74
- content = content.gsub(value, "url(#{quote}#{new_url}#{quote})")
78
+ group: resource_group,
79
+ location: self)
80
+
81
+ content = content.gsub(value, "url(#{quote}#{new_url}#{quote})") if new_url
75
82
  end
76
83
  end
77
84
  end
@@ -36,6 +36,12 @@ module Epuber
36
36
  # do nothing
37
37
  end
38
38
 
39
+ # @return [Set<Symbol>] list of properties
40
+ #
41
+ def properties
42
+ file_request&.properties || super
43
+ end
44
+
39
45
  # Source file does not change from last build
40
46
  # @warning Using only this method can cause not updating files that are different for targets
41
47
  #
@@ -113,7 +119,7 @@ module Epuber
113
119
  end
114
120
  end
115
121
 
116
- def self.resolve_relative_file(destination_path, pattern, file_resolver, group: nil)
122
+ def self.resolve_relative_file(destination_path, pattern, file_resolver, group: nil, location: nil)
117
123
  dirname = File.dirname(destination_path)
118
124
 
119
125
  begin
@@ -127,7 +133,8 @@ module Epuber
127
133
  rescue XHTMLProcessor::UnparseableLinkError,
128
134
  FileFinders::FileNotFoundError,
129
135
  FileFinders::MultipleFilesFoundError => e
130
- UI.warning(e.to_s, location: img)
136
+ UI.warning(e.to_s, location: location)
137
+ return nil
131
138
  end
132
139
  end
133
140
 
@@ -11,7 +11,11 @@ module Epuber
11
11
  # @param [Compiler::CompilationContext] compilation_context
12
12
  #
13
13
  def process(compilation_context)
14
- return if destination_file_up_to_date?
14
+ if destination_file_up_to_date?
15
+ # HACK: for now, we need to process the file again, because we need to find linked files
16
+ process_css(File.read(final_destination_path), compilation_context)
17
+ return
18
+ end
15
19
 
16
20
  Stylus.define('__is_debug', !compilation_context.release_build)
17
21
  Stylus.define('__is_verbose_mode', compilation_context.verbose?)
@@ -126,7 +126,10 @@ module Epuber
126
126
  cover_image = @target.cover_image
127
127
  unless cover_image.nil?
128
128
  cover_image_result = @file_resolver.file_from_request(cover_image)
129
- @xml.meta(name: 'cover', content: create_id_from_path(pretty_path(cover_image_result)))
129
+ if cover_image_result
130
+ @xml.meta(name: 'cover',
131
+ content: create_id_from_path(pretty_path(cover_image_result)))
132
+ end
130
133
  end
131
134
 
132
135
  if epub_version >= 3
@@ -164,8 +167,11 @@ module Epuber
164
167
 
165
168
  properties = file.properties
166
169
  if properties.length.positive? && @target.epub_version >= 3
167
- pretty_properties = properties.to_a.map { |property| PROPERTIES_MAP[property] }.join(' ')
168
- attrs['properties'] = pretty_properties
170
+ formatted = properties.to_a
171
+ .map { |prop| PROPERTIES_MAP[prop] }
172
+ .compact
173
+ .join(' ')
174
+ attrs['properties'] = formatted unless formatted.empty?
169
175
  end
170
176
 
171
177
  @xml.item(attrs)
@@ -351,7 +351,8 @@ module Epuber
351
351
  new_path = Compiler::FileTypes::SourceFile.resolve_relative_file(file_path,
352
352
  path,
353
353
  file_resolver,
354
- group: resource_group)
354
+ group: resource_group,
355
+ location: img)
355
356
  img[attribute_name] = new_path if new_path
356
357
  end
357
358
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Epuber
4
- VERSION = '0.9.2'
4
+ VERSION = '0.9.4'
5
5
 
6
6
  HOME_URL = 'https://github.com/epuber-io/epuber'
7
7
  end
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.9.2
4
+ version: 0.9.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roman Kříž
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-02-14 00:00:00.000000000 Z
11
+ date: 2024-05-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -594,7 +594,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
594
594
  - !ruby/object:Gem::Version
595
595
  version: '0'
596
596
  requirements: []
597
- rubygems_version: 3.5.6
597
+ rubygems_version: 3.5.10
598
598
  signing_key:
599
599
  specification_version: 4
600
600
  summary: Epuber is simple tool to compile and pack source files into EPUB format.