mirror of
https://github.com/erusev/parsedown.git
synced 2023-08-10 21:13:06 +03:00
PHP < 7 compat for Html renderables
This commit is contained in:
parent
0f6c0fa84d
commit
1541859e0e
@ -4,5 +4,6 @@ namespace Erusev\Parsedown\Html;
|
||||
|
||||
interface Renderable
|
||||
{
|
||||
public function getHtml(): string;
|
||||
/** @return string */
|
||||
public function getHtml();
|
||||
}
|
||||
|
@ -22,11 +22,8 @@ final class Element implements Renderable
|
||||
* @param array<string, string> $attributes
|
||||
* @param Renderable[]|null $Contents
|
||||
*/
|
||||
public function __construct(
|
||||
string $name,
|
||||
array $attributes,
|
||||
?array $Contents
|
||||
) {
|
||||
public function __construct($name, $attributes, $Contents)
|
||||
{
|
||||
$this->name = $name;
|
||||
$this->attributes = $attributes;
|
||||
$this->Contents = $Contents;
|
||||
@ -35,10 +32,10 @@ final class Element implements Renderable
|
||||
/**
|
||||
* @param string $name
|
||||
* @param array<string, string> $attributes
|
||||
* @param Renderable ...$Contents
|
||||
*
|
||||
* @param Renderable[] $Contents
|
||||
* @return self
|
||||
*/
|
||||
public static function new(string $name, array $attributes, Renderable ...$Contents): self
|
||||
public static function create($name, array $attributes, array $Contents)
|
||||
{
|
||||
return new self($name, $attributes, $Contents);
|
||||
}
|
||||
@ -46,13 +43,15 @@ final class Element implements Renderable
|
||||
/**
|
||||
* @param string $name
|
||||
* @param array<string, string> $attributes
|
||||
* @return self
|
||||
*/
|
||||
public static function selfClosing(string $name, array $attributes): self
|
||||
public static function selfClosing($name, array $attributes)
|
||||
{
|
||||
return new self($name, $attributes, null);
|
||||
}
|
||||
|
||||
public function name(): string
|
||||
/** @return string */
|
||||
public function name()
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
@ -60,7 +59,7 @@ final class Element implements Renderable
|
||||
/**
|
||||
* @return array<string, string>
|
||||
*/
|
||||
public function attributes(): array
|
||||
public function attributes()
|
||||
{
|
||||
return $this->attributes;
|
||||
}
|
||||
@ -68,33 +67,40 @@ final class Element implements Renderable
|
||||
/**
|
||||
* @return Renderable[]|null
|
||||
*/
|
||||
public function contents(): ?array
|
||||
public function contents()
|
||||
{
|
||||
return $this->Contents;
|
||||
}
|
||||
|
||||
public function settingName(string $name): self
|
||||
/**
|
||||
* @param string $name
|
||||
* @return self
|
||||
*/
|
||||
public function settingName($name)
|
||||
{
|
||||
return new self($name, $this->attributes, $this->Contents);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, string> $attributes
|
||||
* @return self
|
||||
*/
|
||||
public function settingAttributes(array $attributes): self
|
||||
public function settingAttributes(array $attributes)
|
||||
{
|
||||
return new self($this->name, $attributes, $this->Contents);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Renderable[]|null $Contents
|
||||
* @return self
|
||||
*/
|
||||
public function settingContents(?array $Contents): self
|
||||
public function settingContents($Contents)
|
||||
{
|
||||
return new self($this->name, $this->attributes, $Contents);
|
||||
}
|
||||
|
||||
public function getHtml(): string
|
||||
/** @return string */
|
||||
public function getHtml()
|
||||
{
|
||||
$html = '';
|
||||
|
||||
|
@ -10,12 +10,16 @@ final class Text implements Renderable
|
||||
/** @var string */
|
||||
private $text;
|
||||
|
||||
public function __construct(string $text = '')
|
||||
/**
|
||||
* @param string $text
|
||||
*/
|
||||
public function __construct($text = '')
|
||||
{
|
||||
$this->text = $text;
|
||||
}
|
||||
|
||||
public function getHtml(): string
|
||||
/** @return string */
|
||||
public function getHtml()
|
||||
{
|
||||
return Escaper::htmlElementValue($this->text);
|
||||
}
|
||||
|
@ -4,7 +4,11 @@ namespace Erusev\Parsedown\Html\Sanitisation;
|
||||
|
||||
final class CharacterFilter
|
||||
{
|
||||
public static function htmlAttributeName(string $text) : string
|
||||
/**
|
||||
* @param string $text
|
||||
* @return string
|
||||
*/
|
||||
public static function htmlAttributeName($text)
|
||||
{
|
||||
/**
|
||||
* https://www.w3.org/TR/html/syntax.html#name
|
||||
@ -23,7 +27,11 @@ final class CharacterFilter
|
||||
);
|
||||
}
|
||||
|
||||
public static function htmlElementName(string $text) : string
|
||||
/**
|
||||
* @param string $text
|
||||
* @return string
|
||||
*/
|
||||
public static function htmlElementName($text)
|
||||
{
|
||||
/**
|
||||
* https://www.w3.org/TR/html/syntax.html#tag-name
|
||||
|
@ -4,20 +4,31 @@ namespace Erusev\Parsedown\Html\Sanitisation;
|
||||
|
||||
final class Escaper
|
||||
{
|
||||
public static function htmlAttributeValue(string $text) : string
|
||||
/**
|
||||
* @param string $text
|
||||
* @return string
|
||||
*/
|
||||
public static function htmlAttributeValue($text)
|
||||
{
|
||||
return self::escape($text);
|
||||
}
|
||||
|
||||
public static function htmlElementValue(string $text) : string
|
||||
/**
|
||||
* @param string $text
|
||||
* @return string
|
||||
*/
|
||||
public static function htmlElementValue($text)
|
||||
{
|
||||
return self::escape($text, true);
|
||||
}
|
||||
|
||||
private static function escape(
|
||||
string $text,
|
||||
bool $allowQuotes = false
|
||||
) : string {
|
||||
/**
|
||||
* @param string $text
|
||||
* @param bool $allowQuotes
|
||||
* @return string
|
||||
*/
|
||||
private static function escape($text, $allowQuotes = false)
|
||||
{
|
||||
return \htmlentities(
|
||||
$text,
|
||||
$allowQuotes ? \ENT_NOQUOTES : \ENT_QUOTES,
|
||||
|
Loading…
Reference in New Issue
Block a user