cloudcannon-jekyll 2.3.4 → 3.0.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/.gitignore +0 -1
- data/.rubocop.yml +24 -20
- data/HISTORY.md +8 -0
- data/README.md +160 -23
- data/cloudcannon-jekyll.gemspec +16 -18
- data/lib/cloudcannon-jekyll/config.rb +146 -0
- data/lib/cloudcannon-jekyll/generator.rb +20 -248
- data/lib/cloudcannon-jekyll/generators/collections.rb +267 -0
- data/lib/cloudcannon-jekyll/generators/data.rb +34 -0
- data/lib/cloudcannon-jekyll/generators/info.rb +92 -0
- data/lib/cloudcannon-jekyll/generators/paths.rb +18 -0
- data/lib/cloudcannon-jekyll/logger.rb +12 -0
- data/lib/cloudcannon-jekyll/readers/data-reader.rb +3 -3
- data/lib/cloudcannon-jekyll/readers/old-data-reader.rb +11 -8
- data/lib/cloudcannon-jekyll/{reader.rb → readers/reader.rb} +11 -11
- data/lib/cloudcannon-jekyll/{configuration.rb → setup.rb} +7 -4
- data/lib/cloudcannon-jekyll/version.rb +1 -1
- data/lib/cloudcannon-jekyll.rb +8 -13
- data/script/lint +5 -0
- data/script/test +0 -1
- data/script/{ci-smoke-test → test-all-versions} +2 -4
- metadata +12 -46
- data/.travis.yml +0 -19
- data/lib/cloudcannon-jekyll/_cloudcannon/info-2.x.json +0 -83
- data/lib/cloudcannon-jekyll/_cloudcannon/info-3.0-4.x.json +0 -83
- data/lib/cloudcannon-jekyll/_cloudcannon/info.json +0 -86
- data/lib/cloudcannon-jekyll/jsonify-filter.rb +0 -214
- data/lib/cloudcannon-jekyll/page-without-a-file.rb +0 -10
- data/script/cibuild +0 -6
@@ -1,214 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "jekyll"
|
4
|
-
|
5
|
-
module CloudCannonJekyll
|
6
|
-
# Filter for converting Jekyll objects into JSON
|
7
|
-
module JsonifyFilter
|
8
|
-
STATIC_EXTENSIONS = [".html", ".htm"].freeze
|
9
|
-
|
10
|
-
@simple_types = [
|
11
|
-
String,
|
12
|
-
Numeric,
|
13
|
-
Integer,
|
14
|
-
Float,
|
15
|
-
Date,
|
16
|
-
Time,
|
17
|
-
NilClass,
|
18
|
-
].freeze
|
19
|
-
|
20
|
-
@document_types = [
|
21
|
-
Jekyll::Document,
|
22
|
-
Jekyll::Page,
|
23
|
-
Jekyll::VERSION.start_with?("2.") ? Jekyll::Post : nil,
|
24
|
-
].compact.freeze
|
25
|
-
|
26
|
-
def self.document_type?(input)
|
27
|
-
@document_types.include?(input.class)
|
28
|
-
end
|
29
|
-
|
30
|
-
def self.simple_type?(input)
|
31
|
-
@simple_types.include?(input.class) || [true, false].include?(input)
|
32
|
-
end
|
33
|
-
|
34
|
-
def self.static_file_to_json(input, depth, max_depth)
|
35
|
-
path = input.relative_path.sub(%r!^\/+!, "")
|
36
|
-
url = Jekyll::VERSION.start_with?("2.") ? "/#{path}" : input.url
|
37
|
-
|
38
|
-
out = [
|
39
|
-
"\"path\": #{JsonifyFilter.to_json(path, depth, max_depth)}",
|
40
|
-
"\"url\": #{JsonifyFilter.to_json(url, depth, max_depth)}",
|
41
|
-
]
|
42
|
-
|
43
|
-
"{#{out.join(",")}}"
|
44
|
-
end
|
45
|
-
|
46
|
-
def self.document_data_to_a(data, prevent, depth, max_depth)
|
47
|
-
prevent += %w(content output next previous excerpt)
|
48
|
-
|
49
|
-
out = data.map do |key, value|
|
50
|
-
next if prevent.include?(key) || key.nil?
|
51
|
-
|
52
|
-
prevent.push key
|
53
|
-
next_max_depth = %w(_array_structures _structures).include?(key) ? 20 : max_depth
|
54
|
-
"#{key.to_json}: #{JsonifyFilter.to_json(value, depth, next_max_depth)}"
|
55
|
-
end
|
56
|
-
|
57
|
-
out.compact
|
58
|
-
end
|
59
|
-
|
60
|
-
def self.legacy_post_to_json(input, depth, max_depth)
|
61
|
-
prevent = %w(dir name path url date id categories tags)
|
62
|
-
|
63
|
-
out = [
|
64
|
-
"\"name\": #{JsonifyFilter.to_json(input.name, depth, max_depth)}",
|
65
|
-
"\"path\": #{JsonifyFilter.to_json(input.path, depth, max_depth)}",
|
66
|
-
"\"url\": #{JsonifyFilter.to_json(input.url, depth, max_depth)}",
|
67
|
-
"\"date\": #{JsonifyFilter.to_json(input.date, depth, max_depth)}",
|
68
|
-
"\"id\": #{JsonifyFilter.to_json(input.id, depth, max_depth)}",
|
69
|
-
"\"categories\": #{JsonifyFilter.to_json(input.categories, depth, max_depth)}",
|
70
|
-
"\"tags\": #{JsonifyFilter.to_json(input.tags, depth, max_depth)}",
|
71
|
-
]
|
72
|
-
|
73
|
-
out += JsonifyFilter.document_data_to_a(input.data, prevent, depth, max_depth)
|
74
|
-
"{#{out.join(",")}}"
|
75
|
-
end
|
76
|
-
|
77
|
-
def self.page_to_json(input, depth, max_depth)
|
78
|
-
prevent = %w(dir name path url)
|
79
|
-
|
80
|
-
out = [
|
81
|
-
"\"name\": #{JsonifyFilter.to_json(input.name, depth, max_depth)}",
|
82
|
-
"\"path\": #{JsonifyFilter.to_json(input.path, depth, max_depth)}",
|
83
|
-
"\"url\": #{JsonifyFilter.to_json(input.url, depth, max_depth)}",
|
84
|
-
]
|
85
|
-
|
86
|
-
# Merge Jekyll Defaults into data for pages (missing at v3.8.5)
|
87
|
-
defaults = input.site.frontmatter_defaults.all(input.relative_path, :pages).tap do |default|
|
88
|
-
default.delete("date")
|
89
|
-
end
|
90
|
-
|
91
|
-
data = Jekyll::Utils.deep_merge_hashes(defaults, input.data)
|
92
|
-
|
93
|
-
out += JsonifyFilter.document_data_to_a(data, prevent, depth, max_depth)
|
94
|
-
"{#{out.join(",")}}"
|
95
|
-
end
|
96
|
-
|
97
|
-
def self.document_path(input)
|
98
|
-
collections_dir = input.site.config["collections_dir"] || ""
|
99
|
-
if input.collection && !collections_dir.empty?
|
100
|
-
"#{collections_dir}/#{input.relative_path}"
|
101
|
-
else
|
102
|
-
input.relative_path
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
def self.document_to_json(input, depth, max_depth)
|
107
|
-
prevent = %w(dir relative_path url collection)
|
108
|
-
|
109
|
-
out = [
|
110
|
-
"\"path\": #{JsonifyFilter.to_json(JsonifyFilter.document_path(input), depth, max_depth)}",
|
111
|
-
"\"url\": #{JsonifyFilter.to_json(input.url, depth, max_depth)}",
|
112
|
-
]
|
113
|
-
|
114
|
-
unless input.collection.nil?
|
115
|
-
collection_json = JsonifyFilter.to_json(input.collection.label, depth, max_depth)
|
116
|
-
out.push("\"collection\": #{collection_json}")
|
117
|
-
end
|
118
|
-
|
119
|
-
if input.respond_to? :id
|
120
|
-
out.push("\"id\": #{JsonifyFilter.to_json(input.id, depth, max_depth)}")
|
121
|
-
end
|
122
|
-
|
123
|
-
out += JsonifyFilter.document_data_to_a(input.data, prevent, depth, max_depth)
|
124
|
-
"{#{out.join(",")}}"
|
125
|
-
end
|
126
|
-
|
127
|
-
def self.array_to_json(input, depth, max_depth)
|
128
|
-
array = input.map do |value|
|
129
|
-
JsonifyFilter.to_json(value, depth, max_depth)
|
130
|
-
end
|
131
|
-
|
132
|
-
"[#{array.join(",")}]"
|
133
|
-
end
|
134
|
-
|
135
|
-
def self.hash_to_json(input, depth, max_depth)
|
136
|
-
out = input.map do |key, value|
|
137
|
-
next_max_depth = %w(_array_structures _structures).include?(key) ? 20 : max_depth
|
138
|
-
string_key = key.to_s.to_json
|
139
|
-
"#{string_key}: #{JsonifyFilter.to_json(value, depth, next_max_depth)}"
|
140
|
-
end
|
141
|
-
|
142
|
-
"{#{out.join(",")}}"
|
143
|
-
end
|
144
|
-
|
145
|
-
def self.config_to_select_data_json(input, depth)
|
146
|
-
prevent = %w(source destination collections_dir cache_dir plugins_dir layouts_dir data_dir
|
147
|
-
includes_dir collections safe include exclude keep_files encoding markdown_ext
|
148
|
-
strict_front_matter show_drafts limit_posts future unpublished whitelist
|
149
|
-
plugins markdown highlighter lsi excerpt_separator incremental detach port host
|
150
|
-
baseurl show_dir_listing permalink paginate_path timezone quiet verbose defaults
|
151
|
-
liquid kramdown title url description uploads_dir _comments _options _editor
|
152
|
-
_explore _source_editor _array_structures maruku redcloth rdiscount redcarpet
|
153
|
-
gems plugins cloudcannon _collection_groups _enabled_editors _instance_values)
|
154
|
-
|
155
|
-
out = input.map do |key, value|
|
156
|
-
next unless value.is_a?(Array) || value.is_a?(Hash)
|
157
|
-
next if prevent.include?(key) || key.nil?
|
158
|
-
|
159
|
-
prevent.push key
|
160
|
-
"#{key.to_s.to_json}: #{JsonifyFilter.to_json(value, depth)}"
|
161
|
-
end
|
162
|
-
|
163
|
-
out.compact!
|
164
|
-
|
165
|
-
"{#{out.join(",")}}" if out.any?
|
166
|
-
end
|
167
|
-
|
168
|
-
def self.to_json(input, depth, max_depth = 12)
|
169
|
-
depth += 1
|
170
|
-
|
171
|
-
if depth > max_depth || (depth > 3 && JsonifyFilter.document_type?(input))
|
172
|
-
'"MAXIMUM_DEPTH"'
|
173
|
-
elsif JsonifyFilter.simple_type?(input)
|
174
|
-
input.to_json
|
175
|
-
elsif input.is_a?(Jekyll::StaticFile)
|
176
|
-
JsonifyFilter.static_file_to_json(input, depth, max_depth)
|
177
|
-
elsif input.is_a?(Jekyll::Page)
|
178
|
-
JsonifyFilter.page_to_json(input, depth, max_depth)
|
179
|
-
elsif Jekyll::VERSION.start_with?("2.") && input.is_a?(Jekyll::Post)
|
180
|
-
JsonifyFilter.legacy_post_to_json(input, depth, max_depth)
|
181
|
-
elsif input.is_a?(Jekyll::Document)
|
182
|
-
JsonifyFilter.document_to_json(input, depth, max_depth)
|
183
|
-
elsif input.is_a?(Array)
|
184
|
-
JsonifyFilter.array_to_json(input, depth, max_depth)
|
185
|
-
elsif input.is_a?(Hash)
|
186
|
-
JsonifyFilter.hash_to_json(input, depth, max_depth)
|
187
|
-
else
|
188
|
-
input.class.to_s.prepend("UNSUPPORTED:").to_json
|
189
|
-
end
|
190
|
-
end
|
191
|
-
|
192
|
-
def cc_static_files_jsonify(input)
|
193
|
-
out = input.map do |page|
|
194
|
-
JsonifyFilter.to_json(page, 1) if STATIC_EXTENSIONS.include?(page.extname)
|
195
|
-
end
|
196
|
-
|
197
|
-
out.compact!
|
198
|
-
|
199
|
-
"[#{out.join(",")}]"
|
200
|
-
end
|
201
|
-
|
202
|
-
def cc_select_data_jsonify(input)
|
203
|
-
if input.key? "_select_data"
|
204
|
-
JsonifyFilter.to_json(input["_select_data"], 0)
|
205
|
-
else
|
206
|
-
JsonifyFilter.config_to_select_data_json(input, 0)
|
207
|
-
end
|
208
|
-
end
|
209
|
-
|
210
|
-
def cc_jsonify(input, max_depth = 12)
|
211
|
-
JsonifyFilter.to_json(input, 0, max_depth)
|
212
|
-
end
|
213
|
-
end
|
214
|
-
end
|