Jekyll-Namespaces
⚠️ This is gem is under active development! ⚠️
⚠️ Expect breaking changes and surprises until otherwise noted (likely by v0.1.0 or v1.0.0). ⚠️
Jekyll-Namespaces provides support for long namespacing of markdown filenames with dot . delimiters. Frontmatter metadata is added to each document so that they may be referenced by the relationships that make up the overarching hierarchy built from the namespaces. (For example, on a page it may be desirable to link to all children of the current page or to build a breadcrumb trail from the current page's ancestry.)
This gem works in conjunction with jekyll-graph.
This gem is part of the jekyll-bonsai project. 🎋
Installation
Follow the instructions for installing a jekyll plugin for jekyll-namespaces.
Configuration
Defaults look like this:
namespaces:
enabled: true
exclude: []enabled: Toggles the plugin on or off.
exclude: A list of any jekyll document type (pages, posts, and collections. Here is a post on them) to exclude from the namespace tree.
Usage
Namespaces are delineated by dots, like.this.md. There must also be a root document named root.md.
Missing levels will not break the build. They will be processed and marked as missing by replacing urls with the namespaced filename.
Metadata
ancestors: Contains a list of url strings for documents along the path from the root document to the current document in the tree.
children: Contains a list of url strings of all immediate children of the current document.
siblings: Contains a list of url strings of all nodes that share the same direct parent as the current node.
The document for the url can be retrieved in liquid templates like so:
<!-- print all ancestors as links with the document title as its innertext -->
{% for ancestor_url in page.ancestors %}
{% assign ancestor_doc = site.documents | where: "url", ancestor_url | first %}
<a href="{{ ancestor_doc.url }}">{{ ancestor_doc.title }}</a>
{% endfor %}<!-- print all children as links with the document title as its innertext -->
{% for child_url in page.children %}
{% assign child_doc = site.documents | where: "url", child_url | first %}
<a href="{{ child_doc.url }}">{{ child_doc.title }}</a>
{% endfor %}