| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | 
							- <?php
 
- namespace fphammerle\helpers;
 
- class HtmlHelper
 
- {
 
-     public static function encode($string)
 
-     {
 
-         return htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE);
 
-     }
 
-     private static function _renderTagAttributes(array $attributes = [])
 
-     {
 
-         return StringHelper::implode(' ', ArrayHelper::mapIfSet(
 
-             $attributes,
 
-             function($k, $v) {
 
-                 if($v === true) {
 
-                     return sprintf('%s="%s"', $k, $k);
 
-                 } elseif($v === false) {
 
-                     return null;
 
-                 } else {
 
-                     return sprintf('%s="%s"', $k, self::encode($v));
 
-                 }
 
-                 }
 
-             ));
 
-     }
 
-     public static function voidTag($tag_name, array $attributes = [])
 
-     {
 
-         if($tag_name === null) {
 
-             return null;
 
-         } elseif(!is_string($tag_name)) {
 
-             throw new \InvalidArgumentException(
 
-                 sprintf('expected string or null as tag name, %s given', gettype($tag_name))
 
-                 );
 
-         } else {
 
-             return sprintf(
 
-                 '<%s%s />',
 
-                 $tag_name,
 
-                 StringHelper::prepend(' ', self::_renderTagAttributes($attributes))
 
-                 );
 
-         }
 
-     }
 
-     public static function startTag($tag_name, array $attributes = [])
 
-     {
 
-         if($tag_name === null) {
 
-             return null;
 
-         } elseif(!is_string($tag_name)) {
 
-             throw new \InvalidArgumentException(
 
-                 sprintf('expected string or null as tag name, %s given', gettype($tag_name))
 
-                 );
 
-         } else {
 
-             return sprintf(
 
-                 '<%s%s>',
 
-                 $tag_name,
 
-                 StringHelper::prepend(' ', self::_renderTagAttributes($attributes))
 
-                 );
 
-         }
 
-     }
 
-     public static function endTag($name)
 
-     {
 
-         if($name === null) {
 
-             return null;
 
-         } elseif(!is_string($name)) {
 
-             throw new \InvalidArgumentException(
 
-                 sprintf('expected string or null as name, %s given', gettype($name))
 
-                 );
 
-         } else {
 
-             return '</' . $name . '>';
 
-         }
 
-     }
 
-     public static function nonVoidTag($tag_name, $content, array $attributes = [])
 
-     {
 
-         // @see https://www.w3.org/TR/html-markup/syntax.html#syntax-elements
 
-         return StringHelper::embed(
 
-             self::startTag($tag_name, $attributes),
 
-             $content,
 
-             self::endTag($tag_name)
 
-             );
 
-     }
 
-     public static function time($dt, $content, array $attributes = [])
 
-     {
 
-         if($dt instanceof \DateTime) {
 
-             $attr = $dt->format(\DateTime::W3C);
 
-         } elseif($dt instanceof \DateInterval) {
 
-             $attr = DateTimeHelper::iso($dt);
 
-         } else {
 
-             $attr = $dt;
 
-         }
 
-         return self::nonVoidTag(
 
-             'time',
 
-             is_callable($content) ? $content($dt) : $content,
 
-             array_merge(
 
-                 ['datetime' => $attr],
 
-                 ArrayHelper::map($attributes, function($v) use ($dt) {
 
-                     return is_callable($v) ? $v($dt) : $v;
 
-                     })
 
-                 )
 
-             );
 
-     }
 
- }
 
 
  |