This repository has been archived on 2024-06-26. You can view files and clone it, but cannot push or open issues or pull requests.
sakura/app/BBcodeDefinitions/Lists.php

66 lines
1.3 KiB
PHP
Raw Normal View History

<?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
*/
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>
*/
class Lists extends CodeDefinition
{
2016-02-02 21:04:15 +00:00
/**
* Constructor
*/
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.
*/
public function asHtml(ElementNode $el)
{
$bodyHtml = '';
2016-03-24 00:40:59 +00:00
foreach ($el->getChildren() as $child) {
$bodyHtml .= $child->getAsHTML();
}
$listPieces = explode('[*]', $bodyHtml);
2016-03-24 00:40:59 +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>";
}, $listPieces);
2016-03-24 00:40:59 +00:00
$list = implode('', $listPieces);
return "<ul>{$list}</ul>";
}
}