jekyll-zettel 0.6.8 → 0.7.1

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: 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