The Markdown syntax implemented for the XP Framework.
To transform markdown to HTML, all that is necessary is the following:
use net\daringfireball\markdown\Markdown;
$engine= new Markdown();
$transformed= $engine->transform(
'This is [Markdown](http://daringfireball.net/projects/markdown/) for **XP**'
);
The implementation is based on a parse tree. To work with the tree, you can use the parse()
method, which returns a net.daringfireball.markdown.ParseTree
instance.
use net\daringfireball\markdown\{Markdown, ToHtml};
use io\streams\TextReader;
use io\File;
$engine= new Markdown();
$tree= $engine->parse($markdown);
$tree= $engine->parse(new TextReader(new File('file.md')));
// ...work with tree...
$transformed= $tree->emit(new ToHtml());
You can control the URLs used in the href
and src
attributes of links and images, respectively, by using URL rewriting API:
use net\daringfireball\markdown\{ToHtml, URLs, Rewriting};
$emitter= new ToHtml(new URLs(Rewriting::absolute()
->links('/deref?url=%s')
->images('/proxy?url=&s')
->excluding(['localhost'])
));
$transformed= $engine->transform($markdown, [], $emitter);
$transformed= $engine->parse($markdown)->emit($emitter);