48 public function characters( SerializerNode $parent, $text, $start, $length ) {
49 $text = parent::characters( $parent, $text, $start, $length );
51 if ( $parent->namespace !== HTMLData::NS_HTML
52 || !isset( $this->rawTextElements[$parent->name] )
54 if ( $this->textProcessor !==
null ) {
55 $text = ( $this->textProcessor )( $text );
60 $text = Sanitizer::normalizeCharReferences( $text );
64 public function element( SerializerNode $parent, SerializerNode $node, $contents ) {
65 $data = $node->snData;
66 if ( $data && $data->isPWrapper ) {
67 if ( $data->nonblankNodeCount ) {
68 return "<p>$contents</p>";
75 $attrs = $node->attrs;
76 if ( isset( self::MARKED_EMPTY_ELEMENTS[$name] ) && $attrs->count() === 0
77 && strspn( $contents,
"\t\n\f\r " ) === strlen( $contents )
79 return "<{$name} class=\"mw-empty-elt\">$contents</{$name}>";
83 foreach ( $attrs->getValues() as $attrName => $attrValue ) {
84 $encValue = strtr( $attrValue, $this->attributeEscapes );
85 $encValue = Sanitizer::normalizeCharReferences( $encValue );
86 $s .=
" $attrName=\"$encValue\"";
88 if ( $node->namespace === HTMLData::NS_HTML && isset( $this->voidElements[$name] ) ) {
94 if ( $node->namespace === HTMLData::NS_HTML
95 && isset( $contents[0] ) && $contents[0] ===
"\n"
96 && isset( $this->prefixLfElements[$name] )
98 $s .=
"\n$contents</$name>";
100 $s .=
"$contents</$name>";