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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 29eeeaed3f7837ba32147794d52488d97e545c31b20bee3d30735ca4cdce8dda
4
- data.tar.gz: 187c42471018cdb977a008c94255a5023fd874aaeabd84ae6c8d68c1d18cbf0e
3
+ metadata.gz: 9af7a56d0f7ae1c2fbf46678eef968a8ea4d906a88394b2704093b8d6a375017
4
+ data.tar.gz: ed492b3cc15a707238dc083be5063c20f7e9c6664fb545f8e4fc7bed54c90b05
5
5
  SHA512:
6
- metadata.gz: 72903c1d96adeb5774fc5d34801c0d9818513ce2809da0077a173c72d47feaacbb4db64863e366dd4cacb98e127a83573d76d4ab655523826560b374c55b9e9b
7
- data.tar.gz: 625814ed88607cf015665bee32481a20d4e15af46774fc22cc38bf846ff73132497409aee1ea1eadb502bbb03eb78e8b13c75b1ac87e825728f9ff7064dbd1a4
6
+ metadata.gz: a38d6d1a314062fe832fed516f188da8d0a299f0e8a41e3701b1cf1166d50b88a5ef34a1828eec093993803be5c8ac21937da77b876d6f0840610e28ac7593fd
7
+ data.tar.gz: b49cec3b53386c5422cffc485d610d386c0cb692078890abf1b030f764afc55b3329d5ebe53c28815a73d5b2e55bcb7127d02945cb16d230e03ef7cdefc5e031
data/.gitignore CHANGED
@@ -1,7 +1,9 @@
1
1
  Gemfile.lock
2
2
  spec/dest/
3
3
  spec/fixtures/.jekyll-cache/
4
+ spec/fixtures/.jekyll-metadata
4
5
  spec/fixtures/_site/
5
6
  gemfiles/.bundle/
6
7
  gemfiles/*.gemfile.lock
7
- cloudcannon-jekyll-*.gem
8
+ cloudcannon-jekyll-*.gem
9
+ pkg/
@@ -15,5 +15,3 @@ env:
15
15
  matrix:
16
16
  - JEKYLL_VERSION="2.4.0"
17
17
  - JEKYLL_VERSION="3.0.0"
18
- - JEKYLL_VERSION="3.8.5"
19
- - JEKYLL_VERSION="4.0.0"
data/HISTORY.md CHANGED
@@ -1,7 +1,27 @@
1
- # 0.0.2
1
+ # 0.1.0
2
2
 
3
- * Subsequent testing version
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.1
8
+ # 0.0.8
6
9
 
7
- * Initial testing version
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
@@ -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", "< 5"
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.71"
27
- spec.add_development_dependency "rubocop-jekyll", "~> 0.10"
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
@@ -2,13 +2,11 @@
2
2
 
3
3
  require "jekyll"
4
4
 
5
- module CloudCannonJekyll
6
- autoload :PageWithoutAFile, "cloudcannon-jekyll/page-without-a-file"
7
- autoload :Generator, "cloudcannon-jekyll/generator"
8
- autoload :Configuration, "cloudcannon-jekyll/configuration"
9
- autoload :SafeJsonifyFilter, "cloudcannon-jekyll/safe-jsonify-filter"
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": {{ site.data | cc_safe_jsonify }},{% endif %}
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": {{ site.data | cc_safe_jsonify }},{% endif %}
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
- {%- if site.cloudcannon.data %}
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
- {% endif %}
31
+ {%- endif %}
20
32
  "collections": {
21
- {% for collection in site.collections -%}
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
- class << self
6
- def processed?(site)
7
- site.instance_variable_get(:@_cloudcannon_jekyll_processed) == true
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
- def overridden_config(user_config)
15
- config = Jekyll::Utils.deep_merge_hashes(Jekyll::Configuration::DEFAULTS, user_config)
16
- config = config.add_default_collections if config.respond_to? :add_default_collections
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
- key = Jekyll::VERSION.start_with?("2") ? "gems" : "plugins"
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
- config[key] = Array(config[key])
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
- def set(site)
28
- return if processed? site
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
- if site.respond_to? :config=
31
- site.config = overridden_config(site.config)
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
- process(site)
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
- FileUtils.mkdir_p(File.dirname(destination_path))
13
- File.open(destination_path, "w") { |f| f.write(file_content) }
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 << "_cloudcannon/details.json"
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 source_path
19
- path = "_cloudcannon/details.json"
20
- path = "_cloudcannon/details-2.x.json" if Jekyll::VERSION.start_with? "2."
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
- File.expand_path(path, File.dirname(__FILE__))
33
+ ""
24
34
  end
25
35
 
26
- def destination_path
27
- Jekyll.sanitized_path(@site.dest, "_cloudcannon/details.json")
36
+ def path(filename, suffix = "")
37
+ "_cloudcannon/#{filename}#{suffix}.json"
28
38
  end
29
39
 
30
- def file_content
31
- json = PageWithoutAFile.new(@site, File.dirname(__FILE__), "", "_cloudcannon/details.json")
32
- json.content = File.read(source_path)
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"] = "/_cloudcannon/details.json"
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
- ].freeze
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.map do |key, value|
49
- unless prevent.include? key
50
- out.push("\"#{key}\": #{SafeJsonifyFilter.to_json(value, depth + 1)}")
51
- prevent.push(key)
52
- end
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
- "\"#{key}\": #{SafeJsonifyFilter.to_json(value, depth + 1)}"
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CloudCannonJekyll
4
- VERSION = "0.0.4"
4
+ VERSION = "0.1.0"
5
5
  end
@@ -33,5 +33,7 @@ git fetch -t origin
33
33
 
34
34
  # Push tag and upload new gem
35
35
 
36
- gem push cloudcannon-jekyll-*.gem && git tag "$tag" &&
37
- git push origin master && git push origin "$tag"
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
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: 2019-11-13 00:00:00.000000000 Z
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: '5'
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: '5'
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.71'
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.71'
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.10'
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.10'
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: []