Skip to main content

CommonMark/Frontmatter reader for Pelican

Project description

Pelican FrontMark

Build Status Coverage Status License Format Supported versions

A Pelican CommonMark/Front Matter reader.

This reader marse Markdown files with YAML frontmatter headers and formatted using the CommonMark specifications.

Requirements

Pelican FrontMark works with Pelican 3.7+ and Python 3.3+

Getting started

Install pelican-frontmark with pip:

pip install pelican-frontmark

And enable the plugin in you pelicanconf.py (or any configuration file you want to use):

PLUGINS = [
    '...',
    'frontmark',
    '...',
]

Files format

Frontmark will only recognize files using .md extension.

Here an article example:

---
title: My article title
date: 2017-01-04 13:10
modified: 2017-01-04 13:13
tags:
  - tag 1
  - tag 2
slug: my-article-slug
lang: en
category: A category
authors: Me
summary: Some summary
status: draft

custom:
  title: A custom metadata
  details: You can add any structured and typed YAML metadata

---

My article content

Advanced configuration

Syntax highlighting

By default, FrontMark outputs code blocks in a standard html5 way, ie. a pre>code block with a language class. This allow to use any html5 syntax highlight JavaScript lib.

You can force Pygments usage to output html4 pre rendered syntax highlight by setting FRONTMARK_PYGMENTS to True for default parameters or manually setting it to a dict of Pygments HtmlRenderer parameters.

FRONTMARK_PYGMENTS = {
    'linenos': 'inline',
}

Settings

  • `FRONTMARK_PARSE_LITERAL`: True by default. Set it to False if you don’t want multiline string literals (|) to be parsed as markdown.

  • `FRONTMARK_PYGMENTS`: Not defined by default and output standard html5 code blocks. Can be set to True to force Pygments usage with default parameters or a dict of Pygments parameters

Registering custom YAML types

You can register custom YAML types using the frontmark_yaml_register signal:

from frontmark.signals import frontmark_yaml_register


def upper_constructor(loader, noder):
    return loader.construct_scalar(node).upper()


def register_upper(reader):
    return '!upper', upper_constructor


def register():
    frontmark_yaml_register.connected(register_upper):

Testing

To test the plugin against all supported Python versions, run tox:

tox

To test only within your current Python version with pytest:

pip install -e .[test]  # Install with test dependencies
pytest  # Launch pytest test suite

or let setuptools do the job:

python setup.py test

Changelog

1.2.1 (2019-12-09)

  • Support CommonMark 0.9.1

1.2.0 (2018-09-08)

  • Upgrade to CommonMark 0.8+

  • Drop support for Python version prior to 3.5

1.1.0 (2017-01-22)

  • Added FRONTMARK_PYGMENTS optionnal setting for Pygments rendering

  • Fix links handling (ie. {filename}…)

1.0.1 (2017-01-08)

  • Test and fix plugin registeration

  • Make version and description available at module level

1.0.0 (2017-01-08)

  • Initial release

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page