jekyll-zettel 0.2.0 → 0.3.0

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: 921384cb754da348e878073a1ad14e05f84a530015d6dcab10be12c6c9f1d9fa
4
- data.tar.gz: 1f2d96180b3177197c1436fe03c948ebb8811ca07a44871c728dc0ab376305f0
3
+ metadata.gz: b445f911f00123795c40b497bdb038984d72d20b65136fa9a268e266523e142a
4
+ data.tar.gz: '0781199351ad2a4027f91bdf57a087b6cca0af4d6185a56cd792452d9065e78b'
5
5
  SHA512:
6
- metadata.gz: 4b32fb9290c44c7b0eb6561578e9dc1a67bb4da9ee6ebc6396290c80dce04fb6bc3c756af2ee132ecca6e73ed02c1bfa59ab031d25f5e5317e57d7fa77ac969d
7
- data.tar.gz: 56cd8b1aa65a850ba66997acc4040ab7b37c429086b1c43cea679c46ac84275bdd43b425416d58afe0d42bea18b821675c914b684b52a7034e14a413bf5b6dd2
6
+ metadata.gz: bdb0e69d2530555911fc72418bfe2f0306b7d6359d0d8f60c04a24aacb559f702175b728d358fcd6557cadb2781ca42b56344625e322ed14d7d7ddb003b4b4b9
7
+ data.tar.gz: 2a254ad2f926bebb23c6c8f005e45e0bbee7436cb7b94f9e626ab7e3b74f50adcae487bb356b54898afc256fc6e0795719372378fe7d3328d7b7d2c109473610
@@ -2,6 +2,7 @@ module Jekyll
2
2
  module Zettel
3
3
  # Enrich page front matter with object meta data
4
4
  class References < Jekyll::Generator
5
+ include Zettel
5
6
 
6
7
  priority :highest
7
8
 
@@ -10,13 +11,24 @@ module Jekyll
10
11
  def generate(site)
11
12
  @site = site
12
13
 
13
- @site.config['citeproc'] = CiteProc::Processor.new locale: 'de-AT', style: 'apa', format: 'html'
14
+ @site.data['references'] = {}
15
+ configure_citeproc
14
16
 
15
17
  site.pages.each do |page|
16
18
  next unless page.path.to_s.end_with?('index.html') || page.path.to_s.end_with?('index.md')
17
19
 
18
20
  tie_reference(page)
19
21
  end
22
+
23
+ write_catalog 'references'
24
+ end
25
+
26
+ def configure_citeproc
27
+ locale = @site.config['citation']['locale'] || 'en-US'
28
+ style = @site.config['citation']['style'] || 'apa'
29
+
30
+ @site.config['citeproc'] = CiteProc::Processor.new locale: locale, style: style, format: 'html'
31
+ Jekyll.logger.info LOG_KEY, "Configured cite processor `#{locale}`/`#{style}`"
20
32
  end
21
33
 
22
34
  def tie_reference(doc)
@@ -31,6 +43,7 @@ module Jekyll
31
43
 
32
44
  def register_reference(doc, file)
33
45
  if doc.data['reference'].include?('id')
46
+ @site.data['references'][doc.data['reference']['id']] = doc.data['reference']
34
47
  @site.config['citeproc'].register doc.data['reference']
35
48
  doc.data['citekey'] = doc.data['reference']['id']
36
49
  else
@@ -38,6 +51,7 @@ module Jekyll
38
51
  Jekyll.logger.warn '', "./#{file}"
39
52
  end
40
53
  end
54
+
41
55
  end
42
56
  end
43
57
  end
@@ -0,0 +1,36 @@
1
+ module Jekyll
2
+ module Zettel
3
+ # Generate tags.json from page front matter
4
+ class Tags < Jekyll::Generator
5
+ include Zettel
6
+
7
+ SLUG_FORMAT = %r{glosse/(?<slug>.*)/index.(?<ext>html|md)}i.freeze
8
+
9
+ attr_reader :site
10
+
11
+ def generate(site)
12
+ @site = site
13
+ @site.data['tags'] = {}
14
+
15
+ site.pages.each do |page|
16
+ next unless SLUG_FORMAT.match?(page.path.to_s)
17
+
18
+ register_tag(page)
19
+ end
20
+
21
+ write_catalog 'tags'
22
+ end
23
+
24
+ def register_tag(doc)
25
+ parts = doc.path.to_s.match(SLUG_FORMAT)
26
+ @site.data['tags'][parts[:slug]] = {
27
+ 'slug' => parts[:slug],
28
+ 'tag' => doc.data['tag'] || 'Missing @tag',
29
+ 'label' => doc.data['title'] || 'Missing @title',
30
+ 'description' => doc.data['description'] || 'Missing @description'
31
+ }
32
+ end
33
+
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,29 @@
1
+ module Jekyll
2
+ module Zettel
3
+ # Enrich page front matter with timeline data
4
+ class Timeline < Jekyll::Generator
5
+
6
+ attr_reader :site
7
+
8
+ def generate(site)
9
+ @site = site
10
+
11
+ site.pages.each do |page|
12
+ next unless page.path.to_s.end_with?('index.html') || page.path.to_s.end_with?('index.md')
13
+
14
+ tie_timeline(page)
15
+ end
16
+ end
17
+
18
+ def tie_timeline(doc)
19
+ dir = File.dirname(doc.path)
20
+ file = @site.in_source_dir(dir, 'timeline.json')
21
+ return unless File.exist?(file)
22
+
23
+ doc.data['timeline'] = SafeYAML.load_file(file)
24
+ doc.data['timeline']['src'] = "#{doc.url}timeline.json"
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -1,5 +1,5 @@
1
1
  module Jekyll
2
2
  module Zettel
3
- VERSION = '0.2.0'.freeze
3
+ VERSION = '0.3.0'.freeze
4
4
  end
5
5
  end
data/lib/jekyll/zettel.rb CHANGED
@@ -10,12 +10,30 @@ module Jekyll
10
10
 
11
11
  autoload :VERSION, 'jekyll/zettel/version'
12
12
 
13
- LOG_KEY = 'Jekyll Zettel'.freeze
13
+ LOG_KEY = 'Zettel:'.freeze
14
14
 
15
15
  class Error < StandardError; end
16
+
17
+ def write_catalog(object)
18
+ Jekyll.logger.info LOG_KEY, "Created references in `#{@site.in_dest_dir('.objects', "#{object}.json")}`"
19
+
20
+ page = Jekyll::PageWithoutAFile.new(@site, @site.source, '.objects', "#{object}.json").tap do |file|
21
+ file.content = JSON.pretty_generate(@site.data[object.to_s])
22
+ file.data.merge!(
23
+ 'layout' => nil,
24
+ 'sitemap' => false,
25
+ )
26
+
27
+ file.output
28
+ end
29
+
30
+ @site.pages << page
31
+ end
16
32
  end
17
33
  end
18
34
 
19
35
  require 'jekyll/commands/zettel'
20
36
  require 'jekyll/zettel/references'
21
37
  require 'jekyll/zettel/reference'
38
+ require 'jekyll/zettel/timeline'
39
+ require 'jekyll/zettel/tags'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-zettel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Gerzabek
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-01-05 00:00:00.000000000 Z
11
+ date: 2022-01-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: citeproc-ruby
@@ -110,6 +110,8 @@ files:
110
110
  - lib/jekyll/zettel.rb
111
111
  - lib/jekyll/zettel/reference.rb
112
112
  - lib/jekyll/zettel/references.rb
113
+ - lib/jekyll/zettel/tags.rb
114
+ - lib/jekyll/zettel/timeline.rb
113
115
  - lib/jekyll/zettel/version.rb
114
116
  homepage: https://michaelgerzabek.com/gems/jekyll-zettel
115
117
  licenses: