summaryrefslogtreecommitdiff
path: root/src/HTML5/Elements.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/HTML5/Elements.php')
-rw-r--r--src/HTML5/Elements.php517
1 files changed, 254 insertions, 263 deletions
diff --git a/src/HTML5/Elements.php b/src/HTML5/Elements.php
index 3cb6093..a139e26 100644
--- a/src/HTML5/Elements.php
+++ b/src/HTML5/Elements.php
@@ -2,6 +2,7 @@
/**
* Provide general element functions.
*/
+
namespace Masterminds\HTML5;
/**
@@ -17,7 +18,6 @@ namespace Masterminds\HTML5;
*/
class Elements
{
-
/**
* Indicates an element is described in the specification.
*/
@@ -77,116 +77,116 @@ class Elements
* @var array
*/
public static $html5 = array(
- "a" => 1,
- "abbr" => 1,
- "address" => 65, // NORMAL | BLOCK_TAG
- "area" => 9, // NORMAL | VOID_TAG
- "article" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
- "aside" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
- "audio" => 1, // NORMAL
- "b" => 1,
- "base" => 9, // NORMAL | VOID_TAG
- "bdi" => 1,
- "bdo" => 1,
- "blockquote" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
- "body" => 1,
- "br" => 9, // NORMAL | VOID_TAG
- "button" => 1,
- "canvas" => 65, // NORMAL | BLOCK_TAG
- "caption" => 1,
- "cite" => 1,
- "code" => 1,
- "col" => 9, // NORMAL | VOID_TAG
- "colgroup" => 1,
- "command" => 9, // NORMAL | VOID_TAG
+ 'a' => 1,
+ 'abbr' => 1,
+ 'address' => 65, // NORMAL | BLOCK_TAG
+ 'area' => 9, // NORMAL | VOID_TAG
+ 'article' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
+ 'aside' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
+ 'audio' => 1, // NORMAL
+ 'b' => 1,
+ 'base' => 9, // NORMAL | VOID_TAG
+ 'bdi' => 1,
+ 'bdo' => 1,
+ 'blockquote' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
+ 'body' => 1,
+ 'br' => 9, // NORMAL | VOID_TAG
+ 'button' => 1,
+ 'canvas' => 65, // NORMAL | BLOCK_TAG
+ 'caption' => 1,
+ 'cite' => 1,
+ 'code' => 1,
+ 'col' => 9, // NORMAL | VOID_TAG
+ 'colgroup' => 1,
+ 'command' => 9, // NORMAL | VOID_TAG
// "data" => 1, // This is highly experimental and only part of the whatwg spec (not w3c). See https://developer.mozilla.org/en-US/docs/HTML/Element/data
- "datalist" => 1,
- "dd" => 65, // NORMAL | BLOCK_TAG
- "del" => 1,
- "details" => 17, // NORMAL | AUTOCLOSE_P,
- "dfn" => 1,
- "dialog" => 17, // NORMAL | AUTOCLOSE_P,
- "div" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
- "dl" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
- "dt" => 1,
- "em" => 1,
- "embed" => 9, // NORMAL | VOID_TAG
- "fieldset" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
- "figcaption" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
- "figure" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
- "footer" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
- "form" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
- "h1" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
- "h2" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
- "h3" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
- "h4" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
- "h5" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
- "h6" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
- "head" => 1,
- "header" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
- "hgroup" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
- "hr" => 73, // NORMAL | VOID_TAG
- "html" => 1,
- "i" => 1,
- "iframe" => 3, // NORMAL | TEXT_RAW
- "img" => 9, // NORMAL | VOID_TAG
- "input" => 9, // NORMAL | VOID_TAG
- "kbd" => 1,
- "ins" => 1,
- "keygen" => 9, // NORMAL | VOID_TAG
- "label" => 1,
- "legend" => 1,
- "li" => 1,
- "link" => 9, // NORMAL | VOID_TAG
- "map" => 1,
- "mark" => 1,
- "menu" => 17, // NORMAL | AUTOCLOSE_P,
- "meta" => 9, // NORMAL | VOID_TAG
- "meter" => 1,
- "nav" => 17, // NORMAL | AUTOCLOSE_P,
- "noscript" => 65, // NORMAL | BLOCK_TAG
- "object" => 1,
- "ol" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
- "optgroup" => 1,
- "option" => 1,
- "output" => 65, // NORMAL | BLOCK_TAG
- "p" => 209, // NORMAL | AUTOCLOSE_P | BLOCK_TAG | BLOCK_ONLY_INLINE
- "param" => 9, // NORMAL | VOID_TAG
- "pre" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
- "progress" => 1,
- "q" => 1,
- "rp" => 1,
- "rt" => 1,
- "ruby" => 1,
- "s" => 1,
- "samp" => 1,
- "script" => 3, // NORMAL | TEXT_RAW
- "section" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
- "select" => 1,
- "small" => 1,
- "source" => 9, // NORMAL | VOID_TAG
- "span" => 1,
- "strong" => 1,
- "style" => 3, // NORMAL | TEXT_RAW
- "sub" => 1,
- "summary" => 17, // NORMAL | AUTOCLOSE_P,
- "sup" => 1,
- "table" => 65, // NORMAL | BLOCK_TAG
- "tbody" => 1,
- "td" => 1,
- "textarea" => 5, // NORMAL | TEXT_RCDATA
- "tfoot" => 65, // NORMAL | BLOCK_TAG
- "th" => 1,
- "thead" => 1,
- "time" => 1,
- "title" => 5, // NORMAL | TEXT_RCDATA
- "tr" => 1,
- "track" => 9, // NORMAL | VOID_TAG
- "u" => 1,
- "ul" => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
- "var" => 1,
- "video" => 65, // NORMAL | BLOCK_TAG
- "wbr" => 9, // NORMAL | VOID_TAG
+ 'datalist' => 1,
+ 'dd' => 65, // NORMAL | BLOCK_TAG
+ 'del' => 1,
+ 'details' => 17, // NORMAL | AUTOCLOSE_P,
+ 'dfn' => 1,
+ 'dialog' => 17, // NORMAL | AUTOCLOSE_P,
+ 'div' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
+ 'dl' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
+ 'dt' => 1,
+ 'em' => 1,
+ 'embed' => 9, // NORMAL | VOID_TAG
+ 'fieldset' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
+ 'figcaption' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
+ 'figure' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
+ 'footer' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
+ 'form' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
+ 'h1' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
+ 'h2' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
+ 'h3' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
+ 'h4' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
+ 'h5' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
+ 'h6' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
+ 'head' => 1,
+ 'header' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
+ 'hgroup' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
+ 'hr' => 73, // NORMAL | VOID_TAG
+ 'html' => 1,
+ 'i' => 1,
+ 'iframe' => 3, // NORMAL | TEXT_RAW
+ 'img' => 9, // NORMAL | VOID_TAG
+ 'input' => 9, // NORMAL | VOID_TAG
+ 'kbd' => 1,
+ 'ins' => 1,
+ 'keygen' => 9, // NORMAL | VOID_TAG
+ 'label' => 1,
+ 'legend' => 1,
+ 'li' => 1,
+ 'link' => 9, // NORMAL | VOID_TAG
+ 'map' => 1,
+ 'mark' => 1,
+ 'menu' => 17, // NORMAL | AUTOCLOSE_P,
+ 'meta' => 9, // NORMAL | VOID_TAG
+ 'meter' => 1,
+ 'nav' => 17, // NORMAL | AUTOCLOSE_P,
+ 'noscript' => 65, // NORMAL | BLOCK_TAG
+ 'object' => 1,
+ 'ol' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
+ 'optgroup' => 1,
+ 'option' => 1,
+ 'output' => 65, // NORMAL | BLOCK_TAG
+ 'p' => 209, // NORMAL | AUTOCLOSE_P | BLOCK_TAG | BLOCK_ONLY_INLINE
+ 'param' => 9, // NORMAL | VOID_TAG
+ 'pre' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
+ 'progress' => 1,
+ 'q' => 1,
+ 'rp' => 1,
+ 'rt' => 1,
+ 'ruby' => 1,
+ 's' => 1,
+ 'samp' => 1,
+ 'script' => 3, // NORMAL | TEXT_RAW
+ 'section' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
+ 'select' => 1,
+ 'small' => 1,
+ 'source' => 9, // NORMAL | VOID_TAG
+ 'span' => 1,
+ 'strong' => 1,
+ 'style' => 3, // NORMAL | TEXT_RAW
+ 'sub' => 1,
+ 'summary' => 17, // NORMAL | AUTOCLOSE_P,
+ 'sup' => 1,
+ 'table' => 65, // NORMAL | BLOCK_TAG
+ 'tbody' => 1,
+ 'td' => 1,
+ 'textarea' => 5, // NORMAL | TEXT_RCDATA
+ 'tfoot' => 65, // NORMAL | BLOCK_TAG
+ 'th' => 1,
+ 'thead' => 1,
+ 'time' => 1,
+ 'title' => 5, // NORMAL | TEXT_RCDATA
+ 'tr' => 1,
+ 'track' => 9, // NORMAL | VOID_TAG
+ 'u' => 1,
+ 'ul' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG
+ 'var' => 1,
+ 'video' => 65, // NORMAL | BLOCK_TAG
+ 'wbr' => 9, // NORMAL | VOID_TAG
// Legacy?
'basefont' => 8, // VOID_TAG
@@ -202,7 +202,7 @@ class Elements
'marquee' => 0,
'isindex' => 8, // VOID_TAG
'xmp' => 20, // AUTOCLOSE_P | VOID_TAG | RAW_TEXT
- 'noembed' => 2 // RAW_TEXT
+ 'noembed' => 2, // RAW_TEXT
);
/**
@@ -215,45 +215,45 @@ class Elements
* @var array
*/
public static $mathml = array(
- "maction" => 1,
- "maligngroup" => 1,
- "malignmark" => 1,
- "math" => 1,
- "menclose" => 1,
- "merror" => 1,
- "mfenced" => 1,
- "mfrac" => 1,
- "mglyph" => 1,
- "mi" => 1,
- "mlabeledtr" => 1,
- "mlongdiv" => 1,
- "mmultiscripts" => 1,
- "mn" => 1,
- "mo" => 1,
- "mover" => 1,
- "mpadded" => 1,
- "mphantom" => 1,
- "mroot" => 1,
- "mrow" => 1,
- "ms" => 1,
- "mscarries" => 1,
- "mscarry" => 1,
- "msgroup" => 1,
- "msline" => 1,
- "mspace" => 1,
- "msqrt" => 1,
- "msrow" => 1,
- "mstack" => 1,
- "mstyle" => 1,
- "msub" => 1,
- "msup" => 1,
- "msubsup" => 1,
- "mtable" => 1,
- "mtd" => 1,
- "mtext" => 1,
- "mtr" => 1,
- "munder" => 1,
- "munderover" => 1
+ 'maction' => 1,
+ 'maligngroup' => 1,
+ 'malignmark' => 1,
+ 'math' => 1,
+ 'menclose' => 1,
+ 'merror' => 1,
+ 'mfenced' => 1,
+ 'mfrac' => 1,
+ 'mglyph' => 1,
+ 'mi' => 1,
+ 'mlabeledtr' => 1,
+ 'mlongdiv' => 1,
+ 'mmultiscripts' => 1,
+ 'mn' => 1,
+ 'mo' => 1,
+ 'mover' => 1,
+ 'mpadded' => 1,
+ 'mphantom' => 1,
+ 'mroot' => 1,
+ 'mrow' => 1,
+ 'ms' => 1,
+ 'mscarries' => 1,
+ 'mscarry' => 1,
+ 'msgroup' => 1,
+ 'msline' => 1,
+ 'mspace' => 1,
+ 'msqrt' => 1,
+ 'msrow' => 1,
+ 'mstack' => 1,
+ 'mstyle' => 1,
+ 'msub' => 1,
+ 'msup' => 1,
+ 'msubsup' => 1,
+ 'mtable' => 1,
+ 'mtd' => 1,
+ 'mtext' => 1,
+ 'mtr' => 1,
+ 'munder' => 1,
+ 'munderover' => 1,
);
/**
@@ -269,86 +269,86 @@ class Elements
* @var array
*/
public static $svg = array(
- "a" => 1,
- "altGlyph" => 1,
- "altGlyphDef" => 1,
- "altGlyphItem" => 1,
- "animate" => 1,
- "animateColor" => 1,
- "animateMotion" => 1,
- "animateTransform" => 1,
- "circle" => 1,
- "clipPath" => 1,
- "color-profile" => 1,
- "cursor" => 1,
- "defs" => 1,
- "desc" => 1,
- "ellipse" => 1,
- "feBlend" => 1,
- "feColorMatrix" => 1,
- "feComponentTransfer" => 1,
- "feComposite" => 1,
- "feConvolveMatrix" => 1,
- "feDiffuseLighting" => 1,
- "feDisplacementMap" => 1,
- "feDistantLight" => 1,
- "feFlood" => 1,
- "feFuncA" => 1,
- "feFuncB" => 1,
- "feFuncG" => 1,
- "feFuncR" => 1,
- "feGaussianBlur" => 1,
- "feImage" => 1,
- "feMerge" => 1,
- "feMergeNode" => 1,
- "feMorphology" => 1,
- "feOffset" => 1,
- "fePointLight" => 1,
- "feSpecularLighting" => 1,
- "feSpotLight" => 1,
- "feTile" => 1,
- "feTurbulence" => 1,
- "filter" => 1,
- "font" => 1,
- "font-face" => 1,
- "font-face-format" => 1,
- "font-face-name" => 1,
- "font-face-src" => 1,
- "font-face-uri" => 1,
- "foreignObject" => 1,
- "g" => 1,
- "glyph" => 1,
- "glyphRef" => 1,
- "hkern" => 1,
- "image" => 1,
- "line" => 1,
- "linearGradient" => 1,
- "marker" => 1,
- "mask" => 1,
- "metadata" => 1,
- "missing-glyph" => 1,
- "mpath" => 1,
- "path" => 1,
- "pattern" => 1,
- "polygon" => 1,
- "polyline" => 1,
- "radialGradient" => 1,
- "rect" => 1,
- "script" => 3, // NORMAL | RAW_TEXT
- "set" => 1,
- "stop" => 1,
- "style" => 3, // NORMAL | RAW_TEXT
- "svg" => 1,
- "switch" => 1,
- "symbol" => 1,
- "text" => 1,
- "textPath" => 1,
- "title" => 1,
- "tref" => 1,
- "tspan" => 1,
- "use" => 1,
- "view" => 1,
- "vkern" => 1
+ 'a' => 1,
+ 'altGlyph' => 1,
+ 'altGlyphDef' => 1,
+ 'altGlyphItem' => 1,
+ 'animate' => 1,
+ 'animateColor' => 1,
+ 'animateMotion' => 1,
+ 'animateTransform' => 1,
+ 'circle' => 1,
+ 'clipPath' => 1,
+ 'color-profile' => 1,
+ 'cursor' => 1,
+ 'defs' => 1,
+ 'desc' => 1,
+ 'ellipse' => 1,
+ 'feBlend' => 1,
+ 'feColorMatrix' => 1,
+ 'feComponentTransfer' => 1,
+ 'feComposite' => 1,
+ 'feConvolveMatrix' => 1,
+ 'feDiffuseLighting' => 1,
+ 'feDisplacementMap' => 1,
+ 'feDistantLight' => 1,
+ 'feFlood' => 1,
+ 'feFuncA' => 1,
+ 'feFuncB' => 1,
+ 'feFuncG' => 1,
+ 'feFuncR' => 1,
+ 'feGaussianBlur' => 1,
+ 'feImage' => 1,
+ 'feMerge' => 1,
+ 'feMergeNode' => 1,
+ 'feMorphology' => 1,
+ 'feOffset' => 1,
+ 'fePointLight' => 1,
+ 'feSpecularLighting' => 1,
+ 'feSpotLight' => 1,
+ 'feTile' => 1,
+ 'feTurbulence' => 1,
+ 'filter' => 1,
+ 'font' => 1,
+ 'font-face' => 1,
+ 'font-face-format' => 1,
+ 'font-face-name' => 1,
+ 'font-face-src' => 1,
+ 'font-face-uri' => 1,
+ 'foreignObject' => 1,
+ 'g' => 1,
+ 'glyph' => 1,
+ 'glyphRef' => 1,
+ 'hkern' => 1,
+ 'image' => 1,
+ 'line' => 1,
+ 'linearGradient' => 1,
+ 'marker' => 1,
+ 'mask' => 1,
+ 'metadata' => 1,
+ 'missing-glyph' => 1,
+ 'mpath' => 1,
+ 'path' => 1,
+ 'pattern' => 1,
+ 'polygon' => 1,
+ 'polyline' => 1,
+ 'radialGradient' => 1,
+ 'rect' => 1,
+ 'script' => 3, // NORMAL | RAW_TEXT
+ 'set' => 1,
+ 'stop' => 1,
+ 'style' => 3, // NORMAL | RAW_TEXT
+ 'svg' => 1,
+ 'switch' => 1,
+ 'symbol' => 1,
+ 'text' => 1,
+ 'textPath' => 1,
+ 'title' => 1,
+ 'tref' => 1,
+ 'tspan' => 1,
+ 'use' => 1,
+ 'view' => 1,
+ 'vkern' => 1,
);
/**
@@ -419,7 +419,7 @@ class Elements
'viewtarget' => 'viewTarget',
'xchannelselector' => 'xChannelSelector',
'ychannelselector' => 'yChannelSelector',
- 'zoomandpan' => 'zoomAndPan'
+ 'zoomandpan' => 'zoomAndPan',
);
/**
@@ -465,7 +465,7 @@ class Elements
'glyphref' => 'glyphRef',
'lineargradient' => 'linearGradient',
'radialgradient' => 'radialGradient',
- 'textpath' => 'textPath'
+ 'textpath' => 'textPath',
);
/**
@@ -477,24 +477,22 @@ class Elements
*
* Elements::isA('script', Elements::TEXT_RCDATA); // Returns false.
*
- * @param string $name
- * The element name.
- * @param int $mask
- * One of the constants on this class.
- * @return boolean true if the element matches the mask, false otherwise.
+ * @param string $name The element name
+ * @param int $mask One of the constants on this class
+ *
+ * @return bool true if the element matches the mask, false otherwise
*/
public static function isA($name, $mask)
{
- return (static::element($name) & $mask) == $mask;
+ return (static::element($name) & $mask) === $mask;
}
/**
* Test if an element is a valid html5 element.
*
- * @param string $name
- * The name of the element.
+ * @param string $name The name of the element
*
- * @return bool True if a html5 element and false otherwise.
+ * @return bool true if a html5 element and false otherwise
*/
public static function isHtml5Element($name)
{
@@ -506,10 +504,9 @@ class Elements
/**
* Test if an element name is a valid MathML presentation element.
*
- * @param string $name
- * The name of the element.
+ * @param string $name The name of the element
*
- * @return bool True if a MathML name and false otherwise.
+ * @return bool true if a MathML name and false otherwise
*/
public static function isMathMLElement($name)
{
@@ -520,10 +517,9 @@ class Elements
/**
* Test if an element is a valid SVG element.
*
- * @param string $name
- * The name of the element.
+ * @param string $name The name of the element
*
- * @return boolean True if a SVG element and false otherise.
+ * @return bool true if a SVG element and false otherise
*/
public static function isSvgElement($name)
{
@@ -537,10 +533,9 @@ class Elements
* This includes html5 elements along with other allowed embedded content
* such as svg and mathml.
*
- * @param string $name
- * The name of the element.
+ * @param string $name The name of the element
*
- * @return bool True if valid and false otherwise.
+ * @return bool true if valid and false otherwise
*/
public static function isElement($name)
{
@@ -550,10 +545,9 @@ class Elements
/**
* Get the element mask for the given element name.
*
- * @param string $name
- * The name of the element.
+ * @param string $name The name of the element
*
- * @return int The element mask.
+ * @return int the element mask
*/
public static function element($name)
{
@@ -573,10 +567,9 @@ class Elements
/**
* Normalize a SVG element name to its proper case and form.
*
- * @param string $name
- * The name of the element.
+ * @param string $name The name of the element
*
- * @return string The normalized form of the element name.
+ * @return string the normalized form of the element name
*/
public static function normalizeSvgElement($name)
{
@@ -591,10 +584,9 @@ class Elements
/**
* Normalize a SVG attribute name to its proper case and form.
*
- * @param string $name
- * The name of the attribute.
+ * @param string $name The name of the attribute
*
- * @return string The normalized form of the attribute name.
+ * @return string the normalized form of the attribute name
*/
public static function normalizeSvgAttribute($name)
{
@@ -611,17 +603,16 @@ class Elements
*
* Note, all MathML element names are lowercase.
*
- * @param string $name
- * The name of the attribute.
+ * @param string $name The name of the attribute
*
- * @return string The normalized form of the attribute name.
+ * @return string the normalized form of the attribute name
*/
public static function normalizeMathMlAttribute($name)
{
$name = strtolower($name);
// Only one attribute has a mixed case form for MathML.
- if ($name == 'definitionurl') {
+ if ('definitionurl' === $name) {
$name = 'definitionURL';
}