jekyll-zettel 0.1.1 → 0.4.1
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 +4 -4
- data/README.md +3 -3
- data/jekyll-zettel.gemspec +4 -2
- data/lib/jekyll/{zettel/commands → commands}/zettel.rb +0 -0
- data/lib/jekyll/{zettel/stubs → stubs}/index.md +4 -2
- data/lib/jekyll/zettel/reference.rb +15 -0
- data/lib/jekyll/zettel/references.rb +57 -0
- data/lib/jekyll/zettel/tags.rb +48 -0
- data/lib/jekyll/zettel/timeline.rb +29 -0
- data/lib/jekyll/zettel/version.rb +1 -1
- data/lib/jekyll/zettel/zettelkasten.rb +53 -0
- data/lib/jekyll/zettel.rb +25 -2
- metadata +49 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7293e5026d2854b40b1cc8660fc31b22d98ab1080d803c052a2e619de24b8cff
|
4
|
+
data.tar.gz: f55cf5c4105f4589d6ba1663d18878dd4e4c7a70dbf05cbc6bca17e2760a2cf4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c07d939e66707568bb54bc640f2be09c771b21361d2e8e16a6d90fc0ab7c90dd33bd1cbb2b9eef71c4f7b3038c2d1ae85ec47fc438f11d817f54c4e71ccb9df7
|
7
|
+
data.tar.gz: 249459ea018980190901d630c0bdc16c05fae38974211a8051bbea3a1ff74de7d2f28352ae0c20c44a43f656fd70568b3a1eadd74020eb85cdae058b59071d36
|
data/README.md
CHANGED
@@ -24,9 +24,9 @@ TODO: Write usage instructions here
|
|
24
24
|
|
25
25
|
## Development
|
26
26
|
|
27
|
-
|
28
|
-
|
29
|
-
|
27
|
+
Gem zusammenbauen mit `gem build jekyll-zettel.gemspec -V --debug`
|
28
|
+
Gem publizieren mit `gem push jekyll-zettel-0.1.0.gem` (die Versionsnummer entsprechend anpassen).
|
29
|
+
Verwendet Google Authenticator ;-)
|
30
30
|
|
31
31
|
## Contributing
|
32
32
|
|
data/jekyll-zettel.gemspec
CHANGED
@@ -27,6 +27,8 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
28
28
|
spec.require_paths = ['lib']
|
29
29
|
|
30
|
-
spec.
|
31
|
-
spec.
|
30
|
+
spec.add_runtime_dependency 'citeproc-ruby', '>= 2.0', '< 3.0'
|
31
|
+
spec.add_runtime_dependency 'csl-styles', '>= 2.0', '< 3.0'
|
32
|
+
spec.add_runtime_dependency 'fileutils', '>= 1.4', '< 2.0'
|
33
|
+
spec.add_runtime_dependency 'jekyll', '>= 3.8', '< 5.0'
|
32
34
|
end
|
File without changes
|
@@ -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:
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Jekyll
|
2
|
+
module Zettel
|
3
|
+
# Liquid tag that renders the reference the Zettel is based on
|
4
|
+
class Reference < Liquid::Tag
|
5
|
+
|
6
|
+
def render(context)
|
7
|
+
return unless context.registers[:page].key?('citekey')
|
8
|
+
|
9
|
+
context.registers[:site].config['citeproc'].render :bibliography, id: context.registers[:page]['citekey']
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
Liquid::Template.register_tag('reference', Jekyll::Zettel::Reference)
|
@@ -0,0 +1,57 @@
|
|
1
|
+
module Jekyll
|
2
|
+
module Zettel
|
3
|
+
# Enrich page front matter with object meta data
|
4
|
+
class References < Jekyll::Generator
|
5
|
+
include Zettel
|
6
|
+
|
7
|
+
priority :highest
|
8
|
+
|
9
|
+
attr_reader :site
|
10
|
+
|
11
|
+
def generate(site)
|
12
|
+
@site = site
|
13
|
+
|
14
|
+
@site.data['references'] = {}
|
15
|
+
configure_citeproc
|
16
|
+
|
17
|
+
site.pages.each do |page|
|
18
|
+
next unless page.path.to_s.end_with?('index.html') || page.path.to_s.end_with?('index.md')
|
19
|
+
|
20
|
+
tie_reference(page)
|
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}`"
|
32
|
+
end
|
33
|
+
|
34
|
+
def tie_reference(doc)
|
35
|
+
dir = File.dirname(doc.path)
|
36
|
+
file = @site.in_source_dir(dir, 'reference.json')
|
37
|
+
return unless File.exist?(file)
|
38
|
+
|
39
|
+
doc.data['reference'] = SafeYAML.load_file(file)
|
40
|
+
|
41
|
+
register_reference(doc, file)
|
42
|
+
end
|
43
|
+
|
44
|
+
def register_reference(doc, file)
|
45
|
+
if doc.data['reference'].include?('id')
|
46
|
+
@site.data['references'][doc.data['reference']['id']] = doc.data['reference']
|
47
|
+
@site.config['citeproc'].register doc.data['reference']
|
48
|
+
doc.data['citekey'] = doc.data['reference']['id']
|
49
|
+
else
|
50
|
+
Jekyll.logger.warn LOG_KEY, 'missing property @id'
|
51
|
+
Jekyll.logger.warn '', "./#{file}"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,48 @@
|
|
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
|
+
}
|
34
|
+
register_tags(doc, parts[:slug])
|
35
|
+
end
|
36
|
+
|
37
|
+
def register_tags(doc, slug)
|
38
|
+
return unless doc.data.key?('tags')
|
39
|
+
|
40
|
+
doc.data['tags'].each { |tag|
|
41
|
+
@site.data['tag2glosse'][slug] = [] unless @site.data['tag2glosse'].key?(slug)
|
42
|
+
|
43
|
+
@site.data['tag2glosse'][slug] << tag
|
44
|
+
}
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
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
|
@@ -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
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'jekyll'
|
2
2
|
require 'securerandom'
|
3
3
|
require 'fileutils'
|
4
|
+
require 'citeproc'
|
5
|
+
require 'csl/styles'
|
4
6
|
|
5
7
|
module Jekyll
|
6
8
|
# Jekyll zettel to your service
|
@@ -8,10 +10,31 @@ module Jekyll
|
|
8
10
|
|
9
11
|
autoload :VERSION, 'jekyll/zettel/version'
|
10
12
|
|
11
|
-
LOG_KEY = '
|
13
|
+
LOG_KEY = 'Zettel:'.freeze
|
12
14
|
|
13
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
|
14
32
|
end
|
15
33
|
end
|
16
34
|
|
17
|
-
require 'jekyll/
|
35
|
+
require 'jekyll/commands/zettel'
|
36
|
+
require 'jekyll/zettel/references'
|
37
|
+
require 'jekyll/zettel/reference'
|
38
|
+
require 'jekyll/zettel/timeline'
|
39
|
+
require 'jekyll/zettel/tags'
|
40
|
+
require 'jekyll/zettel/zettelkasten'
|
metadata
CHANGED
@@ -1,15 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-zettel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.1
|
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-
|
11
|
+
date: 2022-01-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: citeproc-ruby
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.0'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '3.0'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '2.0'
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '3.0'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: csl-styles
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '2.0'
|
40
|
+
- - "<"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '3.0'
|
43
|
+
type: :runtime
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '2.0'
|
50
|
+
- - "<"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '3.0'
|
13
53
|
- !ruby/object:Gem::Dependency
|
14
54
|
name: fileutils
|
15
55
|
requirement: !ruby/object:Gem::Requirement
|
@@ -65,10 +105,15 @@ files:
|
|
65
105
|
- README.md
|
66
106
|
- Rakefile
|
67
107
|
- jekyll-zettel.gemspec
|
108
|
+
- lib/jekyll/commands/zettel.rb
|
109
|
+
- lib/jekyll/stubs/index.md
|
68
110
|
- lib/jekyll/zettel.rb
|
69
|
-
- lib/jekyll/zettel/
|
70
|
-
- lib/jekyll/zettel/
|
111
|
+
- lib/jekyll/zettel/reference.rb
|
112
|
+
- lib/jekyll/zettel/references.rb
|
113
|
+
- lib/jekyll/zettel/tags.rb
|
114
|
+
- lib/jekyll/zettel/timeline.rb
|
71
115
|
- lib/jekyll/zettel/version.rb
|
116
|
+
- lib/jekyll/zettel/zettelkasten.rb
|
72
117
|
homepage: https://michaelgerzabek.com/gems/jekyll-zettel
|
73
118
|
licenses:
|
74
119
|
- MIT
|