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

Version Path
jekyll-zettel-0.6.0 lib/jekyll/zettel/zettelkasten.rb
jekyll-zettel-0.5.3 lib/jekyll/zettel/zettelkasten.rb
jekyll-zettel-0.5.2 lib/jekyll/zettel/zettelkasten.rb
jekyll-zettel-0.5.0 lib/jekyll/zettel/zettelkasten.rb
jekyll-zettel-0.4.3 lib/jekyll/zettel/zettelkasten.rb
jekyll-zettel-0.4.2 lib/jekyll/zettel/zettelkasten.rb
jekyll-zettel-0.4.1 lib/jekyll/zettel/zettelkasten.rb