Kurenai is a document with metadata parsing library for PHP.
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
tests
.gitignore
.travis.yml
LICENSE
README.md
build.xml
composer.json
kurenai.png
phpunit.xml

README.md

Kurenai

Kurenai

Build Status Scrutinizer Code Quality Code Coverage Code Climate HHVM Tested

Packagist Version Packagist

Kurenai is a document with metadata parsing library for PHP. It supports a variety of different document content and metadata parsers.


Installation

Kurenai is available on Packagist for Composer.

composer require daylerees/kurenai

Usage

Kurenai documents look like this:

Some form of metadata here.
===
Some form of content here.

A metadata section, and a content section seperated by three equals === signs or more.

Here's an example using JSON for metadata, and Markdown for content.

{
    "title": "Hello world!"
}
===
# Hello World

Well hello there, world!

Formats for metadata and content are interchangable using classes called parsers. First, let's create our parser instance.

$kurenai = new \Kurenai\Parser(
    new \Kurenai\Parsers\Metadata\JsonParser,
    new \Kurenai\Parsers\Content\MarkdownParser
);

In the above example, we're using a JSON metadata parser, and a Markdown content parser. We can now parse a document.

$document = $kurenai->parse('path/to/document.md');

Our documents can have any filename or extension. You can also pass the parse() function the content of a document directly.

The document instance has a few useful methods.

$document->getRaw();

This will fetch the raw document content. Before Kurenai parsed it.

$document->getMetadata();

This will fetch the metadata, parsed into an array.

$document->getContent();

This will get the content of the document, rendered using the provided content parser.

$document->get('foo.bar');

The get() method uses dot-notation to return a metadata value. For example, the above example would be equivalent to fetching $metadata['foo']['bar'].

If the subject can't be found, null will be returned. You can supply a default value as a second parameter to the method.

Metadata Parsers

Format Install Package Class
JSON N/A Kurenai\Parsers\Metdata\JsonParser
YAML symfony/yaml Kurenai\Parsers\Metdata\YamlParser
INI N/A Kurenai\Parsers\Metdata\IniParser

Content Parsers

Format Install Package Class
Plaintext (no parsing) N/A Kurenai\Parsers\Content\PlainTextParser
CommonMark league/commonmark Kurenai\Parsers\Content\CommonMarkParser
Markdown michelf/php-markdown Kurenai\Parsers\Content\MarkdownParser
Markdown Extra michelf/php-markdown Kurenai\Parsers\Content\MarkdownExtraParser
Parsedown (Github Markdown) erusev/parsedown Kurenai\Parsers\Content\ParsedownParser
Textile netcarver/textile Kurenai\Parsers\Content\TextileParser

Enjoy using Kurenai!