cloudcannon-jekyll 0.0.4 → 0.1.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 +3 -1
- data/.travis.yml +0 -2
- data/HISTORY.md +24 -4
- data/cloudcannon-jekyll.gemspec +4 -3
- data/lib/cloudcannon-jekyll.rb +5 -7
- data/lib/cloudcannon-jekyll/_cloudcannon/config-2.x.json +43 -0
- data/lib/cloudcannon-jekyll/_cloudcannon/config-3.0-4.x.json +43 -0
- data/lib/cloudcannon-jekyll/_cloudcannon/config.json +61 -0
- data/lib/cloudcannon-jekyll/_cloudcannon/details-2.x.json +5 -3
- data/lib/cloudcannon-jekyll/_cloudcannon/{details-3.0.x.json → details-3.0-4.x.json} +4 -2
- data/lib/cloudcannon-jekyll/_cloudcannon/details.json +16 -4
- data/lib/cloudcannon-jekyll/configuration.rb +24 -26
- data/lib/cloudcannon-jekyll/generator.rb +32 -16
- data/lib/cloudcannon-jekyll/safe-jsonify-filter.rb +50 -9
- data/lib/cloudcannon-jekyll/version.rb +1 -1
- data/script/release +4 -2
- metadata +30 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9af7a56d0f7ae1c2fbf46678eef968a8ea4d906a88394b2704093b8d6a375017
|
4
|
+
data.tar.gz: ed492b3cc15a707238dc083be5063c20f7e9c6664fb545f8e4fc7bed54c90b05
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a38d6d1a314062fe832fed516f188da8d0a299f0e8a41e3701b1cf1166d50b88a5ef34a1828eec093993803be5c8ac21937da77b876d6f0840610e28ac7593fd
|
7
|
+
data.tar.gz: b49cec3b53386c5422cffc485d610d386c0cb692078890abf1b030f764afc55b3329d5ebe53c28815a73d5b2e55bcb7127d02945cb16d230e03ef7cdefc5e031
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/HISTORY.md
CHANGED
@@ -1,7 +1,27 @@
|
|
1
|
-
# 0.0
|
1
|
+
# 0.1.0
|
2
2
|
|
3
|
-
*
|
3
|
+
* Add output config file
|
4
|
+
* Add support for including only specified `data` keys
|
5
|
+
* Fix invalid JSON issue for sites built with Jekyll 2 and no collections
|
6
|
+
* Change module load style for easier dropping into _plugins
|
4
7
|
|
5
|
-
# 0.0.
|
8
|
+
# 0.0.8
|
6
9
|
|
7
|
-
*
|
10
|
+
* Removed unsupported Jekyll test targets
|
11
|
+
|
12
|
+
# 0.0.7
|
13
|
+
|
14
|
+
* Fix invalid JSON issue for sites built with Jekyll 2 and no collections
|
15
|
+
|
16
|
+
# 0.0.6
|
17
|
+
|
18
|
+
* Fixed unsupported Fixnum for Ruby 2.3
|
19
|
+
* Fixed reference to unsupported String::match? for Ruby 2.3
|
20
|
+
|
21
|
+
# 0.0.5
|
22
|
+
|
23
|
+
* Support for Ruby 2.3
|
24
|
+
|
25
|
+
# 0.0.1 -> 0.0.4
|
26
|
+
|
27
|
+
* Initial testing versions
|
data/cloudcannon-jekyll.gemspec
CHANGED
@@ -19,10 +19,11 @@ Gem::Specification.new do |spec|
|
|
19
19
|
all_files = `git ls-files -z`.split("\x0")
|
20
20
|
spec.files = all_files.reject { |f| f.match(%r!^(test|spec|features)/!) }
|
21
21
|
|
22
|
-
spec.add_dependency "jekyll", ">= 2.4.0", "<
|
22
|
+
spec.add_dependency "jekyll", ">= 2.4.0", "< 4"
|
23
23
|
|
24
24
|
spec.add_development_dependency "rake", "~> 13.0"
|
25
25
|
spec.add_development_dependency "rspec", "~> 3.9"
|
26
|
-
spec.add_development_dependency "rubocop", "~> 0.
|
27
|
-
spec.add_development_dependency "rubocop-jekyll", "~> 0.
|
26
|
+
spec.add_development_dependency "rubocop", "~> 0.80"
|
27
|
+
spec.add_development_dependency "rubocop-jekyll", "~> 0.11"
|
28
|
+
spec.add_development_dependency "json_schemer", "~> 0.2.13"
|
28
29
|
end
|
data/lib/cloudcannon-jekyll.rb
CHANGED
@@ -2,13 +2,11 @@
|
|
2
2
|
|
3
3
|
require "jekyll"
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
autoload :VERSION, "cloudcannon-jekyll/version"
|
11
|
-
end
|
5
|
+
require_relative "cloudcannon-jekyll/page-without-a-file"
|
6
|
+
require_relative "cloudcannon-jekyll/generator"
|
7
|
+
require_relative "cloudcannon-jekyll/configuration"
|
8
|
+
require_relative "cloudcannon-jekyll/safe-jsonify-filter"
|
9
|
+
require_relative "cloudcannon-jekyll/version"
|
12
10
|
|
13
11
|
Liquid::Template.register_filter(CloudCannonJekyll::SafeJsonifyFilter)
|
14
12
|
|
@@ -0,0 +1,43 @@
|
|
1
|
+
{
|
2
|
+
{% if site.timezone %}"timezone": {{ site.timezone | jsonify }},{% endif %}
|
3
|
+
"include": {{ site.include | jsonify }},
|
4
|
+
"exclude": {{ site.exclude | jsonify }},
|
5
|
+
{% if site.baseurl %}"base-url": {{ site.baseurl | jsonify }},{% endif %}
|
6
|
+
"collections": {
|
7
|
+
{% for collection in site.collections %}
|
8
|
+
"{{ collection[0] | xml_escape }}": {
|
9
|
+
"output": {{ collection[1].output | jsonify }},
|
10
|
+
"_sort-key": {{ collection[1]._sort_key | jsonify }},
|
11
|
+
"_subtext-key": {{ collection[1]._subtext_key | jsonify }},
|
12
|
+
"_image-key": {{ collection[1]._image_key | jsonify }},
|
13
|
+
"_image-size": {{ collection[1]._image_size | jsonify }},
|
14
|
+
"_singular-name": {{ collection[1]._singular_name | jsonify }},
|
15
|
+
"_singular-key": {{ collection[1]._singular_key | jsonify }},
|
16
|
+
"_disable-add": {{ collection[1]._disable_add | jsonify }},
|
17
|
+
"_icon": {{ collection[1]._icon | jsonify }},
|
18
|
+
"_add-options": {{ collection[1]._add_options | cc_safe_jsonify }}
|
19
|
+
}{% unless forloop.last %},{% endunless %}
|
20
|
+
{% endfor %}
|
21
|
+
},
|
22
|
+
{% if site._comments %}"comments": {{ site._comments | cc_safe_jsonify }},{% endif %}
|
23
|
+
{% if site._editor %}"editor": {
|
24
|
+
"default-path": {{ site._editor.default_path | jsonify }}
|
25
|
+
},{% endif %}
|
26
|
+
{% if site._source_editor %}"source-editor": {
|
27
|
+
"tab-size": {{ site._source_editor.tab_size | jsonify }},
|
28
|
+
"show-gutter": {{ site._source_editor.show_gutter | jsonify }},
|
29
|
+
"theme": {{ site._source_editor.theme | jsonify }}
|
30
|
+
},{% endif %}
|
31
|
+
{% if site._explore %}"explore": {{ site._explore | cc_safe_jsonify }},{% endif %}
|
32
|
+
"paths": {
|
33
|
+
"uploads": {{ site.uploads_dir | jsonify }},
|
34
|
+
"plugins": {{ site.plugins_dir | jsonify }},
|
35
|
+
"data": {{ site.data_dir | jsonify }},
|
36
|
+
"collections": {{ site.collections_dir | jsonify }},
|
37
|
+
"includes": {{ site.includes_dir | jsonify }},
|
38
|
+
"layouts": {{ site.layouts_dir | jsonify }}
|
39
|
+
},
|
40
|
+
{% if site._array_structures %}"array-structures": {{ site._array_structures | cc_safe_jsonify }},{% endif %}
|
41
|
+
{% assign select_data = site | cc_site_select_data_jsonify %}{% if select_data %}"select-data": {{ select_data }},{% endif %}
|
42
|
+
"source": {{ site.source | jsonify }}
|
43
|
+
}
|
@@ -0,0 +1,43 @@
|
|
1
|
+
{
|
2
|
+
{% if site.timezone %}"timezone": {{ site.timezone | jsonify }},{% endif %}
|
3
|
+
"include": {{ site.include | jsonify }},
|
4
|
+
"exclude": {{ site.exclude | jsonify }},
|
5
|
+
{% if site.baseurl %}"base-url": {{ site.baseurl | jsonify }},{% endif %}
|
6
|
+
"collections": {
|
7
|
+
{% for collection in site.collections %}
|
8
|
+
"{{ collection.label | xml_escape }}": {
|
9
|
+
"output": {{ collection.output | jsonify }},
|
10
|
+
"_sort-key": {{ collection._sort_key | jsonify }},
|
11
|
+
"_subtext-key": {{ collection._subtext_key | jsonify }},
|
12
|
+
"_image-key": {{ collection._image_key | jsonify }},
|
13
|
+
"_image-size": {{ collection._image_size | jsonify }},
|
14
|
+
"_singular-name": {{ collection._singular_name | jsonify }},
|
15
|
+
"_singular-key": {{ collection._singular_key | jsonify }},
|
16
|
+
"_disable-add": {{ collection._disable_add | jsonify }},
|
17
|
+
"_icon": {{ collection._icon | jsonify }},
|
18
|
+
"_add-options": {{ collection._add_options | cc_safe_jsonify }}
|
19
|
+
}{% unless forloop.last %},{% endunless %}
|
20
|
+
{% endfor %}
|
21
|
+
},
|
22
|
+
{% if site._comments %}"comments": {{ site._comments | cc_safe_jsonify }},{% endif %}
|
23
|
+
{% if site._editor %}"editor": {
|
24
|
+
"default-path": {{ site._editor.default_path | jsonify }}
|
25
|
+
},{% endif %}
|
26
|
+
{% if site._source_editor %}"source-editor": {
|
27
|
+
"tab-size": {{ site._source_editor.tab_size | jsonify }},
|
28
|
+
"show-gutter": {{ site._source_editor.show_gutter | jsonify }},
|
29
|
+
"theme": {{ site._source_editor.theme | jsonify }}
|
30
|
+
},{% endif %}
|
31
|
+
{% if site._explore %}"explore": {{ site._explore | cc_safe_jsonify }},{% endif %}
|
32
|
+
"paths": {
|
33
|
+
"uploads": {{ site.uploads_dir | jsonify }},
|
34
|
+
"plugins": {{ site.plugins_dir | jsonify }},
|
35
|
+
"data": {{ site.data_dir | jsonify }},
|
36
|
+
"collections": {{ site.collections_dir | jsonify }},
|
37
|
+
"includes": {{ site.includes_dir | jsonify }},
|
38
|
+
"layouts": {{ site.layouts_dir | jsonify }}
|
39
|
+
},
|
40
|
+
{% if site._array_structures %}"array-structures": {{ site._array_structures | cc_safe_jsonify }},{% endif %}
|
41
|
+
{% assign select_data = site | cc_site_select_data_jsonify %}{% if select_data %}"select-data": {{ select_data }},{% endif %}
|
42
|
+
"source": {{ site.source | jsonify }}
|
43
|
+
}
|
@@ -0,0 +1,61 @@
|
|
1
|
+
{
|
2
|
+
{% if site.timezone -%}
|
3
|
+
"timezone": {{ site.timezone | jsonify }},
|
4
|
+
{%- endif %}
|
5
|
+
"include": {{ site.include | jsonify }},
|
6
|
+
"exclude": {{ site.exclude | jsonify }},
|
7
|
+
{% if site.baseurl -%}
|
8
|
+
"base-url": {{ site.baseurl | jsonify }},
|
9
|
+
{%- endif %}
|
10
|
+
"collections": {
|
11
|
+
{%- for collection in site.collections -%}
|
12
|
+
"{{ collection.label | xml_escape }}": {
|
13
|
+
"output": {{ collection.output | jsonify }},
|
14
|
+
"_sort-key": {{ collection._sort_key | jsonify }},
|
15
|
+
"_subtext-key": {{ collection._subtext_key | jsonify }},
|
16
|
+
"_image-key": {{ collection._image_key | jsonify }},
|
17
|
+
"_image-size": {{ collection._image_size | jsonify }},
|
18
|
+
"_singular-name": {{ collection._singular_name | jsonify }},
|
19
|
+
"_singular-key": {{ collection._singular_key | jsonify }},
|
20
|
+
"_disable-add": {{ collection._disable_add | jsonify }},
|
21
|
+
"_icon": {{ collection._icon | jsonify }},
|
22
|
+
"_add-options": {{ collection._add_options | cc_safe_jsonify }}
|
23
|
+
}
|
24
|
+
{%- unless forloop.last %},{% endunless %}
|
25
|
+
{%- endfor -%}
|
26
|
+
},
|
27
|
+
{% if site._comments -%}
|
28
|
+
"comments": {{ site._comments | cc_safe_jsonify }},
|
29
|
+
{%- endif %}
|
30
|
+
{% if site._editor -%}
|
31
|
+
"editor": {
|
32
|
+
"default-path": {{ site._editor.default_path | jsonify }}
|
33
|
+
},
|
34
|
+
{%- endif %}
|
35
|
+
{% if site._source_editor -%}
|
36
|
+
"source-editor": {
|
37
|
+
"tab-size": {{ site._source_editor.tab_size | jsonify }},
|
38
|
+
"show-gutter": {{ site._source_editor.show_gutter | jsonify }},
|
39
|
+
"theme": {{ site._source_editor.theme | jsonify }}
|
40
|
+
},
|
41
|
+
{%- endif %}
|
42
|
+
{% if site._explore -%}
|
43
|
+
"explore": {{ site._explore | cc_safe_jsonify }},
|
44
|
+
{%- endif %}
|
45
|
+
"paths": {
|
46
|
+
"uploads": {{ site.uploads_dir | jsonify }},
|
47
|
+
"plugins": {{ site.plugins_dir | jsonify }},
|
48
|
+
"data": {{ site.data_dir | jsonify }},
|
49
|
+
"collections": {{ site.collections_dir | jsonify }},
|
50
|
+
"includes": {{ site.includes_dir | jsonify }},
|
51
|
+
"layouts": {{ site.layouts_dir | jsonify }}
|
52
|
+
},
|
53
|
+
{% if site._array_structures -%}
|
54
|
+
"array-structures": {{ site._array_structures | cc_safe_jsonify }},
|
55
|
+
{%- endif %}
|
56
|
+
{% assign select_data = site | cc_site_select_data_jsonify -%}
|
57
|
+
{% if select_data -%}
|
58
|
+
"select-data": {{ select_data }},
|
59
|
+
{%- endif %}
|
60
|
+
"source": {{ site.source | jsonify }}
|
61
|
+
}
|
@@ -13,10 +13,12 @@
|
|
13
13
|
"kramdown": {{ site.kramdown | cc_safe_jsonify }},
|
14
14
|
"commonmark": {{ site.commonmark | cc_safe_jsonify }}
|
15
15
|
}
|
16
|
-
},{% if site.cloudcannon.data %}
|
17
|
-
"data": {
|
16
|
+
},{% if site.cloudcannon.data.first %}{% assign data_seen = false %}
|
17
|
+
"data": {
|
18
|
+
{% for data in site.data %}{% assign key = data[0] %}{% if site.cloudcannon.data[key] %}{% if data_seen %},{% endif %}{{ data[0] | cc_safe_jsonify }}: {{ data[1] | cc_safe_jsonify }}{% assign data_seen = true %}{% endif %}{% endfor %}},
|
19
|
+
{% elsif site.cloudcannon.data %}"data": {{ site.data | cc_safe_jsonify }},{% endif %}
|
18
20
|
"collections": {
|
19
|
-
"posts": {{ site.posts | reverse | cc_safe_jsonify }},
|
21
|
+
"posts": {{ site.posts | reverse | cc_safe_jsonify }}{% if site.collections.size > 0 %},{% endif %}
|
20
22
|
{% for collection in site.collections %}"{{ collection[0] | xml_escape }}": {{ collection[1].docs | cc_safe_jsonify }}{% unless forloop.last %},{% endunless %}
|
21
23
|
{% endfor %}
|
22
24
|
},
|
@@ -13,8 +13,10 @@
|
|
13
13
|
"kramdown": {{ site.kramdown | cc_safe_jsonify }},
|
14
14
|
"commonmark": {{ site.commonmark | cc_safe_jsonify }}
|
15
15
|
}
|
16
|
-
},{% if site.cloudcannon.data %}
|
17
|
-
"data": {
|
16
|
+
},{% if site.cloudcannon.data.first %}{% assign data_seen = false %}
|
17
|
+
"data": {
|
18
|
+
{% for data in site.data %}{% assign key = data[0] %}{% if site.cloudcannon.data[key] %}{% if data_seen %},{% endif %}{{ data[0] | cc_safe_jsonify }}: {{ data[1] | cc_safe_jsonify }}{% assign data_seen = true %}{% endif %}{% endfor %}},
|
19
|
+
{% elsif site.cloudcannon.data %}"data": {{ site.data | cc_safe_jsonify }},{% endif %}
|
18
20
|
"collections": {
|
19
21
|
{% for collection in site.collections %}"{{ collection.label | xml_escape }}": {{ collection.docs | cc_safe_jsonify }}{% unless forloop.last %},{% endunless %}
|
20
22
|
{% endfor %}
|
@@ -14,14 +14,26 @@
|
|
14
14
|
"commonmark": {{ site.commonmark | cc_safe_jsonify }}
|
15
15
|
}
|
16
16
|
},
|
17
|
-
{
|
17
|
+
{% if site.cloudcannon.data.first -%}
|
18
|
+
"data": {
|
19
|
+
{%- assign data_seen = false %}
|
20
|
+
{%- for data in site.data %}
|
21
|
+
{%- assign key = data[0] %}
|
22
|
+
{%- if site.cloudcannon.data[key] %}
|
23
|
+
{%- if data_seen %},{% endif -%}
|
24
|
+
{{ data[0] | cc_safe_jsonify }}: {{ data[1] | cc_safe_jsonify }}
|
25
|
+
{%- assign data_seen = true %}
|
26
|
+
{%- endif %}
|
27
|
+
{%- endfor -%}
|
28
|
+
},
|
29
|
+
{% elsif site.cloudcannon.data -%}
|
18
30
|
"data": {{ site.data | cc_safe_jsonify }},
|
19
|
-
{
|
31
|
+
{%- endif %}
|
20
32
|
"collections": {
|
21
|
-
{
|
33
|
+
{%- for collection in site.collections -%}
|
22
34
|
"{{ collection.label | xml_escape }}": {{ collection.docs | cc_safe_jsonify }}
|
23
35
|
{%- unless forloop.last %},{% endunless %}
|
24
|
-
{%- endfor
|
36
|
+
{%- endfor -%}
|
25
37
|
},
|
26
38
|
"pages": {{ site.pages | cc_safe_jsonify }},
|
27
39
|
"static": {{ site.static_files | cc_static_files_jsonify }}
|
@@ -2,39 +2,37 @@
|
|
2
2
|
|
3
3
|
module CloudCannonJekyll
|
4
4
|
class Configuration
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
end
|
9
|
-
|
10
|
-
def process(site)
|
11
|
-
site.instance_variable_set :@_cloudcannon_jekyll_processed, true
|
12
|
-
end
|
5
|
+
def self.processed?(site)
|
6
|
+
site.instance_variable_get(:@_cloudcannon_jekyll_processed) == true
|
7
|
+
end
|
13
8
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
config = config.fix_common_issues if config.respond_to? :fix_common_issues
|
18
|
-
config = config.add_default_excludes if config.respond_to? :add_default_excludes
|
9
|
+
def self.process(site)
|
10
|
+
site.instance_variable_set :@_cloudcannon_jekyll_processed, true
|
11
|
+
end
|
19
12
|
|
20
|
-
|
13
|
+
def self.overridden_config(user_config)
|
14
|
+
config = Jekyll::Utils.deep_merge_hashes(Jekyll::Configuration::DEFAULTS, user_config)
|
15
|
+
config = config.add_default_collections if config.respond_to? :add_default_collections
|
16
|
+
config = config.fix_common_issues if config.respond_to? :fix_common_issues
|
17
|
+
config = config.add_default_excludes if config.respond_to? :add_default_excludes
|
21
18
|
|
22
|
-
|
23
|
-
config[key].push("cloudcannon-jekyll") unless config[key].include? "cloudcannon-jekyll"
|
24
|
-
config
|
25
|
-
end
|
19
|
+
key = Jekyll::VERSION.start_with?("2") ? "gems" : "plugins"
|
26
20
|
|
27
|
-
|
28
|
-
|
21
|
+
config[key] = Array(config[key])
|
22
|
+
config[key].push("cloudcannon-jekyll") unless config[key].include? "cloudcannon-jekyll"
|
23
|
+
config
|
24
|
+
end
|
29
25
|
|
30
|
-
|
31
|
-
|
32
|
-
else # Jekyll pre 3.5
|
33
|
-
site.instance_variable_set :@config, overridden_config(site.config)
|
34
|
-
end
|
26
|
+
def self.set(site)
|
27
|
+
return if processed? site
|
35
28
|
|
36
|
-
|
29
|
+
if site.respond_to? :config=
|
30
|
+
site.config = overridden_config(site.config)
|
31
|
+
else # Jekyll pre 3.5
|
32
|
+
site.instance_variable_set :@config, overridden_config(site.config)
|
37
33
|
end
|
34
|
+
|
35
|
+
process(site)
|
38
36
|
end
|
39
37
|
end
|
40
38
|
end
|
@@ -9,33 +9,49 @@ module CloudCannonJekyll
|
|
9
9
|
|
10
10
|
def generate(site)
|
11
11
|
@site = site
|
12
|
-
|
13
|
-
|
12
|
+
|
13
|
+
details_data = { "gem_version" => CloudCannonJekyll::VERSION }
|
14
|
+
|
15
|
+
generate_file("details", @site.site_payload.merge(details_data))
|
16
|
+
generate_file("config", @site.site_payload)
|
17
|
+
|
14
18
|
@site.keep_files ||= []
|
15
|
-
@site.keep_files << "
|
19
|
+
@site.keep_files << path("details")
|
20
|
+
@site.keep_files << path("config")
|
21
|
+
end
|
22
|
+
|
23
|
+
def generate_file(filename, data)
|
24
|
+
dest = destination_path(filename)
|
25
|
+
FileUtils.mkdir_p(File.dirname(dest))
|
26
|
+
File.open(dest, "w") { |f| f.write(file_content(filename, data)) }
|
16
27
|
end
|
17
28
|
|
18
|
-
def
|
19
|
-
|
20
|
-
|
21
|
-
path = "_cloudcannon/details-3.0.x.json" if Jekyll::VERSION.match? %r!3\.[0-4]\.!
|
29
|
+
def version_path_suffix
|
30
|
+
return "-2.x" if Jekyll::VERSION.start_with? "2."
|
31
|
+
return "-3.0-4.x" if Jekyll::VERSION.match? %r!3\.[0-4]\.!
|
22
32
|
|
23
|
-
|
33
|
+
""
|
24
34
|
end
|
25
35
|
|
26
|
-
def
|
27
|
-
|
36
|
+
def path(filename, suffix = "")
|
37
|
+
"_cloudcannon/#{filename}#{suffix}.json"
|
28
38
|
end
|
29
39
|
|
30
|
-
def
|
31
|
-
|
32
|
-
|
40
|
+
def source_path(filename)
|
41
|
+
File.expand_path(path(filename, version_path_suffix), File.dirname(__FILE__))
|
42
|
+
end
|
43
|
+
|
44
|
+
def destination_path(filename)
|
45
|
+
Jekyll.sanitized_path(@site.dest, path(filename))
|
46
|
+
end
|
33
47
|
|
48
|
+
def file_content(filename, data)
|
49
|
+
json = PageWithoutAFile.new(@site, File.dirname(__FILE__), "", path(filename))
|
50
|
+
json.content = File.read(source_path(filename))
|
34
51
|
json.data["layout"] = nil
|
35
52
|
json.data["sitemap"] = false
|
36
|
-
json.data["permalink"] = "
|
37
|
-
|
38
|
-
json.render({}, @site.site_payload.merge("gem_version" => CloudCannonJekyll::VERSION))
|
53
|
+
json.data["permalink"] = "/#{path(filename)}"
|
54
|
+
json.render({}, data)
|
39
55
|
json.output
|
40
56
|
end
|
41
57
|
end
|
@@ -12,7 +12,8 @@ module CloudCannonJekyll
|
|
12
12
|
Date,
|
13
13
|
Time,
|
14
14
|
NilClass,
|
15
|
-
|
15
|
+
Object.const_defined?("Fixnum") ? Fixnum : nil,
|
16
|
+
].compact.freeze
|
16
17
|
|
17
18
|
@document_types = [
|
18
19
|
Jekyll::Document,
|
@@ -45,12 +46,11 @@ module CloudCannonJekyll
|
|
45
46
|
def self.document_data_to_json(data, out, prevent, depth)
|
46
47
|
prevent += %w(content output next previous excerpt)
|
47
48
|
|
48
|
-
data.
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
end
|
49
|
+
data.each { |key, value|
|
50
|
+
next if prevent.include? key
|
51
|
+
prevent.push key
|
52
|
+
out.push("#{key.to_json}: #{SafeJsonifyFilter.to_json(value, depth + 1)}")
|
53
|
+
}
|
54
54
|
|
55
55
|
"{#{out.join(",")}}"
|
56
56
|
end
|
@@ -120,12 +120,45 @@ module CloudCannonJekyll
|
|
120
120
|
|
121
121
|
def self.hash_to_json(input, depth)
|
122
122
|
hash = input.map do |key, value|
|
123
|
-
"
|
123
|
+
"#{key.to_json}: #{SafeJsonifyFilter.to_json(value, depth + 1)}"
|
124
124
|
end
|
125
125
|
|
126
126
|
"{#{hash.join(",")}}"
|
127
127
|
end
|
128
128
|
|
129
|
+
def self.site_drop_legacy_select_data_to_json(input, depth)
|
130
|
+
prevent = %w(config time related_posts destination cache_dir safe
|
131
|
+
keep_files encoding markdown_ext strict_front_matter show_drafts
|
132
|
+
limit_posts future unpublished whitelist maruku markdown highlighter
|
133
|
+
lsi excerpt_separator incremental detach port host show_dir_listing
|
134
|
+
permalink paginate_path quiet verbose defaults liquid kramdown title
|
135
|
+
url description categories data tags static_files html_pages pages
|
136
|
+
documents posts related_posts time source timezone include exclude
|
137
|
+
baseurl collections _comments _editor _source_editor _explore
|
138
|
+
uploads_dir plugins_dir data_dir collections_dir includes_dir
|
139
|
+
layouts_dir _array_structures cloudcannon rdiscount redcarpet redcloth)
|
140
|
+
|
141
|
+
if Jekyll::VERSION.start_with?("2.")
|
142
|
+
prevent = prevent.concat input["collections"].keys
|
143
|
+
prevent.push "gems"
|
144
|
+
elsif Jekyll::VERSION.match?(%r!3\.[0-4]\.!)
|
145
|
+
prevent = prevent.concat input["collections"].map { |c| c["label"] }
|
146
|
+
prevent = prevent.concat %w(plugins gems)
|
147
|
+
else
|
148
|
+
prevent.push "plugins"
|
149
|
+
end
|
150
|
+
|
151
|
+
out = input.map { |key, value|
|
152
|
+
next unless value.is_a?(Array) || value.is_a?(Hash)
|
153
|
+
next if prevent.include? key
|
154
|
+
prevent.push key
|
155
|
+
|
156
|
+
"#{key.to_json}: #{SafeJsonifyFilter.to_json(value, depth + 1)}"
|
157
|
+
}.compact
|
158
|
+
|
159
|
+
"{#{out.join(",")}}" if out.any?
|
160
|
+
end
|
161
|
+
|
129
162
|
def self.to_json(input, depth)
|
130
163
|
if depth > 8 || (depth > 2 && SafeJsonifyFilter.document_type?(input))
|
131
164
|
'"MAXIMUM_DEPTH"'
|
@@ -144,7 +177,7 @@ module CloudCannonJekyll
|
|
144
177
|
elsif input.is_a?(Hash)
|
145
178
|
SafeJsonifyFilter.hash_to_json(input, depth)
|
146
179
|
else
|
147
|
-
"\"UNSUPPORTED:#{input.class}\""
|
180
|
+
"\"UNSUPPORTED:#{input.class.to_json}\""
|
148
181
|
end
|
149
182
|
end
|
150
183
|
|
@@ -162,6 +195,14 @@ module CloudCannonJekyll
|
|
162
195
|
"[#{out.join(",")}]"
|
163
196
|
end
|
164
197
|
|
198
|
+
def cc_site_select_data_jsonify(input)
|
199
|
+
if input.key? "_select_data"
|
200
|
+
SafeJsonifyFilter.to_json(input["_select_data"], 0)
|
201
|
+
else
|
202
|
+
SafeJsonifyFilter.site_drop_legacy_select_data_to_json(input, 0)
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
165
206
|
def cc_safe_jsonify(input)
|
166
207
|
SafeJsonifyFilter.to_json(input, 0)
|
167
208
|
end
|
data/script/release
CHANGED
@@ -33,5 +33,7 @@ git fetch -t origin
|
|
33
33
|
|
34
34
|
# Push tag and upload new gem
|
35
35
|
|
36
|
-
|
37
|
-
git push origin master &&
|
36
|
+
git tag "$tag" &&
|
37
|
+
git push origin master &&
|
38
|
+
git push origin "$tag" &&
|
39
|
+
gem push cloudcannon-jekyll-*.gem
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cloudcannon-jekyll
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- CloudCannon
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-08-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version: 2.4.0
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
22
|
+
version: '4'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,7 +29,7 @@ dependencies:
|
|
29
29
|
version: 2.4.0
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
32
|
+
version: '4'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: rake
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -64,28 +64,42 @@ dependencies:
|
|
64
64
|
requirements:
|
65
65
|
- - "~>"
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: '0.
|
67
|
+
version: '0.80'
|
68
68
|
type: :development
|
69
69
|
prerelease: false
|
70
70
|
version_requirements: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
72
|
- - "~>"
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version: '0.
|
74
|
+
version: '0.80'
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: rubocop-jekyll
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
79
|
- - "~>"
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: '0.
|
81
|
+
version: '0.11'
|
82
82
|
type: :development
|
83
83
|
prerelease: false
|
84
84
|
version_requirements: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
86
|
- - "~>"
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version: '0.
|
88
|
+
version: '0.11'
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: json_schemer
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - "~>"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: 0.2.13
|
96
|
+
type: :development
|
97
|
+
prerelease: false
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 0.2.13
|
89
103
|
description: Creates CloudCannon editor details for Jekyll
|
90
104
|
email:
|
91
105
|
- support@cloudcannon.com
|
@@ -104,8 +118,11 @@ files:
|
|
104
118
|
- Rakefile
|
105
119
|
- cloudcannon-jekyll.gemspec
|
106
120
|
- lib/cloudcannon-jekyll.rb
|
121
|
+
- lib/cloudcannon-jekyll/_cloudcannon/config-2.x.json
|
122
|
+
- lib/cloudcannon-jekyll/_cloudcannon/config-3.0-4.x.json
|
123
|
+
- lib/cloudcannon-jekyll/_cloudcannon/config.json
|
107
124
|
- lib/cloudcannon-jekyll/_cloudcannon/details-2.x.json
|
108
|
-
- lib/cloudcannon-jekyll/_cloudcannon/details-3.0.x.json
|
125
|
+
- lib/cloudcannon-jekyll/_cloudcannon/details-3.0-4.x.json
|
109
126
|
- lib/cloudcannon-jekyll/_cloudcannon/details.json
|
110
127
|
- lib/cloudcannon-jekyll/configuration.rb
|
111
128
|
- lib/cloudcannon-jekyll/generator.rb
|
@@ -119,7 +136,7 @@ homepage: https://github.com/cloudcannon/cloudcannon-jekyll
|
|
119
136
|
licenses:
|
120
137
|
- MIT
|
121
138
|
metadata: {}
|
122
|
-
post_install_message:
|
139
|
+
post_install_message:
|
123
140
|
rdoc_options: []
|
124
141
|
require_paths:
|
125
142
|
- lib
|
@@ -134,9 +151,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
134
151
|
- !ruby/object:Gem::Version
|
135
152
|
version: '0'
|
136
153
|
requirements: []
|
137
|
-
rubyforge_project:
|
154
|
+
rubyforge_project:
|
138
155
|
rubygems_version: 2.7.6.2
|
139
|
-
signing_key:
|
156
|
+
signing_key:
|
140
157
|
specification_version: 4
|
141
158
|
summary: CloudCannon Jekyll integration
|
142
159
|
test_files: []
|