jekyll-zettel 0.2.0 → 0.4.2

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: 139c69b08fb7f8bacee03b6d1903f69e6de8f865a70e6cba2807d0d3f7097e8c
4
+ data.tar.gz: 501e5de45c6348d6510323d97e9e6e583b7807a4b80a312f919e7358a8c77e9c
5
5
  SHA512:
6
- metadata.gz: 4b32fb9290c44c7b0eb6561578e9dc1a67bb4da9ee6ebc6396290c80dce04fb6bc3c756af2ee132ecca6e73ed02c1bfa59ab031d25f5e5317e57d7fa77ac969d
7
- data.tar.gz: 56cd8b1aa65a850ba66997acc4040ab7b37c429086b1c43cea679c46ac84275bdd43b425416d58afe0d42bea18b821675c914b684b52a7034e14a413bf5b6dd2
6
+ metadata.gz: 4c41bcf8edd1a28185ef23f88ba2d8e8e199b5357a8c147edb7a1e97e37a7caab2738363badf144785e6e253cb2d2c8ac4d83e37e52403b231814775fce259e7
7
+ data.tar.gz: f150041e4a8b31d864c02bf1fe57bb521ab6e4689195d2fe5383e28a1decea536abce5369507aed2c8ac3f705377b728280c20e7b12817869e7bc7da6608dd55
@@ -1,4 +1,6 @@
1
1
  ---
2
+ layout: zettel
3
+ #
2
4
  # created_at: #{Time.now}
3
5
  #
4
6
  # Die UUID des Zettels entspricht dem Namen des Unterverzeichnisses.
@@ -9,14 +11,14 @@ zettel: #{uuid}
9
11
  # Die Dokumentation aller Properties findest du unter
10
12
  # https://jessas.org/dokumentation/zettel/#frontmatter
11
13
  #
12
- layout:
13
14
  title:
14
15
  description:
16
+ author:
15
17
  #
16
18
  # Optionale Properties
17
19
  #
18
- # author:
19
20
  # tags: []
21
+ # folgezettel: []
20
22
  # image:
21
23
  # via:
22
24
  # text:
@@ -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,50 @@
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
+ @site.data['tag2glosse'] = {}
15
+
16
+ site.pages.each do |page|
17
+ next unless SLUG_FORMAT.match?(page.path.to_s)
18
+
19
+ register_tag(page)
20
+ end
21
+
22
+ write_catalog 'tags'
23
+ write_catalog 'tag2glosse'
24
+ end
25
+
26
+ def register_tag(doc)
27
+ parts = doc.path.to_s.match(SLUG_FORMAT)
28
+ @site.data['tags'][parts[:slug]] = {
29
+ 'slug' => parts[:slug],
30
+ 'tag' => doc.data['tag'] || 'Missing @tag',
31
+ 'label' => doc.data['title'] || 'Missing @title',
32
+ 'description' => doc.data['description'] || 'Missing @description',
33
+ 'tags' => doc.data['tags']
34
+ }
35
+ doc.data['slug'] = parts[:slug]
36
+ register_tags(doc)
37
+ end
38
+
39
+ def register_tags(doc)
40
+ return unless doc.data.key?('tags')
41
+
42
+ doc.data['tags'].each { |tag|
43
+ @site.data['tag2glosse'][tag] = [] unless @site.data['tag2glosse'].key?(tag)
44
+
45
+ @site.data['tag2glosse'][tag] << doc.data['slug']
46
+ }
47
+ end
48
+ end
49
+ end
50
+ 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.4.2'.freeze
4
4
  end
5
5
  end
@@ -0,0 +1,53 @@
1
+ module Jekyll
2
+ module Zettel
3
+ # Generate tags.json from page front matter
4
+ class Zettelkasten < Jekyll::Generator
5
+ include Zettel
6
+
7
+ priority :low
8
+
9
+ SLUG_FORMAT = %r{zettel/(?<uuid>.*)/index.(?<ext>html|md)}i.freeze
10
+
11
+ attr_reader :site
12
+
13
+ def generate(site)
14
+ @site = site
15
+ @site.data['zettelkasten'] = {}
16
+ @site.data['tag2zettel'] = {}
17
+
18
+ site.pages.each do |page|
19
+ next unless SLUG_FORMAT.match?(page.path.to_s)
20
+
21
+ register_zettel(page)
22
+ register_tags(page)
23
+ end
24
+
25
+ write_catalog 'zettelkasten'
26
+ write_catalog 'tag2zettel'
27
+ end
28
+
29
+ def register_zettel(doc)
30
+ @site.data['zettelkasten'][doc.data['zettel']] = {
31
+ 'zettel' => doc.data['zettel'],
32
+ 'title' => doc.data['title'],
33
+ 'description' => doc.data['description'],
34
+ 'author' => doc.data['author'],
35
+ 'tags' => doc.data['tags'],
36
+ 'folgezettel' => doc.data['folgezettel'],
37
+ 'via' => doc.data['via'],
38
+ 'citekey' => doc.data['citekey']
39
+ }
40
+ end
41
+
42
+ def register_tags(doc)
43
+ return unless doc.data.key?('tags')
44
+
45
+ doc.data['tags'].each { |tag|
46
+ @site.data['tag2zettel'][tag] = [] unless @site.data['tag2zettel'].key?(tag)
47
+
48
+ @site.data['tag2zettel'][tag] << doc.data['zettel']
49
+ }
50
+ end
51
+ end
52
+ end
53
+ end
data/lib/jekyll/zettel.rb CHANGED
@@ -10,12 +10,31 @@ 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'
40
+ require 'jekyll/zettel/zettelkasten'
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.4.2
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-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: citeproc-ruby
@@ -110,7 +110,10 @@ 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
116
+ - lib/jekyll/zettel/zettelkasten.rb
114
117
  homepage: https://michaelgerzabek.com/gems/jekyll-zettel
115
118
  licenses:
116
119
  - MIT