Sha256: d3b02b00e87cf7e0b760f3f0f3b37915e48a5ebaf46fe063087984cc62a9663a
Contents?: true
Size: 1.36 KB
Versions: 7
Compression:
Stored size: 1.36 KB
Contents
module Jekyll module Zettel # Generate tags.json from page front matter class Zettelkasten < Jekyll::Generator include Zettel priority :low SLUG_FORMAT = %r{zettel/(?<uuid>.*)/index.(?<ext>html|md)}i.freeze attr_reader :site def generate(site) @site = site @site.data['zettelkasten'] = {} @site.data['tag2zettel'] = {} site.pages.each do |page| next unless SLUG_FORMAT.match?(page.path.to_s) register_zettel(page) register_tags(page) end write_catalog 'zettelkasten' write_catalog 'tag2zettel' end def register_zettel(doc) @site.data['zettelkasten'][doc.data['zettel']] = { 'zettel' => doc.data['zettel'], 'title' => doc.data['title'], 'description' => doc.data['description'], 'author' => doc.data['author'], 'tags' => doc.data['tags'], 'folgezettel' => doc.data['folgezettel'], 'via' => doc.data['via'], 'citekey' => doc.data['citekey'] } end def register_tags(doc) return unless doc.data.key?('tags') doc.data['tags'].each { |tag| @site.data['tag2zettel'][tag] = [] unless @site.data['tag2zettel'].key?(tag) @site.data['tag2zettel'][tag] << doc.data['zettel'] } end end end end
Version data entries
7 entries across 7 versions & 1 rubygems