mindplay / middlemark
Markdown renderer as PSR-7 middleware
Requires
- psr/http-message: ^1.0
Requires (Dev)
- cebe/markdown: ^1.1
- kzykhys/ciconia: ^1.0.3
- kzykhys/yaml-front-matter: ^1.0
- mindplay/kisstpl: ^1.2.3
- mindplay/testies: dev-master
- zendframework/zend-diactoros: ^1.1
Suggests
- cebe/markdown: Markdown renderer, supported by CebeMarkdownEngine
- kzykhys/ciconia: Markdown renderer, supported by CiconiaMarkdownEngine
- kzykhys/yaml-front-matter: Front Matter parser, supported by YamlFrontMatterParser
- mindplay/kisstpl: Template engine, supported by ViewRenderer
This package is auto-updated.
Last update: 2022-02-01 12:51:45 UTC
README
PSR-7 Markdown rendering middleware, with support for front matter, for use with e.g. mindplay/middleman, relay/relay or zend-stratigility middleware dispatcher.
How it works
The idea is, you point this middleware to a root-folder containing *.md
files, and when this
middleware gets a request for e.g. foo/bar.html
, it searches for foo/bar.md
, and renders it.
It does this by assembling a simple Document and View model, which can then be rendered by a renderer implementing a simple interface - the included renderer integrates mindplay/kisstpl, and integrating any other renderer or template engine is trivial.
Adapters
Every third-party component is integrated via an adapter interface - to get a working middleware component, you need to select a Markdown engine, front-matter adapter, and renderer.
Markdown Adapters
The available/default engine adapters are cebe/markdown and kzykhys/ciconia, both of which default to GitHub-flavored Markdown, though you are free to replace/reconfigure these as needed. Engine adapters are a simple interface, and you can easily integrate any Markdown engine you wish to.
Front Matter Adapter
The default engine for Jekyll-style front matter is kzykhys/yaml-front-matter. Only one (YAML) front matter engine is currently available, but this is behind an adapter interface as well, and is easy to replace.
Renderer Adapter
The default engine for rendering the view-model is mindplay/kisstpl, and this is currently the only renderer supported - to use any different view engine, implement the Renderer.