protected function OutputRules::attrs in Zircon Profile 8
Same name and namespace in other branches
- 8.0 vendor/masterminds/html5/src/HTML5/Serializer/OutputRules.php \Masterminds\HTML5\Serializer\OutputRules::attrs()
1 call to OutputRules::attrs()
- OutputRules::openTag in vendor/
masterminds/ html5/ src/ HTML5/ Serializer/ OutputRules.php - Write the opening tag.
File
- vendor/
masterminds/ html5/ src/ HTML5/ Serializer/ OutputRules.php, line 331 - The rules for generating output in the serializer.
Class
- OutputRules
- Generate the output html5 based on element rules.
Namespace
Masterminds\HTML5\SerializerCode
protected function attrs($ele) {
// FIXME: Needs support for xml, xmlns, xlink, and namespaced elements.
if (!$ele
->hasAttributes()) {
return $this;
}
// TODO: Currently, this always writes name="value", and does not do
// value-less attributes.
$map = $ele->attributes;
$len = $map->length;
for ($i = 0; $i < $len; ++$i) {
$node = $map
->item($i);
$val = $this
->enc($node->value, true);
// XXX: The spec says that we need to ensure that anything in
// the XML, XMLNS, or XLink NS's should use the canonical
// prefix. It seems that DOM does this for us already, but there
// may be exceptions.
$name = $node->name;
// Special handling for attributes in SVG and MathML.
// Using if/elseif instead of switch because it's faster in PHP.
if ($this->outputMode == static::IM_IN_SVG) {
$name = Elements::normalizeSvgAttribute($name);
}
elseif ($this->outputMode == static::IM_IN_MATHML) {
$name = Elements::normalizeMathMlAttribute($name);
}
$this
->wr(' ')
->wr($name);
if (isset($val) && $val !== '' || $this
->nonBooleanAttribute($node)) {
$this
->wr('="')
->wr($val)
->wr('"');
}
}
}