2015-12-02 14:38:40 +00:00
|
|
|
<?php
|
2016-02-03 22:22:56 +00:00
|
|
|
/**
|
|
|
|
* Holds the list bbcode class.
|
2016-03-08 23:07:58 +00:00
|
|
|
*
|
2016-02-03 22:22:56 +00:00
|
|
|
* @package Sakura
|
|
|
|
*/
|
|
|
|
|
2015-12-02 14:38:40 +00:00
|
|
|
namespace Sakura\BBcodeDefinitions;
|
|
|
|
|
|
|
|
use JBBCode\CodeDefinition;
|
|
|
|
use JBBCode\ElementNode;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Implements a [list] code definition that provides the following syntax:
|
|
|
|
*
|
|
|
|
* [list]
|
|
|
|
* [*] first item
|
|
|
|
* [*] second item
|
|
|
|
* [*] third item
|
|
|
|
* [/list]
|
|
|
|
*
|
2016-02-02 21:04:15 +00:00
|
|
|
* @package Sakura
|
|
|
|
* @author Jackson Owens <jackson_owens@alumni.brown.edu>
|
2015-12-02 14:38:40 +00:00
|
|
|
*/
|
|
|
|
class Lists extends CodeDefinition
|
|
|
|
{
|
2016-02-02 21:04:15 +00:00
|
|
|
/**
|
|
|
|
* Constructor
|
|
|
|
*/
|
2015-12-02 14:38:40 +00:00
|
|
|
public function __construct()
|
|
|
|
{
|
|
|
|
$this->parseContent = true;
|
|
|
|
$this->useOption = false;
|
|
|
|
$this->setTagName('list');
|
|
|
|
$this->nestLimit = -1;
|
|
|
|
}
|
|
|
|
|
2016-02-02 21:04:15 +00:00
|
|
|
/**
|
|
|
|
* Compiles the list bbcode to HTML.
|
2016-03-08 23:07:58 +00:00
|
|
|
*
|
2016-02-02 21:04:15 +00:00
|
|
|
* @param ElementNode $el The JBBCode element node.
|
2016-03-08 23:07:58 +00:00
|
|
|
*
|
2016-02-02 21:04:15 +00:00
|
|
|
* @return string The compiled HTML list.
|
|
|
|
*/
|
2015-12-02 14:38:40 +00:00
|
|
|
public function asHtml(ElementNode $el)
|
|
|
|
{
|
|
|
|
$bodyHtml = '';
|
2016-03-24 00:40:59 +00:00
|
|
|
|
2015-12-02 14:38:40 +00:00
|
|
|
foreach ($el->getChildren() as $child) {
|
|
|
|
$bodyHtml .= $child->getAsHTML();
|
|
|
|
}
|
|
|
|
|
|
|
|
$listPieces = explode('[*]', $bodyHtml);
|
2016-03-24 00:40:59 +00:00
|
|
|
|
2015-12-02 14:38:40 +00:00
|
|
|
unset($listPieces[0]);
|
2016-03-24 00:40:59 +00:00
|
|
|
|
2015-12-02 14:40:28 +00:00
|
|
|
$listPieces = array_map(function ($li) {
|
2016-03-24 00:40:59 +00:00
|
|
|
return "<li>{$li}</li>";
|
2015-12-02 14:38:40 +00:00
|
|
|
}, $listPieces);
|
2016-03-24 00:40:59 +00:00
|
|
|
|
|
|
|
$list = implode('', $listPieces);
|
|
|
|
|
|
|
|
return "<ul>{$list}</ul>";
|
2015-12-02 14:38:40 +00:00
|
|
|
}
|
|
|
|
}
|