]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blobdiff - vendor/wikimedia/remex-html/RemexHtml/Serializer/FastFormatter.php
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / vendor / wikimedia / remex-html / RemexHtml / Serializer / FastFormatter.php
diff --git a/vendor/wikimedia/remex-html/RemexHtml/Serializer/FastFormatter.php b/vendor/wikimedia/remex-html/RemexHtml/Serializer/FastFormatter.php
new file mode 100644 (file)
index 0000000..8a87e42
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+
+namespace RemexHtml\Serializer;
+use RemexHtml\Tokenizer\Attributes;
+
+/**
+ * A formatter suitable for pre-sanitized input with ignoreEntities enabled
+ * in the Tokenizer.
+ */
+class FastFormatter implements Formatter {
+       function __construct( $options = [] ) {
+       }
+
+       function startDocument( $fragmentNamespace, $fragmentName ) {
+               if ( $fragmentNamespace === null ) {
+                       return "<!DOCTYPE html>\n";
+               } else {
+                       return '';
+               }
+       }
+
+       function doctype( $name, $public, $system ) {
+       }
+
+       function characters( SerializerNode $parent, $text, $start, $length ) {
+               return substr( $text, $start, $length );
+       }
+
+       function element( SerializerNode $parent, SerializerNode $node, $contents ) {
+               $name = $node->name;
+               $ret = "<$name";
+               foreach ( $node->attrs->getValues() as $attrName => $value ) {
+                       $ret .= " $attrName=\"$value\"";
+               }
+               if ( $contents === null ) {
+                       $ret .= "/>";
+               } elseif ( isset( $contents[0] ) && $contents[0] === "\n"
+                       && in_array( $name, [ 'pre', 'textarea', 'listing' ] )
+               ) {
+                       $ret .= ">\n$contents</$name>";
+               } else {
+                       $ret .= ">$contents</$name>";
+               }
+               return $ret;
+       }
+
+       function comment( SerializerNode $parent, $text ) {
+               return "<!--$text-->";
+       }
+}