jekyll-open-sdg-plugins 0.0.6 → 0.0.7
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 87648f4556fee686eb7926015147d736d8d52081bbc8427c90b35c9bdced87b3
|
4
|
+
data.tar.gz: 228cc5b9614fb508ff1ebc85de543495ff1f0358bc12aad046946162ab3b4c7c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3a65a769b229b002fb44d389ca2ce043e9a2356b21129ff95b9f4df217c53b0256da30403fd0586cd77ed492cc131b38eb81ab5a08744513b4dcdda4b2d1e2bb
|
7
|
+
data.tar.gz: 8b43c92ef8aa602960da11a0a977fa6bb75bb014574f276a3c6495f2d47767dfb6740c8b19e99f812eecf5ea82b40644dd83ea22f8e0da265f2bc626a276cdf5
|
data/README.md
CHANGED
@@ -1,3 +1,41 @@
|
|
1
1
|
# jekyll-open-sdg-plugins
|
2
2
|
|
3
3
|
> 💎 Jekyll plugins for use with the Open SDG platform
|
4
|
+
|
5
|
+
This plugin provides some Jekyll functionality for the [Open SDG](https://github.com/open-sdg/open-sdg) platform.
|
6
|
+
|
7
|
+
The functionality provided consists of:
|
8
|
+
|
9
|
+
## 1. A "t" Liquid filter for translating strings.
|
10
|
+
|
11
|
+
Usage example:
|
12
|
+
|
13
|
+
```
|
14
|
+
{{ my_variable | t }}
|
15
|
+
```
|
16
|
+
|
17
|
+
## 2. Fill in missing fields to allow partially translated metadata.
|
18
|
+
|
19
|
+
This allows metadata to be translated, field-by-field as needed, in subfolders in the data repository.
|
20
|
+
|
21
|
+
## 3. Automatically create goal pages based on data.
|
22
|
+
|
23
|
+
This creates goal pages automatically based on the data, so that the site repository does not need to maintain a `_goals` folder. It depends on a `_config.yml` setting.
|
24
|
+
|
25
|
+
Usage example (in `_config.yml`):
|
26
|
+
```
|
27
|
+
create_goals:
|
28
|
+
# This determines which layout is used to render the pages.
|
29
|
+
layout: goal
|
30
|
+
```
|
31
|
+
|
32
|
+
## 4. Automatically create indicator pages based on data.
|
33
|
+
|
34
|
+
This creates indicator pages automatically based on the data, so that the site repository does not need to maintain a `_indicators` folder. It depends on a `_config.yml` setting.
|
35
|
+
|
36
|
+
Usage example (in `_config.yml`):
|
37
|
+
```
|
38
|
+
create_indicators:
|
39
|
+
# This determines which layout is used to render the pages.
|
40
|
+
layout: indicator
|
41
|
+
```
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require "jekyll"
|
2
|
+
|
3
|
+
module JekyllOpenSdgPlugins
|
4
|
+
class CreateGoals < Jekyll::Generator
|
5
|
+
safe true
|
6
|
+
priority :low
|
7
|
+
|
8
|
+
def generate(site)
|
9
|
+
# If site.create_goals is set, create goals per the metadata.
|
10
|
+
if site.config['languages'] and site.config['create_goals']
|
11
|
+
# Compile the list of goals.
|
12
|
+
goals = {}
|
13
|
+
site.data['meta'].each do |inid, meta|
|
14
|
+
goal = inid.split('-')[0].to_i
|
15
|
+
goals[goal] = true
|
16
|
+
end
|
17
|
+
# Decide what layout to use for the goal pages.
|
18
|
+
layout = 'goal'
|
19
|
+
if site.config['create_goals'].key?('layout')
|
20
|
+
layout = site.config['create_goals']['layout']
|
21
|
+
end
|
22
|
+
# Loop through the languages.
|
23
|
+
site.config['languages'].each_with_index do |language, index|
|
24
|
+
# Loop through the goals.
|
25
|
+
goals.sort.each do |goal, value|
|
26
|
+
# Add the language subfolder for all except the default (first) language.
|
27
|
+
dir = index == 0 ? goal.to_s : File.join(language, goal.to_s)
|
28
|
+
# Create the goal page.
|
29
|
+
site.collections['goals'].docs << GoalPage.new(site, site.source, dir, goal, language, layout)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# A Page subclass used in the `CreateGoals` class.
|
37
|
+
class GoalPage < Jekyll::Page
|
38
|
+
def initialize(site, base, dir, goal, language, layout)
|
39
|
+
@site = site
|
40
|
+
@base = base
|
41
|
+
@dir = dir
|
42
|
+
@name = 'index.html'
|
43
|
+
|
44
|
+
self.process(@name)
|
45
|
+
self.data = {}
|
46
|
+
self.data['sdg_goal'] = goal.to_s
|
47
|
+
self.data['language'] = language
|
48
|
+
self.data['layout'] = layout
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require "jekyll"
|
2
|
+
|
3
|
+
module JekyllOpenSdgPlugins
|
4
|
+
class CreateIndicators < Jekyll::Generator
|
5
|
+
safe true
|
6
|
+
priority :low
|
7
|
+
|
8
|
+
def generate(site)
|
9
|
+
# If site.create_indicators is set, create indicators per the metadata.
|
10
|
+
if site.config['languages'] and site.config['create_indicators']
|
11
|
+
# Decide what layout to use for the indicator pages.
|
12
|
+
layout = 'indicator'
|
13
|
+
if site.config['create_indicators'].key?('layout')
|
14
|
+
layout = site.config['create_indicators']['layout']
|
15
|
+
end
|
16
|
+
# Loop through the languages.
|
17
|
+
site.config['languages'].each_with_index do |language, index|
|
18
|
+
# Loop through the indicators (using metadata as a list).
|
19
|
+
site.data['meta'].each do |inid, meta|
|
20
|
+
# Add the language subfolder for all except the default (first) language.
|
21
|
+
dir = index == 0 ? inid : File.join(language, inid)
|
22
|
+
# Create the indicator page.
|
23
|
+
site.collections['indicators'].docs << IndicatorPage.new(site, site.source, dir, inid, language, layout)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# A Page subclass used in the `CreateIndicators` class.
|
31
|
+
class IndicatorPage < Jekyll::Page
|
32
|
+
def initialize(site, base, dir, inid, language, layout)
|
33
|
+
@site = site
|
34
|
+
@base = base
|
35
|
+
@dir = dir
|
36
|
+
@name = 'index.html'
|
37
|
+
|
38
|
+
self.process(@name)
|
39
|
+
self.data = {}
|
40
|
+
self.data['indicator'] = inid.gsub('-', '.')
|
41
|
+
self.data['layout'] = layout
|
42
|
+
self.data['language'] = language
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -1,6 +1,8 @@
|
|
1
1
|
require_relative "jekyll-open-sdg-plugins/version"
|
2
2
|
require_relative "jekyll-open-sdg-plugins/multilingual_metadata"
|
3
3
|
require_relative "jekyll-open-sdg-plugins/translate_key"
|
4
|
+
require_relative "jekyll-open-sdg-plugins/create_indicators"
|
5
|
+
require_relative "jekyll-open-sdg-plugins/create_goals"
|
4
6
|
|
5
7
|
module JekyllOpenSdgPlugins
|
6
8
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-open-sdg-plugins
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brock Fanning
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-05-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -37,6 +37,8 @@ files:
|
|
37
37
|
- README.md
|
38
38
|
- jekyll-open-sdg-plugins.gemspec
|
39
39
|
- lib/jekyll-open-sdg-plugins.rb
|
40
|
+
- lib/jekyll-open-sdg-plugins/create_goals.rb
|
41
|
+
- lib/jekyll-open-sdg-plugins/create_indicators.rb
|
40
42
|
- lib/jekyll-open-sdg-plugins/multilingual_metadata.rb
|
41
43
|
- lib/jekyll-open-sdg-plugins/translate_key.rb
|
42
44
|
- lib/jekyll-open-sdg-plugins/version.rb
|