wax_tasks 1.0.0.pre.beta → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +3 -2
- data/lib/tasks/derivatives_iiif.rake +7 -4
- data/lib/tasks/derivatives_simple.rake +7 -4
- data/lib/tasks/pages.rake +22 -0
- data/lib/tasks/search.rake +22 -0
- data/lib/wax_tasks.rb +29 -36
- data/lib/wax_tasks/asset.rb +51 -0
- data/lib/wax_tasks/collection.rb +20 -83
- data/lib/wax_tasks/collection/images.rb +127 -0
- data/lib/wax_tasks/collection/metadata.rb +101 -0
- data/lib/wax_tasks/config.rb +75 -0
- data/lib/wax_tasks/error.rb +17 -31
- data/lib/wax_tasks/index.rb +45 -0
- data/lib/wax_tasks/item.rb +116 -0
- data/lib/wax_tasks/record.rb +65 -0
- data/lib/wax_tasks/site.rb +68 -0
- data/lib/wax_tasks/utils.rb +57 -106
- data/spec/setup.rb +1 -1
- data/spec/spec_helper.rb +14 -9
- metadata +38 -36
- data/lib/tasks/jspackage.rake +0 -17
- data/lib/tasks/lunr.rake +0 -9
- data/lib/tasks/pagemaster.rake +0 -11
- data/lib/tasks/push.rake +0 -12
- data/lib/tasks/test.rake +0 -18
- data/lib/wax_tasks/branch.rb +0 -70
- data/lib/wax_tasks/iiif/derivatives.rb +0 -86
- data/lib/wax_tasks/iiif/manifest.rb +0 -26
- data/lib/wax_tasks/image_collection.rb +0 -137
- data/lib/wax_tasks/local_branch.rb +0 -21
- data/lib/wax_tasks/lunr/index.rb +0 -82
- data/lib/wax_tasks/lunr/page_set.rb +0 -57
- data/lib/wax_tasks/pagemaster_collection.rb +0 -60
- data/lib/wax_tasks/task_runner.rb +0 -148
- data/lib/wax_tasks/travis_branch.rb +0 -28
@@ -0,0 +1,68 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
#
|
4
|
+
module WaxTasks
|
5
|
+
#
|
6
|
+
class Site
|
7
|
+
attr_reader :config
|
8
|
+
IMAGE_DERIVATIVE_DIRECTORY = 'img/derivatives'
|
9
|
+
|
10
|
+
#
|
11
|
+
#
|
12
|
+
def initialize(config = nil)
|
13
|
+
@config = WaxTasks::Config.new(config || WaxTasks.config_from_file)
|
14
|
+
end
|
15
|
+
|
16
|
+
#
|
17
|
+
#
|
18
|
+
def collections
|
19
|
+
@config.collections
|
20
|
+
end
|
21
|
+
|
22
|
+
#
|
23
|
+
#
|
24
|
+
def generate_pages(name)
|
25
|
+
result = 0
|
26
|
+
collection = @config.find_collection name
|
27
|
+
raise WaxTasks::Error::InvalidCollection if collection.nil?
|
28
|
+
|
29
|
+
collection.records_from_metadata.each do |record|
|
30
|
+
result += record.write_to_page(collection.page_source)
|
31
|
+
end
|
32
|
+
|
33
|
+
puts Rainbow("#{result} pages were generated to #{collection.page_source}.").cyan
|
34
|
+
puts Rainbow("\nDone ✔").green
|
35
|
+
end
|
36
|
+
|
37
|
+
#
|
38
|
+
#
|
39
|
+
def generate_static_search(name)
|
40
|
+
search_config = @config.search name
|
41
|
+
index = WaxTasks::Index.new(search_config)
|
42
|
+
|
43
|
+
puts Rainbow("Generating #{name} search index to #{index.path}").cyan
|
44
|
+
index.write_to @config.source
|
45
|
+
|
46
|
+
puts Rainbow("\nDone ✔").green
|
47
|
+
end
|
48
|
+
|
49
|
+
#
|
50
|
+
#
|
51
|
+
def generate_derivatives(name, type)
|
52
|
+
collection = @config.find_collection name
|
53
|
+
raise WaxTasks::Error::InvalidCollection if collection.nil?
|
54
|
+
raise WaxTasks::Error::InvalidConfig unless %w[iiif simple].include? type
|
55
|
+
|
56
|
+
output_dir = Utils.safe_join @config.source, IMAGE_DERIVATIVE_DIRECTORY, type
|
57
|
+
records = case type
|
58
|
+
when 'iiif'
|
59
|
+
collection.write_iiif_derivatives output_dir
|
60
|
+
when 'simple'
|
61
|
+
collection.write_simple_derivatives output_dir
|
62
|
+
end
|
63
|
+
|
64
|
+
collection.update_metadata records
|
65
|
+
puts Rainbow("\nDone ✔").green
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
data/lib/wax_tasks/utils.rb
CHANGED
@@ -1,17 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module WaxTasks
|
2
4
|
# Utility helper methods
|
3
5
|
module Utils
|
4
|
-
# Contructs permalink extension from site `permalink` variable
|
5
6
|
#
|
6
|
-
#
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
7
|
+
#
|
8
|
+
def self.ingest(source)
|
9
|
+
metadata = case File.extname source
|
10
|
+
when '.csv'
|
11
|
+
WaxTasks::Utils.validate_csv source
|
12
|
+
when '.json'
|
13
|
+
WaxTasks::Utils.validate_json source
|
14
|
+
when /\.ya?ml/
|
15
|
+
WaxTasks::Utils.validate_yaml source
|
16
|
+
else
|
17
|
+
raise Error::InvalidSource, "Can't load #{File.extname source} files. Culprit: #{source}"
|
18
|
+
end
|
19
|
+
|
20
|
+
WaxTasks::Utils.assert_pids metadata
|
21
|
+
WaxTasks::Utils.assert_unique metadata
|
15
22
|
end
|
16
23
|
|
17
24
|
# Checks and asserts presence of `pid` value for each item
|
@@ -20,7 +27,7 @@ module WaxTasks
|
|
20
27
|
# @return [Array] same data unless a an item is missing the key `pid`
|
21
28
|
# @raise WaxTasks::Error::MissingPid
|
22
29
|
def self.assert_pids(data)
|
23
|
-
data.each_with_index { |d, i| raise Error::MissingPid, "Collection
|
30
|
+
data.each_with_index { |d, i| raise Error::MissingPid, "Collection is missing pid for item #{i}." unless d.key? 'pid' }
|
24
31
|
data
|
25
32
|
end
|
26
33
|
|
@@ -33,6 +40,7 @@ module WaxTasks
|
|
33
40
|
pids = data.map { |d| d['pid'] }
|
34
41
|
not_unique = pids.select { |p| pids.count(p) > 1 }.uniq! || []
|
35
42
|
raise Error::NonUniquePid, "#{@name} has the following nonunique pids:\n#{not_unique}" unless not_unique.empty?
|
43
|
+
|
36
44
|
data
|
37
45
|
end
|
38
46
|
|
@@ -53,8 +61,8 @@ module WaxTasks
|
|
53
61
|
# @return [Array] validated JSON data as an Array of Hashes
|
54
62
|
# @raise WaxTasks::Error::InvalidJSON
|
55
63
|
def self.validate_json(source)
|
56
|
-
file = File.read
|
57
|
-
JSON.parse
|
64
|
+
file = File.read source
|
65
|
+
JSON.parse file
|
58
66
|
rescue StandardError => e
|
59
67
|
raise Error::InvalidJSON, " #{e}"
|
60
68
|
end
|
@@ -65,35 +73,23 @@ module WaxTasks
|
|
65
73
|
# @return [Array] validated YAML data as an Array of Hashes
|
66
74
|
# @raise WaxTasks::Error::InvalidYAML
|
67
75
|
def self.validate_yaml(source)
|
68
|
-
|
76
|
+
SafeYAML.load_file source
|
69
77
|
rescue StandardError => e
|
70
78
|
raise WaxTasks::Error::InvalidYAML, " #{e}"
|
71
79
|
end
|
72
80
|
|
73
|
-
# Creates a file path valid file path with empty strings and
|
74
|
-
# null values dropped
|
75
|
-
#
|
76
|
-
# @param args [Array] items to concatenate in path
|
77
|
-
# @return [String] file path
|
78
|
-
def self.root_path(*args)
|
79
|
-
['.'].concat(args).compact.reject(&:empty?).join('/').gsub(%r{/+}, '/')
|
80
|
-
end
|
81
|
-
|
82
81
|
# Removes YAML front matter from a string
|
83
82
|
# @return [String]
|
84
83
|
def self.remove_yaml(str)
|
85
84
|
str.to_s.gsub!(/\A---(.|\n)*?---/, '')
|
86
85
|
end
|
87
86
|
|
88
|
-
|
89
|
-
str.gsub(/{{.*}}/, '')
|
90
|
-
end
|
91
|
-
|
92
|
-
# Cleans YAML front matter + markdown pages for lunr indexing
|
87
|
+
# Scrubs yaml, liquid, html, and etc from content strings
|
93
88
|
# @return [String]
|
94
|
-
def self.
|
89
|
+
def self.content_clean(str)
|
95
90
|
str.gsub!(/\A---(.|\n)*?---/, '') # remove yaml front matter
|
96
91
|
str.gsub!(/{%(.*)%}/, '') # remove functional liquid
|
92
|
+
str.gsub!(/{{.*}}/, '') # remove referential liquid
|
97
93
|
str.gsub!(%r{<\/?[^>]*>}, '') # remove html
|
98
94
|
str.gsub!('\\n', '') # remove newlines
|
99
95
|
str.gsub!(/\s+/, ' ') # remove extra space
|
@@ -106,95 +102,50 @@ module WaxTasks
|
|
106
102
|
def self.remove_diacritics(str)
|
107
103
|
to_replace = 'ÀÁÂÃÄÅàáâãäåĀāĂ㥹ÇçĆćĈĉĊċČčÐðĎďĐđÈÉÊËèéêëĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħÌÍÎÏìíîïĨĩĪīĬĭĮįİıĴĵĶķĸĹĺĻļĽľĿŀŁłÑñŃńŅņŇňʼnŊŋÒÓÔÕÖØòóôõöøŌōŎŏŐőŔŕŖŗŘřŚśŜŝŞşŠšſŢţŤťŦŧÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųŴŵÝýÿŶŷŸŹźŻżŽž'
|
108
104
|
replaced_by = 'AAAAAAaaaaaaAaAaAaCcCcCcCcCcDdDdDdEEEEeeeeEeEeEeEeEeGgGgGgGgHhHhIIIIiiiiIiIiIiIiIiJjKkkLlLlLlLlLlNnNnNnNnnNnOOOOOOooooooOoOoOoRrRrRrSsSsSsSssTtTtTtUUUUuuuuUuUuUuUuUuUuWwYyyYyYZzZzZz'
|
109
|
-
str.to_s.tr
|
105
|
+
str.to_s.tr to_replace, replaced_by
|
110
106
|
end
|
111
107
|
|
112
108
|
# Converts string to snake case and swaps out special chars
|
113
109
|
# @return [String]
|
114
110
|
def self.slug(str)
|
115
|
-
str.to_s.downcase.tr(' ', '_').gsub(/[^\w-]/, '')
|
111
|
+
Utils.remove_diacritics(str).to_s.downcase.tr(' ', '_').gsub(/[^\w-]/, '')
|
116
112
|
end
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
# Monkey-patched String class
|
121
|
-
class String
|
122
|
-
# Normalizes string without diacritics for lunr indexing
|
123
|
-
# @return [String]
|
124
|
-
def lunr_normalize
|
125
|
-
WaxTasks::Utils.remove_diacritics(self)
|
126
|
-
end
|
127
|
-
|
128
|
-
# Colorizes console output to magenta (errors)
|
129
|
-
# @return [String]
|
130
|
-
def magenta
|
131
|
-
"\e[35m#{self}\e[0m"
|
132
|
-
end
|
133
|
-
|
134
|
-
# Colorizes console output to cyan (messages)
|
135
|
-
# @return [String]
|
136
|
-
def cyan
|
137
|
-
"\e[36m#{self}\e[0m"
|
138
|
-
end
|
139
|
-
|
140
|
-
# Colorizes console output to orange (warnings)
|
141
|
-
# @return [String]
|
142
|
-
def orange
|
143
|
-
"\e[33m#{self}\e[0m"
|
144
|
-
end
|
145
|
-
end
|
146
113
|
|
147
|
-
#
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
# @return [Hash || String] description
|
152
|
-
def lunr_normalize
|
153
|
-
if self.first.is_a? Hash
|
154
|
-
self
|
155
|
-
else
|
156
|
-
WaxTasks::Utils.remove_diacritics(self.join(', '))
|
114
|
+
#
|
115
|
+
#
|
116
|
+
def self.safe_join(*args)
|
117
|
+
File.join(args.compact)
|
157
118
|
end
|
158
|
-
end
|
159
119
|
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
# Normalizes hash as itself for lunr indexing
|
168
|
-
# @return [Hash]
|
169
|
-
def lunr_normalize
|
170
|
-
self
|
171
|
-
end
|
120
|
+
# Constructs the order variable for each page (if the collection
|
121
|
+
# needs to preserve the order of items from the file)
|
122
|
+
#
|
123
|
+
# @return [Integer] the order if the item padded with '0's for sorting
|
124
|
+
def self.padded_int(idx, max_idx)
|
125
|
+
idx.to_s.rjust(Math.log10(max_idx).to_i + 1, '0')
|
126
|
+
end
|
172
127
|
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
128
|
+
def self.lunr_normalize(val)
|
129
|
+
case val
|
130
|
+
when String || Integer
|
131
|
+
WaxTasks::Utils.remove_diacritics val.to_s
|
132
|
+
when Array
|
133
|
+
return val if val.first.is_a? Hash
|
134
|
+
WaxTasks::Utils.remove_diacritics val.join(', ')
|
135
|
+
else
|
136
|
+
val
|
137
|
+
end
|
179
138
|
end
|
180
|
-
hash
|
181
|
-
end
|
182
|
-
end
|
183
139
|
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
def lunr_normalize
|
189
|
-
self.to_s
|
190
|
-
end
|
191
|
-
end
|
140
|
+
def self.add_yaml_front_matter_to_file(file)
|
141
|
+
front_matter = "---\nlayout: none\n---\n"
|
142
|
+
filestring = File.read file
|
143
|
+
return if filestring.start_with? front_matter
|
192
144
|
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
self.to_s
|
145
|
+
File.open(file, 'w') do |f|
|
146
|
+
f.puts front_matter
|
147
|
+
f.puts filestring
|
148
|
+
end
|
149
|
+
end
|
199
150
|
end
|
200
151
|
end
|
data/spec/setup.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -3,21 +3,26 @@
|
|
3
3
|
QUIET = !ENV['DEBUG']
|
4
4
|
|
5
5
|
# use codecov + add requirements
|
6
|
+
require 'setup'
|
6
7
|
require 'simplecov'
|
7
8
|
SimpleCov.start do
|
8
9
|
add_filter 'spec'
|
9
|
-
add_filter 'branch'
|
10
10
|
end
|
11
|
-
|
12
|
-
# load + setup
|
13
11
|
require 'wax_tasks'
|
14
|
-
require 'setup'
|
15
12
|
|
16
13
|
# provide shared context for tests
|
17
14
|
shared_context 'shared', :shared_context => :metadata do
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
15
|
+
let(:config_from_file) { WaxTasks.config_from_file }
|
16
|
+
let(:invalid_content_config) { WaxTasks.config_from_file("#{BUILD}/_invalid_content_config.yml") }
|
17
|
+
let(:invalid_format_config) { WaxTasks.config_from_file("#{BUILD}/_invalid_format_config.yml") }
|
18
|
+
let(:empty_config) { Hash.new }
|
19
|
+
|
20
|
+
let(:site_from_config_file) { WaxTasks::Site.new(config_from_file) }
|
21
|
+
let(:site_from_empty_config) { WaxTasks::Site.new(empty_config) }
|
22
|
+
let(:site_from_invalid_config) { WaxTasks::Site.new(invalid_content_config) }
|
23
|
+
|
24
|
+
let(:args_from_file) { %w[csv_collection json_collection yaml_collection] }
|
25
|
+
let(:csv) { args_from_file.first }
|
26
|
+
let(:json) { args_from_file[1] }
|
27
|
+
let(:yaml) { args_from_file[2] }
|
23
28
|
end
|
metadata
CHANGED
@@ -1,43 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wax_tasks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marii Nyrop
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-06-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: progress_bar
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '3
|
19
|
+
version: '1.3'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '3
|
26
|
+
version: '1.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: rainbow
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '3.
|
33
|
+
version: '3.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '3.
|
40
|
+
version: '3.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,33 +53,39 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '12.3'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: safe_yaml
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: '1.0'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: '1.0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: wax_iiif
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
76
|
-
|
75
|
+
version: 0.1.1
|
76
|
+
- - "<"
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0.2'
|
79
|
+
type: :runtime
|
77
80
|
prerelease: false
|
78
81
|
version_requirements: !ruby/object:Gem::Requirement
|
79
82
|
requirements:
|
80
|
-
- - "
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 0.1.1
|
86
|
+
- - "<"
|
81
87
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
88
|
+
version: '0.2'
|
83
89
|
- !ruby/object:Gem::Dependency
|
84
90
|
name: rspec
|
85
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -104,31 +110,27 @@ files:
|
|
104
110
|
- Gemfile
|
105
111
|
- lib/tasks/derivatives_iiif.rake
|
106
112
|
- lib/tasks/derivatives_simple.rake
|
107
|
-
- lib/tasks/
|
108
|
-
- lib/tasks/
|
109
|
-
- lib/tasks/pagemaster.rake
|
110
|
-
- lib/tasks/push.rake
|
111
|
-
- lib/tasks/test.rake
|
113
|
+
- lib/tasks/pages.rake
|
114
|
+
- lib/tasks/search.rake
|
112
115
|
- lib/wax_tasks.rb
|
113
|
-
- lib/wax_tasks/
|
116
|
+
- lib/wax_tasks/asset.rb
|
114
117
|
- lib/wax_tasks/collection.rb
|
118
|
+
- lib/wax_tasks/collection/images.rb
|
119
|
+
- lib/wax_tasks/collection/metadata.rb
|
120
|
+
- lib/wax_tasks/config.rb
|
115
121
|
- lib/wax_tasks/error.rb
|
116
|
-
- lib/wax_tasks/
|
117
|
-
- lib/wax_tasks/
|
118
|
-
- lib/wax_tasks/
|
119
|
-
- lib/wax_tasks/
|
120
|
-
- lib/wax_tasks/lunr/index.rb
|
121
|
-
- lib/wax_tasks/lunr/page_set.rb
|
122
|
-
- lib/wax_tasks/pagemaster_collection.rb
|
123
|
-
- lib/wax_tasks/task_runner.rb
|
124
|
-
- lib/wax_tasks/travis_branch.rb
|
122
|
+
- lib/wax_tasks/index.rb
|
123
|
+
- lib/wax_tasks/item.rb
|
124
|
+
- lib/wax_tasks/record.rb
|
125
|
+
- lib/wax_tasks/site.rb
|
125
126
|
- lib/wax_tasks/utils.rb
|
126
127
|
- spec/setup.rb
|
127
128
|
- spec/spec_helper.rb
|
128
129
|
homepage: https://github.com/minicomp/wax_tasks
|
129
130
|
licenses:
|
130
131
|
- MIT
|
131
|
-
metadata:
|
132
|
+
metadata:
|
133
|
+
yard.run: yri
|
132
134
|
post_install_message:
|
133
135
|
rdoc_options: []
|
134
136
|
require_paths:
|
@@ -137,12 +139,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
137
139
|
requirements:
|
138
140
|
- - ">="
|
139
141
|
- !ruby/object:Gem::Version
|
140
|
-
version: '
|
142
|
+
version: '2.4'
|
141
143
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
142
144
|
requirements:
|
143
|
-
- - "
|
145
|
+
- - ">="
|
144
146
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
147
|
+
version: '0'
|
146
148
|
requirements:
|
147
149
|
- imagemagick
|
148
150
|
- ghostscript
|