jekyll-zettel 0.6.8 → 0.7.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 29649f733d538f436b123e0d30fecdd10128e7818fbad3c5191939ed2f350f8c
4
- data.tar.gz: bf96f17c9f7042a03e070b3743875acb8617c7dc3bbf14dd8ee4c6ba60e6c537
3
+ metadata.gz: 1b6da890e13652de4456d21ad0d8f880dff08e04e1a26fab37a6d14cb9ba81bf
4
+ data.tar.gz: f7bbaa9687435ed01409d8fde19f71e7ca19020e25c60eb261ba49c3ff938518
5
5
  SHA512:
6
- metadata.gz: 5323a2ec3f2dcb617dff426d5a2e5201ca12092efff07fe8350eaad564358fbfbbcc2618cb09d985fd3b407416afb6b92d4997bb2e5444e468ff385fc9eac2e5
7
- data.tar.gz: '06979ee7a379a8d22a5d66a3b841d84f048412c489d48dda6771f2694910d9d75cd3feb7928cffa8d770bfe79057c0c6a949e642c16d2894112270463c137280'
6
+ metadata.gz: a4d14c20181512d33bbf3bec360cb9a8ab7e5582d4f8ba38d8cfaee5558d604c3685501ad08db20a3c01c48cdbec8a638f29a9f67d055eaaeba8928f66f14a32
7
+ data.tar.gz: 51f95e04a356377ac683e0421c587d263d830acd55d1396be9f10b4cdf2b35fbc4124e52c17b7b99ae30340e54c26ea127ea803e67d39eacefc59d4c541d0132
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
1
  ## 0.1.0
2
2
 
3
3
  - Initial Import
4
+
5
+ ## 0.7.x
6
+
7
+ - Added inline citations
8
+
9
+ ### 0.7.1
10
+
11
+ - Changed inline citation regex to be compatible with pandoc [@<key>…]
12
+ - Emit warning when no reference for given _cite-key_ is found
@@ -31,4 +31,5 @@ Gem::Specification.new do |spec|
31
31
  spec.add_runtime_dependency 'csl-styles', '>= 2.0', '< 3.0'
32
32
  spec.add_runtime_dependency 'fileutils', '>= 1.4', '< 2.0'
33
33
  spec.add_runtime_dependency 'jekyll', '>= 3.8', '< 5.0'
34
+ spec.add_runtime_dependency 'kramdown', '>=2.0', '< 3.0'
34
35
  end
@@ -0,0 +1,90 @@
1
+ module Kramdown
2
+ module Parser
3
+ # Kramdown Parser mit inline Zitationen
4
+ class Citedown < Kramdown
5
+
6
+ def initialize(source, options)
7
+ super
8
+ @citeproc = Jekyll.sites[0].config['citeproc']
9
+ @references = Jekyll.sites[0].data['references']
10
+ @zettel = Jekyll.sites[0].data['zettelkasten']
11
+ @span_parsers.unshift(:citation)
12
+ end
13
+
14
+ CITATION = /\[@([\w,:]+)(;\s*(.*))?\]/.freeze
15
+
16
+ def parse_citation
17
+ start_line_number = @src.current_line_number
18
+ @src.pos += @src.matched_size
19
+
20
+ cite_key = @src[1]
21
+ note = @src[3]
22
+
23
+ if @references.key?(cite_key)
24
+ add_citation(cite_key, note, start_line_number)
25
+ else
26
+ add_error(cite_key)
27
+ end
28
+ end
29
+
30
+ def add_citation(cite_key, note, start_line_number)
31
+ citation = @citeproc.render :citation, id: cite_key, locator: note, label: :note
32
+ attributes = {
33
+ 'href' => "/zettel/#{@references[cite_key]['id']}/",
34
+ 'title' => @zettel[@references[cite_key]['id']]['description'],
35
+ 'style' => 'box-shadow: initial; border: none;'
36
+ }
37
+ link = Element.new(:a, nil, attributes, location: start_line_number)
38
+
39
+ link.children << Element.new(:raw, "<sup>#{citation}</sup>")
40
+ @tree.children << link
41
+ end
42
+
43
+ def add_error(cite_key)
44
+ Jekyll.logger.warn 'Zettel:', "Missing entry for cite-key @#{cite_key}"
45
+ @tree.children << Element.new(:raw, "<span class=\"error\">Missing entry for cite-key @#{cite_key}</span>")
46
+ end
47
+
48
+ define_parser(:citation, CITATION, '\[@')
49
+
50
+ end
51
+ end
52
+ end
53
+ # options => {
54
+ # :template => "",
55
+ # :auto_ids => true,
56
+ # :auto_id_stripping => false,
57
+ # :auto_id_prefix => "",
58
+ # :transliterated_header_ids => false,
59
+ # :parse_block_html => true,
60
+ # :parse_span_html => true,
61
+ # :html_to_native => false,
62
+ # :link_defs => {},
63
+ # :footnote_nr => 1,
64
+ # :entity_output => :as_char,
65
+ # :toc_levels => [1, 2, 3, 4, 5, 6],
66
+ # :line_width => 72,
67
+ # :latex_headers => ["section", "subsection", "subsubsection", "paragraph", "subparagraph", "subparagraph"],
68
+ # :smart_quotes => ["lsquo", "rsquo", "ldquo", "rdquo"],
69
+ # :typographic_symbols => {},
70
+ # :remove_block_html_tags => true,
71
+ # :remove_span_html_tags => false,
72
+ # :header_offset => 0,
73
+ # :syntax_highlighter => :rouge,
74
+ # :syntax_highlighter_opts => {
75
+ # :default_lang => "plaintext",
76
+ # :guess_lang => true
77
+ # },
78
+ # :math_engine => :mathjax,
79
+ # :math_engine_opts => {},
80
+ # :footnote_backlink => "▲",
81
+ # :footnote_backlink_inline => false,
82
+ # :footnote_prefix => "",
83
+ # :remove_line_breaks_for_cjk => false,
84
+ # :forbidden_inline_options => [:template],
85
+ # :input => "Citedown",
86
+ # :hard_wrap => false,
87
+ # :guess_lang => true,
88
+ # :show_warnings => false,
89
+ # :coderay => {}
90
+ # }
@@ -4,9 +4,10 @@ module Jekyll
4
4
  class Reference < Liquid::Tag
5
5
 
6
6
  def render(context)
7
- return unless context.registers[:page].key?('citekey')
7
+ doc = context.registers[:page]
8
+ return unless doc.key?('reference') && doc['reference'].key?('citation-key')
8
9
 
9
- context.registers[:site].config['citeproc'].render :bibliography, id: context.registers[:page]['citekey']
10
+ context.registers[:site].config['citeproc'].render :bibliography, id: doc['reference']['citation-key']
10
11
  end
11
12
  end
12
13
  end
@@ -42,13 +42,29 @@ module Jekyll
42
42
  end
43
43
 
44
44
  def register_reference(doc, file)
45
- if doc.data['reference'].include?('id')
46
- @site.data['references'][doc.data['reference']['id']] = doc.data['reference']
45
+ if doc.data['reference'].include?('citation-key') && doc.data['reference'].include?('id')
46
+ #
47
+ # Citeproc erwartet sich eine id, die dem citation-key entspricht,
48
+ # in den References (references.json) brauche ich jedoch die id des
49
+ # Zettels, um in diversen Anwendungen darauf referenzieren zu können.
50
+ # Also wird die id des Zettels zwischengespeichert und für die
51
+ # Registrierung bei Citeproc durch den citation-key ersetzt.
52
+ #
53
+ # ACHTUNG!
54
+ # Beim Übernehmen einer Reference aus Citavi muss die id manuell auf
55
+ # die id des Zettels gesetzt werden!
56
+ #
57
+ # store
58
+ id = doc.data['reference']['id']
59
+ @site.data['references'][doc.data['reference']['citation-key']] = doc.data['reference']
60
+ # set id for Citeproc and register Item
61
+ doc.data['reference']['id'] = doc.data['reference']['citation-key']
47
62
  @site.config['citeproc'].register doc.data['reference']
48
- doc.data['citekey'] = doc.data['reference']['id']
63
+ # restore
64
+ doc.data['reference']['id'] = id
49
65
  else
50
- Jekyll.logger.warn LOG_KEY, 'missing property @id'
51
- Jekyll.logger.warn '', "./#{file}"
66
+ Jekyll.logger.warn LOG_KEY, 'missing property @citation-key'
67
+ Jekyll.logger.warn '', file
52
68
  end
53
69
  end
54
70
 
@@ -28,7 +28,7 @@ module Jekyll
28
28
  @site.data['tags'][parts[:slug]] = {
29
29
  'slug' => parts[:slug],
30
30
  'tag' => doc.data['tag'] || 'Missing @tag',
31
- 'label' => doc.data['title'] || 'Missing @title',
31
+ 'title' => doc.data['title'] || 'Missing @title',
32
32
  'description' => doc.data['description'] || 'Missing @description',
33
33
  'tags' => doc.data['tags']
34
34
  }
@@ -1,5 +1,5 @@
1
1
  module Jekyll
2
2
  module Zettel
3
- VERSION = '0.6.8'.freeze
3
+ VERSION = '0.7.1'.freeze
4
4
  end
5
5
  end
@@ -45,7 +45,7 @@ module Jekyll
45
45
  doc.data['tags'].each { |tag|
46
46
  @site.data['tag2zettel'][tag] = [] unless @site.data['tag2zettel'].key?(tag)
47
47
 
48
- @site.data['tag2zettel'][tag] << doc.data['zettel']
48
+ @site.data['tag2zettel'][tag] << doc.data['id']
49
49
  }
50
50
  end
51
51
  end
data/lib/jekyll/zettel.rb CHANGED
@@ -3,6 +3,7 @@ require 'securerandom'
3
3
  require 'fileutils'
4
4
  require 'citeproc'
5
5
  require 'csl/styles'
6
+ require 'kramdown/parser/kramdown'
6
7
 
7
8
  module Jekyll
8
9
  # Jekyll zettel to your service
@@ -89,6 +90,7 @@ end
89
90
  require 'jekyll/commands/scaffold'
90
91
  require 'jekyll/zettel/akteur'
91
92
  require 'jekyll/zettel/blatt'
93
+ require 'jekyll/zettel/citedown'
92
94
  require 'jekyll/zettel/globals'
93
95
  require 'jekyll/zettel/glosse'
94
96
  require 'jekyll/zettel/reference'
@@ -98,3 +100,4 @@ require 'jekyll/zettel/timeline'
98
100
  require 'jekyll/zettel/zeitleiste'
99
101
  require 'jekyll/zettel/zettel'
100
102
  require 'jekyll/zettel/zettelkasten'
103
+
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.6.8
4
+ version: 0.7.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-28 00:00:00.000000000 Z
11
+ date: 2022-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: citeproc-ruby
@@ -90,6 +90,26 @@ dependencies:
90
90
  - - "<"
91
91
  - !ruby/object:Gem::Version
92
92
  version: '5.0'
93
+ - !ruby/object:Gem::Dependency
94
+ name: kramdown
95
+ requirement: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: '2.0'
100
+ - - "<"
101
+ - !ruby/object:Gem::Version
102
+ version: '3.0'
103
+ type: :runtime
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '2.0'
110
+ - - "<"
111
+ - !ruby/object:Gem::Version
112
+ version: '3.0'
93
113
  description: Coming soon…
94
114
  email:
95
115
  - michael.gerzabek@gmail.com
@@ -115,6 +135,7 @@ files:
115
135
  - lib/jekyll/zettel.rb
116
136
  - lib/jekyll/zettel/akteur.rb
117
137
  - lib/jekyll/zettel/blatt.rb
138
+ - lib/jekyll/zettel/citedown.rb
118
139
  - lib/jekyll/zettel/globals.rb
119
140
  - lib/jekyll/zettel/glosse.rb
120
141
  - lib/jekyll/zettel/reference.rb