]> scripts.mit.edu Git - autoinstalls/mediawiki.git/blob - vendor/wikimedia/remex-html/RemexHtml/Serializer/FastFormatter.php
MediaWiki 1.30.2
[autoinstalls/mediawiki.git] / vendor / wikimedia / remex-html / RemexHtml / Serializer / FastFormatter.php
1 <?php
2
3 namespace RemexHtml\Serializer;
4 use RemexHtml\Tokenizer\Attributes;
5
6 /**
7  * A formatter suitable for pre-sanitized input with ignoreEntities enabled
8  * in the Tokenizer.
9  */
10 class FastFormatter implements Formatter {
11         function __construct( $options = [] ) {
12         }
13
14         function startDocument( $fragmentNamespace, $fragmentName ) {
15                 if ( $fragmentNamespace === null ) {
16                         return "<!DOCTYPE html>\n";
17                 } else {
18                         return '';
19                 }
20         }
21
22         function doctype( $name, $public, $system ) {
23         }
24
25         function characters( SerializerNode $parent, $text, $start, $length ) {
26                 return substr( $text, $start, $length );
27         }
28
29         function element( SerializerNode $parent, SerializerNode $node, $contents ) {
30                 $name = $node->name;
31                 $ret = "<$name";
32                 foreach ( $node->attrs->getValues() as $attrName => $value ) {
33                         $ret .= " $attrName=\"$value\"";
34                 }
35                 if ( $contents === null ) {
36                         $ret .= "/>";
37                 } elseif ( isset( $contents[0] ) && $contents[0] === "\n"
38                         && in_array( $name, [ 'pre', 'textarea', 'listing' ] )
39                 ) {
40                         $ret .= ">\n$contents</$name>";
41                 } else {
42                         $ret .= ">$contents</$name>";
43                 }
44                 return $ret;
45         }
46
47         function comment( SerializerNode $parent, $text ) {
48                 return "<!--$text-->";
49         }
50 }