epuber 0.8.0 → 0.9.1
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/Gemfile +9 -0
- data/LICENSE.txt +1 -1
- data/README.md +2 -2
- data/epuber.gemspec +3 -6
- data/lib/epuber/book/contributor.rb +10 -6
- data/lib/epuber/book/file_request.rb +2 -2
- data/lib/epuber/book/target.rb +10 -10
- data/lib/epuber/book.rb +2 -2
- data/lib/epuber/checker/text_checker.rb +14 -6
- data/lib/epuber/checker_transformer_base.rb +1 -1
- data/lib/epuber/command/build.rb +6 -1
- data/lib/epuber/command/from_file.rb +39 -0
- data/lib/epuber/command/init.rb +11 -9
- data/lib/epuber/command/server.rb +1 -1
- data/lib/epuber/command.rb +1 -0
- data/lib/epuber/compiler/file_database.rb +2 -2
- data/lib/epuber/compiler/file_finders/abstract.rb +3 -3
- data/lib/epuber/compiler/file_resolver.rb +3 -2
- data/lib/epuber/compiler/file_types/abstract_file.rb +1 -3
- data/lib/epuber/compiler/file_types/bade_file.rb +9 -9
- data/lib/epuber/compiler/file_types/css_file.rb +84 -0
- data/lib/epuber/compiler/file_types/source_file.rb +31 -0
- data/lib/epuber/compiler/file_types/stylus_file.rb +4 -3
- data/lib/epuber/compiler/nav_generator.rb +5 -5
- data/lib/epuber/compiler/opf_generator.rb +4 -4
- data/lib/epuber/compiler/xhtml_processor.rb +7 -25
- data/lib/epuber/compiler.rb +12 -7
- data/lib/epuber/config.rb +3 -3
- data/lib/epuber/dsl/attribute.rb +1 -1
- data/lib/epuber/dsl/attribute_support.rb +4 -4
- data/lib/epuber/dsl/object.rb +2 -2
- data/lib/epuber/from_file/bookspec_generator.rb +371 -0
- data/lib/epuber/from_file/encryption_handler.rb +146 -0
- data/lib/epuber/from_file/from_file_executor.rb +140 -0
- data/lib/epuber/from_file/nav_file.rb +163 -0
- data/lib/epuber/from_file/opf_file.rb +219 -0
- data/lib/epuber/plugin.rb +1 -1
- data/lib/epuber/server.rb +17 -17
- data/lib/epuber/transformer/book_transformer.rb +108 -0
- data/lib/epuber/transformer.rb +2 -0
- data/lib/epuber/user_interface.rb +2 -2
- data/lib/epuber/vendor/ruby_templater.rb +3 -3
- data/lib/epuber/vendor/version.rb +3 -3
- data/lib/epuber/version.rb +1 -1
- metadata +40 -59
data/lib/epuber/server.rb
CHANGED
@@ -179,8 +179,8 @@ module Epuber
|
|
179
179
|
self.class.build_path
|
180
180
|
end
|
181
181
|
|
182
|
-
# @param
|
183
|
-
# @param
|
182
|
+
# @param [Symbol] level
|
183
|
+
# @param [String] message
|
184
184
|
#
|
185
185
|
# @return nil
|
186
186
|
#
|
@@ -208,7 +208,7 @@ module Epuber
|
|
208
208
|
|
209
209
|
# @!group Helpers
|
210
210
|
|
211
|
-
# @param
|
211
|
+
# @param [String] pattern
|
212
212
|
#
|
213
213
|
# @return [String] path to file
|
214
214
|
#
|
@@ -217,7 +217,7 @@ module Epuber
|
|
217
217
|
finder.find_files(pattern).first
|
218
218
|
end
|
219
219
|
|
220
|
-
# @param
|
220
|
+
# @param [Fixnum] index
|
221
221
|
# @return [Epuber::Book::File, nil]
|
222
222
|
#
|
223
223
|
def spine_file_at(index)
|
@@ -257,8 +257,8 @@ module Epuber
|
|
257
257
|
add_script_to_head(html_doc, source)
|
258
258
|
end
|
259
259
|
|
260
|
-
# @param
|
261
|
-
# @param
|
260
|
+
# @param [Nokogiri::HTML::Document] html_doc
|
261
|
+
# @param [String] script_text
|
262
262
|
#
|
263
263
|
def add_script_to_head(html_doc, script_text)
|
264
264
|
script_node = html_doc.create_element('script', script_text, type: 'text/javascript')
|
@@ -272,7 +272,7 @@ module Epuber
|
|
272
272
|
head.add_child(script_node)
|
273
273
|
end
|
274
274
|
|
275
|
-
# @param
|
275
|
+
# @param [Nokogiri::HTML::Document] html_doc
|
276
276
|
#
|
277
277
|
def add_auto_refresh_script(html_doc)
|
278
278
|
add_file_to_head(:js, html_doc, 'auto_refresh/reloader.coffee')
|
@@ -282,7 +282,7 @@ module Epuber
|
|
282
282
|
add_script_to_head(html_doc, 'var auto_refresh = new AutoRefresh(window, console);')
|
283
283
|
end
|
284
284
|
|
285
|
-
# @param
|
285
|
+
# @param [Nokogiri::HTML::Document] html_doc
|
286
286
|
#
|
287
287
|
def add_keyboard_control_script(html_doc, previous_path, next_path)
|
288
288
|
add_script_file_to_head(html_doc, 'keyboard_control.coffee',
|
@@ -290,7 +290,7 @@ module Epuber
|
|
290
290
|
'$next_path' => next_path)
|
291
291
|
end
|
292
292
|
|
293
|
-
# @param
|
293
|
+
# @param [Nokogiri::HTML::Document] html_doc
|
294
294
|
#
|
295
295
|
def add_file_to_head(type, html_doc, file_path)
|
296
296
|
head = html_doc.at_css('head')
|
@@ -310,9 +310,9 @@ module Epuber
|
|
310
310
|
head.add_child(node)
|
311
311
|
end
|
312
312
|
|
313
|
-
# @param
|
314
|
-
# @param
|
315
|
-
# @param
|
313
|
+
# @param [Nokogiri::HTML::Document] html_doc
|
314
|
+
# @param [String] key
|
315
|
+
# @param [String] value
|
316
316
|
#
|
317
317
|
def add_meta_to_head(name, content, html_doc, force: false)
|
318
318
|
head = html_doc.at_css('head')
|
@@ -368,7 +368,7 @@ module Epuber
|
|
368
368
|
@compilation_thread.join
|
369
369
|
end
|
370
370
|
|
371
|
-
# @param
|
371
|
+
# @param [String] message
|
372
372
|
#
|
373
373
|
def self.send_to_clients(message)
|
374
374
|
_log :info, "sending message to clients #{message.inspect}"
|
@@ -378,7 +378,7 @@ module Epuber
|
|
378
378
|
end
|
379
379
|
end
|
380
380
|
|
381
|
-
# @param
|
381
|
+
# @param [Symbol] type
|
382
382
|
def self.notify_clients(type, data = nil)
|
383
383
|
_log :info, "Notifying clients with type #{type.inspect}"
|
384
384
|
raise "Not known type `#{type}`" unless %i[styles reload compile_start compile_end].include?(type)
|
@@ -401,9 +401,9 @@ module Epuber
|
|
401
401
|
files_paths.select { |file| file_resolver.file_with_source_path(file) || book.file_path == file }
|
402
402
|
end
|
403
403
|
|
404
|
-
# @param
|
405
|
-
# @param
|
406
|
-
# @param
|
404
|
+
# @param [Array<String>] modified
|
405
|
+
# @param [Array<String>] added
|
406
|
+
# @param [Array<String>] removed
|
407
407
|
#
|
408
408
|
def self.changes_detected(modified, added, removed)
|
409
409
|
all_changed = (modified + added + removed).uniq.map(&:unicode_normalize)
|
@@ -0,0 +1,108 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../transformer'
|
4
|
+
|
5
|
+
module Epuber
|
6
|
+
class Transformer
|
7
|
+
class BookTransformer < Transformer
|
8
|
+
# @return [Book]
|
9
|
+
#
|
10
|
+
attr_accessor :book
|
11
|
+
|
12
|
+
# @return [CompilationContext]
|
13
|
+
#
|
14
|
+
attr_accessor :compilation_context
|
15
|
+
|
16
|
+
# @param [Epuber::Book] book
|
17
|
+
# @param [Epuber::Compiler::CompilationContext] compilation_context
|
18
|
+
#
|
19
|
+
def call(book, compilation_context)
|
20
|
+
@book = book
|
21
|
+
@compilation_context = compilation_context
|
22
|
+
|
23
|
+
@block.call(self, @book, @compilation_context)
|
24
|
+
|
25
|
+
@book = nil
|
26
|
+
@compilation_context = nil
|
27
|
+
end
|
28
|
+
|
29
|
+
# Find file in source or destination paths
|
30
|
+
#
|
31
|
+
# @param [String] pattern
|
32
|
+
# @param [Thread::Backtrace::Location] location
|
33
|
+
#
|
34
|
+
# @return [Epuber::Compiler::FileTypes::AbstractFile, nil]
|
35
|
+
#
|
36
|
+
def find_file(pattern, location: caller_locations.first)
|
37
|
+
return pattern if pattern.is_a?(Compiler::FileTypes::AbstractFile)
|
38
|
+
|
39
|
+
UI.error!("Pattern for finding file can't be nil", location: location) if pattern.nil?
|
40
|
+
|
41
|
+
begin
|
42
|
+
path = @compilation_context.file_resolver.source_finder.find_file(pattern)
|
43
|
+
@compilation_context.file_resolver.file_with_source_path(path)
|
44
|
+
rescue Compiler::FileFinders::FileNotFoundError
|
45
|
+
begin
|
46
|
+
path = @compilation_context.file_resolver.dest_finder.find_file(pattern)
|
47
|
+
@compilation_context.file_resolver.file_with_destination_path(path)
|
48
|
+
rescue Compiler::FileFinders::FileNotFoundError
|
49
|
+
nil
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# Find files destination paths
|
55
|
+
#
|
56
|
+
# @param [String] pattern
|
57
|
+
# @param [Thread::Backtrace::Location] location
|
58
|
+
#
|
59
|
+
# @return [Array<Epuber::Compiler::FileTypes::AbstractFile>]
|
60
|
+
#
|
61
|
+
def find_destination_files(pattern, location: caller_locations.first)
|
62
|
+
UI.error!("Pattern for finding file can't be nil", location: location) if pattern.nil?
|
63
|
+
|
64
|
+
paths = @compilation_context.file_resolver.dest_finder.find_files(pattern)
|
65
|
+
paths.map { |path| @compilation_context.file_resolver.file_with_destination_path(path) }
|
66
|
+
end
|
67
|
+
|
68
|
+
# Find file and raise exception if not found
|
69
|
+
#
|
70
|
+
# @param [String] pattern
|
71
|
+
# @param [Thread::Backtrace::Location] location
|
72
|
+
#
|
73
|
+
# @return [Epuber::Compiler::FileTypes::AbstractFile]
|
74
|
+
#
|
75
|
+
def get_file(pattern, location: caller_locations.first)
|
76
|
+
file = find_file(pattern, location: location)
|
77
|
+
UI.error!("File with pattern #{pattern} not found", location: location) unless file
|
78
|
+
|
79
|
+
file
|
80
|
+
end
|
81
|
+
|
82
|
+
# Read file from destination path (raises exception if not found)
|
83
|
+
#
|
84
|
+
# @param [String] pattern
|
85
|
+
# @param [Thread::Backtrace::Location] location
|
86
|
+
#
|
87
|
+
# @return [String]
|
88
|
+
#
|
89
|
+
def read_destination_file(pattern, location: caller_locations.first)
|
90
|
+
file = get_file(pattern, location: location)
|
91
|
+
File.read(file.final_destination_path)
|
92
|
+
end
|
93
|
+
|
94
|
+
# Write file to destination path (raises exception if not found)
|
95
|
+
#
|
96
|
+
# @param [String] pattern
|
97
|
+
# @param [String] content
|
98
|
+
# @param [Thread::Backtrace::Location] location
|
99
|
+
#
|
100
|
+
# @return [void]
|
101
|
+
#
|
102
|
+
def write_destination_file(pattern, content, location: caller_locations.first)
|
103
|
+
file = get_file(pattern, location: location)
|
104
|
+
Compiler::FileTypes::AbstractFile.write_to_file(content, file.final_destination_path)
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
data/lib/epuber/transformer.rb
CHANGED
@@ -5,6 +5,7 @@ require_relative 'checker_transformer_base'
|
|
5
5
|
module Epuber
|
6
6
|
class Transformer < CheckerTransformerBase
|
7
7
|
require_relative 'transformer/text_transformer'
|
8
|
+
require_relative 'transformer/book_transformer'
|
8
9
|
|
9
10
|
# @return [Hash<Symbol, Class>]
|
10
11
|
#
|
@@ -12,6 +13,7 @@ module Epuber
|
|
12
13
|
{
|
13
14
|
result_text_xhtml_string: TextTransformer,
|
14
15
|
source_text_file: TextTransformer,
|
16
|
+
after_all_text_files: BookTransformer,
|
15
17
|
}.merge(super)
|
16
18
|
end
|
17
19
|
end
|
@@ -192,9 +192,9 @@ module Epuber
|
|
192
192
|
|
193
193
|
comps = []
|
194
194
|
comps << message.to_s
|
195
|
-
message_already_formatted =
|
195
|
+
message_already_formatted =
|
196
196
|
message.is_a?(Epuber::Compiler::Problem) || message.is_a?(Epuber::Checker::TextChecker::MatchProblem)
|
197
|
-
|
197
|
+
|
198
198
|
if !location.nil? && !message_already_formatted
|
199
199
|
path = location.path
|
200
200
|
|
@@ -16,7 +16,7 @@ module Epuber
|
|
16
16
|
#
|
17
17
|
attr_accessor :locals
|
18
18
|
|
19
|
-
# @param
|
19
|
+
# @param [String] source
|
20
20
|
#
|
21
21
|
# @return [self]
|
22
22
|
#
|
@@ -27,7 +27,7 @@ module Epuber
|
|
27
27
|
inst
|
28
28
|
end
|
29
29
|
|
30
|
-
# @param
|
30
|
+
# @param [String, File] file
|
31
31
|
#
|
32
32
|
# @return [self]
|
33
33
|
#
|
@@ -46,7 +46,7 @@ module Epuber
|
|
46
46
|
# DSL methods
|
47
47
|
|
48
48
|
|
49
|
-
# @param
|
49
|
+
# @param [Hash] locals
|
50
50
|
#
|
51
51
|
# @return [self]
|
52
52
|
#
|
@@ -10,7 +10,7 @@ module Epuber
|
|
10
10
|
class Version
|
11
11
|
include Comparable
|
12
12
|
|
13
|
-
VERSION_RE
|
13
|
+
VERSION_RE = /\A[0-9]+(\.[0-9a-zA-Z]+)*\z/.freeze
|
14
14
|
|
15
15
|
# True if the +version+ string matches RubyGems' requirements.
|
16
16
|
#
|
@@ -52,7 +52,7 @@ module Epuber
|
|
52
52
|
def <=>(other)
|
53
53
|
return unless other.is_a?(Version) || other.is_a?(String) || other.is_a?(Float) || other.is_a?(Integer)
|
54
54
|
|
55
|
-
other =
|
55
|
+
other = Version.new(other) unless other.is_a?(Version)
|
56
56
|
|
57
57
|
return 0 if @version == other.version
|
58
58
|
|
@@ -61,7 +61,7 @@ module Epuber
|
|
61
61
|
|
62
62
|
lhsize = lhsegments.size
|
63
63
|
rhsize = rhsegments.size
|
64
|
-
limit =
|
64
|
+
limit = [lhsize, rhsize].max - 1
|
65
65
|
|
66
66
|
i = 0
|
67
67
|
|
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.
|
4
|
+
version: 0.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roman Kříž
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-12-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -120,6 +120,20 @@ dependencies:
|
|
120
120
|
- - "~>"
|
121
121
|
- !ruby/object:Gem::Version
|
122
122
|
version: '1.0'
|
123
|
+
- !ruby/object:Gem::Dependency
|
124
|
+
name: uuidtools
|
125
|
+
requirement: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - "~>"
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '2.1'
|
130
|
+
type: :runtime
|
131
|
+
prerelease: false
|
132
|
+
version_requirements: !ruby/object:Gem::Requirement
|
133
|
+
requirements:
|
134
|
+
- - "~>"
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: '2.1'
|
123
137
|
- !ruby/object:Gem::Dependency
|
124
138
|
name: sinatra
|
125
139
|
requirement: !ruby/object:Gem::Requirement
|
@@ -277,87 +291,45 @@ dependencies:
|
|
277
291
|
- !ruby/object:Gem::Version
|
278
292
|
version: '2.4'
|
279
293
|
- !ruby/object:Gem::Dependency
|
280
|
-
name:
|
281
|
-
requirement: !ruby/object:Gem::Requirement
|
282
|
-
requirements:
|
283
|
-
- - "~>"
|
284
|
-
- !ruby/object:Gem::Version
|
285
|
-
version: '1.1'
|
286
|
-
- - ">="
|
287
|
-
- !ruby/object:Gem::Version
|
288
|
-
version: 1.1.1
|
289
|
-
type: :runtime
|
290
|
-
prerelease: false
|
291
|
-
version_requirements: !ruby/object:Gem::Requirement
|
292
|
-
requirements:
|
293
|
-
- - "~>"
|
294
|
-
- !ruby/object:Gem::Version
|
295
|
-
version: '1.1'
|
296
|
-
- - ">="
|
297
|
-
- !ruby/object:Gem::Version
|
298
|
-
version: 1.1.1
|
299
|
-
- !ruby/object:Gem::Dependency
|
300
|
-
name: fakefs
|
294
|
+
name: css_parser
|
301
295
|
requirement: !ruby/object:Gem::Requirement
|
302
296
|
requirements:
|
303
297
|
- - ">="
|
304
298
|
- !ruby/object:Gem::Version
|
305
|
-
version: '
|
299
|
+
version: '0.8'
|
306
300
|
- - "<"
|
307
301
|
- !ruby/object:Gem::Version
|
308
|
-
version: '
|
309
|
-
type: :
|
302
|
+
version: '2.0'
|
303
|
+
type: :runtime
|
310
304
|
prerelease: false
|
311
305
|
version_requirements: !ruby/object:Gem::Requirement
|
312
306
|
requirements:
|
313
307
|
- - ">="
|
314
308
|
- !ruby/object:Gem::Version
|
315
|
-
version: '
|
309
|
+
version: '0.8'
|
316
310
|
- - "<"
|
317
311
|
- !ruby/object:Gem::Version
|
318
|
-
version: '
|
312
|
+
version: '2.0'
|
319
313
|
- !ruby/object:Gem::Dependency
|
320
|
-
name:
|
314
|
+
name: epuber-stylus
|
321
315
|
requirement: !ruby/object:Gem::Requirement
|
322
316
|
requirements:
|
323
317
|
- - "~>"
|
324
318
|
- !ruby/object:Gem::Version
|
325
|
-
version: '
|
326
|
-
|
327
|
-
prerelease: false
|
328
|
-
version_requirements: !ruby/object:Gem::Requirement
|
329
|
-
requirements:
|
330
|
-
- - "~>"
|
331
|
-
- !ruby/object:Gem::Version
|
332
|
-
version: '13.0'
|
333
|
-
- !ruby/object:Gem::Dependency
|
334
|
-
name: rspec
|
335
|
-
requirement: !ruby/object:Gem::Requirement
|
336
|
-
requirements:
|
337
|
-
- - "~>"
|
319
|
+
version: '1.1'
|
320
|
+
- - ">="
|
338
321
|
- !ruby/object:Gem::Version
|
339
|
-
version:
|
340
|
-
type: :
|
322
|
+
version: 1.1.1
|
323
|
+
type: :runtime
|
341
324
|
prerelease: false
|
342
325
|
version_requirements: !ruby/object:Gem::Requirement
|
343
326
|
requirements:
|
344
327
|
- - "~>"
|
345
328
|
- !ruby/object:Gem::Version
|
346
|
-
version: '
|
347
|
-
-
|
348
|
-
name: rubocop
|
349
|
-
requirement: !ruby/object:Gem::Requirement
|
350
|
-
requirements:
|
351
|
-
- - "~>"
|
352
|
-
- !ruby/object:Gem::Version
|
353
|
-
version: '1.14'
|
354
|
-
type: :development
|
355
|
-
prerelease: false
|
356
|
-
version_requirements: !ruby/object:Gem::Requirement
|
357
|
-
requirements:
|
358
|
-
- - "~>"
|
329
|
+
version: '1.1'
|
330
|
+
- - ">="
|
359
331
|
- !ruby/object:Gem::Version
|
360
|
-
version:
|
332
|
+
version: 1.1.1
|
361
333
|
description:
|
362
334
|
email:
|
363
335
|
- samnung@gmail.com
|
@@ -384,6 +356,7 @@ files:
|
|
384
356
|
- lib/epuber/command.rb
|
385
357
|
- lib/epuber/command/build.rb
|
386
358
|
- lib/epuber/command/compile.rb
|
359
|
+
- lib/epuber/command/from_file.rb
|
387
360
|
- lib/epuber/command/init.rb
|
388
361
|
- lib/epuber/command/server.rb
|
389
362
|
- lib/epuber/compiler.rb
|
@@ -398,6 +371,7 @@ files:
|
|
398
371
|
- lib/epuber/compiler/file_types/bade_file.rb
|
399
372
|
- lib/epuber/compiler/file_types/coffee_script_file.rb
|
400
373
|
- lib/epuber/compiler/file_types/container_xml_file.rb
|
374
|
+
- lib/epuber/compiler/file_types/css_file.rb
|
401
375
|
- lib/epuber/compiler/file_types/generated_file.rb
|
402
376
|
- lib/epuber/compiler/file_types/ibooks_display_options_file.rb
|
403
377
|
- lib/epuber/compiler/file_types/image_file.rb
|
@@ -420,6 +394,11 @@ files:
|
|
420
394
|
- lib/epuber/dsl/object.rb
|
421
395
|
- lib/epuber/dsl/tree_object.rb
|
422
396
|
- lib/epuber/epubcheck.rb
|
397
|
+
- lib/epuber/from_file/bookspec_generator.rb
|
398
|
+
- lib/epuber/from_file/encryption_handler.rb
|
399
|
+
- lib/epuber/from_file/from_file_executor.rb
|
400
|
+
- lib/epuber/from_file/nav_file.rb
|
401
|
+
- lib/epuber/from_file/opf_file.rb
|
423
402
|
- lib/epuber/helper.rb
|
424
403
|
- lib/epuber/lockfile.rb
|
425
404
|
- lib/epuber/plugin.rb
|
@@ -586,6 +565,7 @@ files:
|
|
586
565
|
- lib/epuber/third_party/bower/bower_components/uri.js/src/jquery.URI.min.js
|
587
566
|
- lib/epuber/third_party/bower/bower_components/uri.js/src/punycode.js
|
588
567
|
- lib/epuber/transformer.rb
|
568
|
+
- lib/epuber/transformer/book_transformer.rb
|
589
569
|
- lib/epuber/transformer/text_transformer.rb
|
590
570
|
- lib/epuber/user_interface.rb
|
591
571
|
- lib/epuber/vendor/hash_binding.rb
|
@@ -597,7 +577,8 @@ files:
|
|
597
577
|
homepage: https://github.com/epuber-io/epuber
|
598
578
|
licenses:
|
599
579
|
- MIT
|
600
|
-
metadata:
|
580
|
+
metadata:
|
581
|
+
rubygems_mfa_required: 'true'
|
601
582
|
post_install_message:
|
602
583
|
rdoc_options: []
|
603
584
|
require_paths:
|