jekyll-open-sdg-plugins 1.0.0 → 1.2.0.pre.beta4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c89259377d08cd8db1d38b04ab5de4d4de27ba7227a2c4746138105671e8e37e
4
- data.tar.gz: daec6e7ec6aac4c856091e49abce887f024d579e9215e71412515d25c079ca31
3
+ metadata.gz: 0a13b75f8a6bee0ac35a81bd34f1f5777adbef3892b90642d6b5d3f7a02a2cd5
4
+ data.tar.gz: cd76e70a5722c7b988bd88b0e33278d0221591e17424169e38aad82186075b11
5
5
  SHA512:
6
- metadata.gz: 63721d734766ad0ed35c5a24331ea40adb1d46d3d9fea3aedf910efdd6029814df6d872e4cb73d178c630e65eb5790a7639ff21752345cd16ad103e7dd14474e
7
- data.tar.gz: cdd6d7dd52fc95cd927102db532cb1a9b4e506bb88b1272dfbdc11585125af1ff63ffc82990accb575bc863006f65f98c7f90eb190d4fdd4b5abd898d7b944cf
6
+ metadata.gz: 8a81989072531a863547ba9ce95f213ffa13231f3f2c3cac1a70c2f0a779f2c23c8ef7de7eb507a81a808d076e0e2b7d59108c9d24617c3968d68f88c5d12a3f
7
+ data.tar.gz: e7d5024aea9d3de0c5a1edabb4d8fb5809ff608b74f1ac9d9af2f17458b1a484e8be391edb3566dd97a03c479ae4e6ca4de7595c6326094d3e95e4191de999c6
@@ -1,16 +1,16 @@
1
- root = true
2
-
3
- [*]
4
- indent_style = space
5
- indent_size = 2
6
- trim_trailing_whitespace = true
7
- insert_final_newline = true
8
-
9
- [*.{md,rb,gemspec},Makefile]
10
- charset = utf-8
11
-
12
- [Makefile]
13
- indent_style = tab
14
-
15
- [*.md]
16
- trim_trailing_whitespace = false
1
+ root = true
2
+
3
+ [*]
4
+ indent_style = space
5
+ indent_size = 2
6
+ trim_trailing_whitespace = true
7
+ insert_final_newline = true
8
+
9
+ [*.{md,rb,gemspec},Makefile]
10
+ charset = utf-8
11
+
12
+ [Makefile]
13
+ indent_style = tab
14
+
15
+ [*.md]
16
+ trim_trailing_whitespace = false
@@ -0,0 +1,17 @@
1
+ name: Test PRs
2
+
3
+ on: [pull_request]
4
+
5
+ jobs:
6
+ test:
7
+
8
+ runs-on: ubuntu-latest
9
+
10
+ steps:
11
+ - uses: actions/checkout@v1
12
+ - name: Set up Ruby 2.6
13
+ uses: actions/setup-ruby@v1
14
+ with:
15
+ ruby-version: 2.6.x
16
+ - name: Run all tests
17
+ run: make test
data/.gitignore CHANGED
@@ -1,4 +1,6 @@
1
- _site
2
- .sass-cache
3
- .jekyll-metadata
4
- *.gem
1
+ _site
2
+ .sass-cache
3
+ .jekyll-metadata
4
+ *.gem
5
+ open-sdg/
6
+ open-sdg-site-starter/
@@ -0,0 +1,33 @@
1
+ .PHONY: clean build serve serve.detached
2
+ all: test
3
+
4
+ clean:
5
+ # Stop the detached Jekyll web server.
6
+ -pkill -f -9 jekyll
7
+ # Delete the builds.
8
+ rm -fr open-sdg-site-starter
9
+ rm -fr open-sdg
10
+
11
+ install: clean
12
+ git clone https://github.com/open-sdg/open-sdg-site-starter.git
13
+ git clone https://github.com/open-sdg/open-sdg.git
14
+ # Copy all the theme files into the site starter.
15
+ cp -r open-sdg/_includes/* open-sdg-site-starter/_includes/
16
+ cp -r open-sdg/_layouts/* open-sdg-site-starter/_layouts/
17
+ cp -r open-sdg/_sass/* open-sdg-site-starter/_sass/
18
+ cp -r open-sdg/assets/* open-sdg-site-starter/assets/
19
+ # Copy the required files into the site starter.
20
+ cp tests/_config.yml open-sdg-site-starter/
21
+ cp tests/Gemfile open-sdg-site-starter/
22
+ # Create a symlink to our plugin files.
23
+ ln -s ../lib/jekyll-open-sdg-plugins open-sdg-site-starter/_plugins
24
+ # Install Ruby dependencies.
25
+ cd open-sdg-site-starter && bundle install
26
+
27
+ build:
28
+ cd open-sdg-site-starter && bundle exec jekyll build
29
+
30
+ serve:
31
+ cd open-sdg-site-starter && bundle exec jekyll serve
32
+
33
+ test: install build
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
- # jekyll-open-sdg-plugins
2
-
3
- > 💎 Jekyll plugins for use with the Open SDG platform
4
-
5
- This plugin provides required Jekyll functionality for the [Open SDG](https://github.com/open-sdg/open-sdg) platform.
6
-
7
- The details on this functionality can be found throughout the [Open SDG documentation](https://open-sdg.readthedocs.io/en/latest/).
1
+ # jekyll-open-sdg-plugins
2
+
3
+ > 💎 Jekyll plugins for use with the Open SDG platform
4
+
5
+ This plugin provides required Jekyll functionality for the [Open SDG](https://github.com/open-sdg/open-sdg) platform.
6
+
7
+ The details on this functionality can be found throughout the [Open SDG documentation](https://open-sdg.readthedocs.io/en/latest/).
@@ -1,17 +1,18 @@
1
- lib = File.expand_path("../lib", __FILE__)
2
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require "jekyll-open-sdg-plugins/version"
4
- Gem::Specification.new do |spec|
5
- spec.name = "jekyll-open-sdg-plugins"
6
- spec.summary = "Jekyll plugins for use with the Open SDG platform"
7
- spec.description = "Jekyll plugins for use with the Open SDG platform"
8
- spec.version = JekyllOpenSdgPlugins::VERSION
9
- spec.authors = ["Brock Fanning"]
10
- spec.email = ["brockfanning@gmail.com"]
11
- spec.homepage = "https://github.com/open-sdg/jekyll-open-sdg-plugins"
12
- spec.licenses = ["MIT"]
13
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r!^(test|spec|features)/!) }
14
- spec.require_paths = ["lib"]
15
- spec.add_dependency "jekyll", "~> 3.0"
16
- spec.add_dependency "deep_merge", "~> 1.2"
17
- end
1
+ lib = File.expand_path("../lib", __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require "jekyll-open-sdg-plugins/version"
4
+ Gem::Specification.new do |spec|
5
+ spec.name = "jekyll-open-sdg-plugins"
6
+ spec.summary = "Jekyll plugins for use with the Open SDG platform"
7
+ spec.description = "Jekyll plugins for use with the Open SDG platform"
8
+ spec.version = JekyllOpenSdgPlugins::VERSION
9
+ spec.authors = ["Brock Fanning"]
10
+ spec.email = ["brockfanning@gmail.com"]
11
+ spec.homepage = "https://github.com/open-sdg/jekyll-open-sdg-plugins"
12
+ spec.licenses = ["MIT"]
13
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r!^(test|spec|features)/!) }
14
+ spec.require_paths = ["lib"]
15
+ spec.add_dependency "jekyll", "~> 3.0"
16
+ spec.add_dependency "deep_merge", "~> 1.2"
17
+ spec.add_dependency "json_schemer", "~> 0.2"
18
+ end
@@ -1,13 +1,16 @@
1
- require_relative "jekyll-open-sdg-plugins/version"
2
- require_relative "jekyll-open-sdg-plugins/fetch_remote_data"
3
- require_relative "jekyll-open-sdg-plugins/translate_key"
4
- require_relative "jekyll-open-sdg-plugins/translate_date"
5
- require_relative "jekyll-open-sdg-plugins/translate_metadata_field"
6
- require_relative "jekyll-open-sdg-plugins/create_indicators"
7
- require_relative "jekyll-open-sdg-plugins/create_goals"
8
- require_relative "jekyll-open-sdg-plugins/create_pages"
9
- require_relative "jekyll-open-sdg-plugins/sdg_variables"
10
- require_relative "jekyll-open-sdg-plugins/search_index"
11
-
12
- module JekyllOpenSdgPlugins
13
- end
1
+ require_relative "jekyll-open-sdg-plugins/version"
2
+ require_relative "jekyll-open-sdg-plugins/site_configuration"
3
+ require_relative "jekyll-open-sdg-plugins/validate_site_config"
4
+ require_relative "jekyll-open-sdg-plugins/fetch_remote_data"
5
+ require_relative "jekyll-open-sdg-plugins/translate_key"
6
+ require_relative "jekyll-open-sdg-plugins/translate_date"
7
+ require_relative "jekyll-open-sdg-plugins/translate_metadata_field"
8
+ require_relative "jekyll-open-sdg-plugins/create_indicators"
9
+ require_relative "jekyll-open-sdg-plugins/create_goals"
10
+ require_relative "jekyll-open-sdg-plugins/create_pages"
11
+ require_relative "jekyll-open-sdg-plugins/sdg_variables"
12
+ require_relative "jekyll-open-sdg-plugins/search_index"
13
+ require_relative "jekyll-open-sdg-plugins/validate_indicator_config"
14
+
15
+ module JekyllOpenSdgPlugins
16
+ end
@@ -1,75 +1,72 @@
1
- require "jekyll"
2
- require_relative "helpers"
3
-
4
- module JekyllOpenSdgPlugins
5
- class CreateGoals < Jekyll::Generator
6
- safe true
7
- priority :normal
8
-
9
- def generate(site)
10
- # If site.create_goals is set, create goals per the metadata.
11
- if site.config['languages'] and site.config['create_goals']
12
- # Compile the list of goals.
13
- goals = {}
14
- # Are we using translated builds?
15
- metadata = {}
16
- if opensdg_translated_builds(site)
17
- # If we are using translated builds, the 'meta' data is underneath
18
- # language codes. We just use the first language.
19
- default_language = site.config['languages'][0]
20
- metadata = site.data[default_language]['meta']
21
- else
22
- # Otherwise the 'meta' data is not underneath any language code.
23
- metadata = site.data['meta']
24
- end
25
- metadata.each do |inid, indicator|
26
- goal = inid.split('-')[0].to_i
27
- goals[goal] = true
28
- end
29
- # Decide what layout to use for the goal pages.
30
- layout = 'goal'
31
- if site.config['create_goals'].key?('layout')
32
- layout = site.config['create_goals']['layout']
33
- end
34
- # See if we need to "map" any language codes.
35
- languages_public = Hash.new
36
- if site.config['languages_public']
37
- languages_public = site.config['languages_public']
38
- end
39
- # Loop through the languages.
40
- site.config['languages'].each_with_index do |language, index|
41
- # Get the "public language" (for URLs) which may be different.
42
- language_public = language
43
- if languages_public[language]
44
- language_public = languages_public[language]
45
- end
46
- # Loop through the goals.
47
- goals.sort.each do |goal, value|
48
- # Add the language subfolder for all except the default (first) language.
49
- dir = index == 0 ? goal.to_s : File.join(language_public, goal.to_s)
50
- # Create the goal page.
51
- site.collections['goals'].docs << GoalPage.new(site, site.source, dir, goal, language, layout)
52
- end
53
- end
54
- end
55
- end
56
- end
57
-
58
- # A Page subclass used in the `CreateGoals` class.
59
- class GoalPage < Jekyll::Page
60
- def initialize(site, base, dir, goal, language, layout)
61
- @site = site
62
- @base = base
63
- @dir = dir
64
- @name = 'index.html'
65
-
66
- self.process(@name)
67
- self.data = {}
68
- self.data['goal_number'] = goal.to_s
69
- self.data['language'] = language
70
- self.data['layout'] = layout
71
- # Backwards compatibility:
72
- self.data['sdg_goal'] = self.data['goal_number']
73
- end
74
- end
75
- end
1
+ require "jekyll"
2
+ require_relative "helpers"
3
+
4
+ module JekyllOpenSdgPlugins
5
+ class CreateGoals < Jekyll::Generator
6
+ safe true
7
+ priority :normal
8
+
9
+ def generate(site)
10
+ # If site.create_goals is set, create goals per the metadata.
11
+ if site.config['languages'] and site.config['create_goals'] and site.config['create_goals'].key?('layout') and site.config['create_goals']['layout'] != ''
12
+ # Compile the list of goals.
13
+ goals = {}
14
+ # Are we using translated builds?
15
+ metadata = {}
16
+ if opensdg_translated_builds(site)
17
+ # If we are using translated builds, the 'meta' data is underneath
18
+ # language codes. We just use the first language.
19
+ default_language = site.config['languages'][0]
20
+ metadata = site.data[default_language]['meta']
21
+ else
22
+ # Otherwise the 'meta' data is not underneath any language code.
23
+ metadata = site.data['meta']
24
+ end
25
+ metadata.each do |inid, indicator|
26
+ goal = inid.split('-')[0].to_i
27
+ goals[goal] = true
28
+ end
29
+ # Decide what layout to use for the goal pages.
30
+ layout = site.config['create_goals']['layout']
31
+ # See if we need to "map" any language codes.
32
+ languages_public = Hash.new
33
+ if site.config['languages_public']
34
+ languages_public = opensdg_languages_public(site)
35
+ end
36
+ # Loop through the languages.
37
+ site.config['languages'].each_with_index do |language, index|
38
+ # Get the "public language" (for URLs) which may be different.
39
+ language_public = language
40
+ if languages_public[language]
41
+ language_public = languages_public[language]
42
+ end
43
+ # Loop through the goals.
44
+ goals.sort.each do |goal, value|
45
+ # Add the language subfolder for all except the default (first) language.
46
+ dir = index == 0 ? goal.to_s : File.join(language_public, goal.to_s)
47
+ # Create the goal page.
48
+ site.collections['goals'].docs << GoalPage.new(site, site.source, dir, goal, language, layout)
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+
55
+ # A Page subclass used in the `CreateGoals` class.
56
+ class GoalPage < Jekyll::Page
57
+ def initialize(site, base, dir, goal, language, layout)
58
+ @site = site
59
+ @base = base
60
+ @dir = dir
61
+ @name = 'index.html'
62
+
63
+ self.process(@name)
64
+ self.data = {}
65
+ self.data['goal_number'] = goal.to_s
66
+ self.data['language'] = language
67
+ self.data['layout'] = layout
68
+ # Backwards compatibility:
69
+ self.data['sdg_goal'] = self.data['goal_number']
70
+ end
71
+ end
72
+ end
@@ -1,67 +1,117 @@
1
- require "jekyll"
2
- require_relative "helpers"
3
-
4
- module JekyllOpenSdgPlugins
5
- class CreateIndicators < Jekyll::Generator
6
- safe true
7
- priority :normal
8
-
9
- def generate(site)
10
- # If site.create_indicators is set, create indicators per the metadata.
11
- if site.config['languages'] and site.config['create_indicators']
12
- # Decide what layout to use for the indicator pages.
13
- layout = 'indicator'
14
- if site.config['create_indicators'].key?('layout')
15
- layout = site.config['create_indicators']['layout']
16
- end
17
- # See if we need to "map" any language codes.
18
- languages_public = Hash.new
19
- if site.config['languages_public']
20
- languages_public = site.config['languages_public']
21
- end
22
- # Loop through the languages.
23
- site.config['languages'].each_with_index do |language, index|
24
- # Get the "public language" (for URLs) which may be different.
25
- language_public = language
26
- if languages_public[language]
27
- language_public = languages_public[language]
28
- end
29
- metadata = {}
30
- if opensdg_translated_builds(site)
31
- # If we are using translated builds, the metadata is underneath a
32
- # language code.
33
- metadata = site.data[language]['meta']
34
- else
35
- # Otherwise the 'meta' data is not underneath any language code.
36
- metadata = site.data['meta']
37
- end
38
- # Loop through the indicators (using metadata as a list).
39
- metadata.each do |inid, meta|
40
- # Add the language subfolder for all except the default (first) language.
41
- dir = index == 0 ? inid : File.join(language_public, inid)
42
- # Create the indicator page.
43
- site.collections['indicators'].docs << IndicatorPage.new(site, site.source, dir, inid, language, layout)
44
- end
45
- end
46
- end
47
- end
48
- end
49
-
50
- # A Page subclass used in the `CreateIndicators` class.
51
- class IndicatorPage < Jekyll::Page
52
- def initialize(site, base, dir, inid, language, layout)
53
- @site = site
54
- @base = base
55
- @dir = dir
56
- @name = 'index.html'
57
-
58
- self.process(@name)
59
- self.data = {}
60
- self.data['indicator_number'] = inid.gsub('-', '.')
61
- self.data['layout'] = layout
62
- self.data['language'] = language
63
- # Backwards compatibility:
64
- self.data['indicator'] = self.data['indicator_number']
65
- end
66
- end
67
- end
1
+ require "jekyll"
2
+ require_relative "helpers"
3
+
4
+ module JekyllOpenSdgPlugins
5
+ class CreateIndicators < Jekyll::Generator
6
+ safe true
7
+ priority :normal
8
+
9
+ def generate(site)
10
+ # If site.create_indicators is set, create indicators per the metadata.
11
+ if site.config['languages'] and site.config['create_indicators'] and site.config['create_indicators'].key?('layout') and site.config['create_indicators']['layout'] != ''
12
+ # Decide what layout to use for the indicator pages.
13
+ layout = site.config['create_indicators']['layout']
14
+ # See if we need to "map" any language codes.
15
+ languages_public = Hash.new
16
+ if site.config['languages_public']
17
+ languages_public = opensdg_languages_public(site)
18
+ end
19
+ # Loop through the languages.
20
+ site.config['languages'].each_with_index do |language, index|
21
+ # Get the "public language" (for URLs) which may be different.
22
+ language_public = language
23
+ if languages_public[language]
24
+ language_public = languages_public[language]
25
+ end
26
+ metadata = {}
27
+ if opensdg_translated_builds(site)
28
+ # If we are using translated builds, the metadata is underneath a
29
+ # language code.
30
+ metadata = site.data[language]['meta']
31
+ else
32
+ # Otherwise the 'meta' data is not underneath any language code.
33
+ metadata = site.data['meta']
34
+ end
35
+ # Loop through the indicators (using metadata as a list).
36
+ metadata.each do |inid, meta|
37
+ # Add the language subfolder for all except the default (first) language.
38
+ dir = index == 0 ? inid : File.join(language_public, inid)
39
+ # Create the indicator page.
40
+ site.collections['indicators'].docs << IndicatorPage.new(site, site.source, dir, inid, language, layout)
41
+ end
42
+ end
43
+ # Create the indicator configuration pages.
44
+ if site.config['create_config_forms'] && site.config['create_config_forms'].key?('layout') && site.config['create_config_forms']['layout'] != ''
45
+ metadata = {}
46
+ layout = site.config['create_config_forms']['layout']
47
+ if opensdg_translated_builds(site)
48
+ if site.data.has_key?('untranslated')
49
+ metadata = site.data['untranslated']['meta']
50
+ else
51
+ default_language = site.config['languages'][0]
52
+ metadata = site.data[default_language]['meta']
53
+ end
54
+ else
55
+ metadata = site.data['meta']
56
+ end
57
+ # Loop through the indicators (using metadata as a list).
58
+ if !metadata.empty?
59
+ # Loop through the languages.
60
+ site.config['languages'].each_with_index do |language, index|
61
+ # Get the "public language" (for URLs) which may be different.
62
+ language_public = language
63
+ if languages_public[language]
64
+ language_public = languages_public[language]
65
+ end
66
+ metadata.each do |inid, meta|
67
+ dir = File.join('config', inid)
68
+ if index != 0
69
+ dir = File.join(language_public, 'config', inid)
70
+ end
71
+ site.collections['pages'].docs << IndicatorConfigPage.new(site, site.source, dir, inid, language, meta, layout)
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
79
+
80
+ # A Page subclass used in the `CreateIndicators` class.
81
+ class IndicatorPage < Jekyll::Page
82
+ def initialize(site, base, dir, inid, language, layout)
83
+ @site = site
84
+ @base = base
85
+ @dir = dir
86
+ @name = 'index.html'
87
+
88
+ self.process(@name)
89
+ self.data = {}
90
+ self.data['indicator_number'] = inid.gsub('-', '.')
91
+ self.data['layout'] = layout
92
+ self.data['language'] = language
93
+ # Backwards compatibility:
94
+ self.data['indicator'] = self.data['indicator_number']
95
+ end
96
+ end
97
+
98
+ # A Page subclass used in the `CreateIndicators` class.
99
+ class IndicatorConfigPage < Jekyll::Page
100
+ def initialize(site, base, dir, inid, language, meta, layout)
101
+ @site = site
102
+ @base = base
103
+ @dir = dir
104
+ @name = 'index.html'
105
+
106
+ self.process(@name)
107
+ self.data = {}
108
+ self.data['language'] = language
109
+ self.data['indicator_number'] = inid.gsub('-', '.')
110
+ self.data['config_type'] = 'indicator'
111
+ self.data['layout'] = layout
112
+ self.data['meta'] = meta
113
+ self.data['title'] = 'Open SDG indicator configuration: ' + self.data['indicator_number']
114
+ self.data['config_filename'] = inid + '.yml'
115
+ end
116
+ end
117
+ end