jekyll-zettel 0.2.0 → 0.3.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: 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: