|
|
3 years ago | |
|---|---|---|
| docs | 4 years ago | |
| playground | 3 years ago | |
| src | 3 years ago | |
| tests | 3 years ago | |
| .gitignore | 4 years ago | |
| CHANGELOG.md | 3 years ago | |
| LICENSE.md | 3 years ago | |
| README.md | 3 years ago | |
| composer.json | 3 years ago | |
| composer.lock | 3 years ago | |
| index.php | 3 years ago | |
README.md
Parkdown
– a simple recursive descent Markdown parser for PHP (version >= 8.1)
Specification
Supported block types
Parkdown currently support the following block types:
- codeblocks (with the ability to specify a language for the code block)
- tables (with alignment specification)
- paragraphs
- block quotes
- lists (like this one)
- also nested
- horizontal rules
---
Supported inline types
Parkdown currently support the following block types:
- bold text (
**bold**) - italic text (
*italic*) - code snippets
- images (
) - links (
[link text][url or reference])
Additional functionality
- references (
[marker]: URL)
Examples
Paragraphs
A simple paragraph can contain **bold text**, `inline codeblocks` and *italic text*. We can also link [with a direct url][https://google.com] *(i.e. to google)*
or via reference to [a later defined url][massivedynamic], if we so desire.
A simple paragraph can contain bold text, inline codeblocks and italic text. We can also link with a direct url (i.e. to google)
or via reference to a later defined url, if we so desire.
Paragraphs can be annotated with id and class attributes:
Paragraphs can be annotated with ids and classes {.thisIsAClass, .anotherClass, #thisIsAnID}
results in
Paragraphs can be annotated with ids and classes {.thisIsAClass, .anotherClass, #thisIsAnID}
<p class="thisIsAClass anotherClass" id="thisIsAnID">
Paragraphs can be annotated with ids and classes
</p>
Images

Horizontal rules
---
Block quotes
> Only two things are infinite,
> the universe and human stupidity,
> i am not totally shure about the universe, though...
> – Albert Einstein
Only two things are infinite, the universe and human stupidity, i am not totally shure about the universe, though... – Albert Einstein
Code blocks
\`\`\`php
function main(int $argc, array $argv) : int {
echo "Hello World!";
return 0;
}
\`\`\`
function main(int $argc, array $argv) : int {
echo "Hello World!";
return 0;
}
Tables
| Product name | Amount | Price |
|--------------|:--------:|-------:|
| Football | 7 | $18,00 |
| Golfball | 122 | $7,00 |
| Fooseball | 355 | $1,00 |
| Puck | 58 | $12,00 |
| Product name | Amount | Price |
|---|---|---|
| Football | 7 | $18,00 |
| Golfball | 122 | $7,00 |
| Fooseball | 355 | $1,00 |
| Puck | 58 | $12,00 |
References
[massivedynamic]: https://massivedynamic.eu
Usage
Simply construct an new parkdown\Parkdown object and pass the Markdown source code to it's constructor. The parsed DOMDocument or it's HTML output can then be retrieved through the ::html() and ::tree() member functions.
Example
use parkdown\Parkdown;
$source = "
This is a **bold** word in a paragraph.
";
$parser = new Parkdown($source);
$tree = $parser->tree();
print_r($tree);
echo $parser->html();
Testing
Unit tests can be run via composer:
composer test