ParsedownCheckbox/ParsedownCheckbox.php

53 lines
1.8 KiB
PHP
Raw Normal View History

2017-05-10 05:05:26 +02:00
<?php
/**
* This file is part of the ParsedownCheckbox package.
*
* (c) Simon Leblanc <contact@leblanc-simon.eu>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
class ParsedownCheckbox extends ParsedownExtra
{
const VERSION = '0.1.0';
2018-06-08 16:12:57 +02:00
protected function blockListComplete(array $block)
{
if (null === $block) {
return null;
}
if (!(isset($block['element']) && ($block['element']['name'] === 'ul') && is_array($block['element']['elements']))
) {
return $block;
}
2018-06-08 16:12:57 +02:00
//echo '<pre>';var_dump($block);echo '</pre>';
2017-05-10 05:05:26 +02:00
foreach ($block['element']['elements'] as &$element) {
if (!isset($element['handler']['argument'][0])){
continue;
}
$begin_line = substr(trim($element['handler']['argument'][0]), 0, 4);
$re = '/.*(\s{2,})$/';
if ('[ ] ' === $begin_line) {
if(preg_match_all($re, $element['handler']['argument'][0], $matches, PREG_SET_ORDER, 0) > 0){
$element['handler']['argument'][0] = trim($element['handler']['argument'][0]) . '<br>';
2017-05-10 05:05:26 +02:00
}
$element['handler']['argument'][0] = '<input type="checkbox" disabled /> '. substr($element['handler']['argument'][0], 4);
unset ($element['name']);
2018-06-08 16:12:57 +02:00
unset ($block['element']['name']);
2017-05-10 05:05:26 +02:00
} elseif ('[x] ' === $begin_line) {
if(preg_match_all($re, $element['handler']['argument'][0], $matches, PREG_SET_ORDER, 0) > 0){
$element['handler']['argument'][0] = trim($element['handler']['argument'][0]) . '<br>';
2017-05-10 05:05:26 +02:00
}
$element['handler']['argument'][0] = '<input type="checkbox" checked disabled /> '. substr($element['handler']['argument'][0], 4);
unset ($element['name']);
2018-06-08 16:12:57 +02:00
unset ($block['element']['name']);
}
2017-05-10 05:05:26 +02:00
}
unset($element);
return $block;
2018-06-08 16:12:57 +02:00
}
}