UNPKG

mostly-dom

Version:
297 lines (296 loc) 10.7 kB
<!doctype html> <html lang="en"> <head> <title>Code coverage report for src/modules/attributes.ts</title> <meta charset="utf-8" /> <link rel="stylesheet" href="../../prettify.css" /> <link rel="stylesheet" href="../../base.css" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <style type='text/css'> .coverage-summary .sorter { background-image: url(../../sort-arrow-sprite.png); } </style> </head> <body> <div class='wrapper'> <div class='pad1'> <h1> <a href="../../index.html">all files</a> / <a href="index.html">src/modules/</a> attributes.ts </h1> <div class='clearfix'> <div class='fl pad1y space-right2'> <span class="strong">35% </span> <span class="quiet">Statements</span> <span class='fraction'>14/40</span> </div> <div class='fl pad1y space-right2'> <span class="strong">0% </span> <span class="quiet">Branches</span> <span class='fraction'>0/20</span> </div> <div class='fl pad1y space-right2'> <span class="strong">20% </span> <span class="quiet">Functions</span> <span class='fraction'>1/5</span> </div> <div class='fl pad1y space-right2'> <span class="strong">34.21% </span> <span class="quiet">Lines</span> <span class='fraction'>13/38</span> </div> </div> </div> <div class='status-line low'></div> <pre><table class="coverage"> <tr><td class="line-count quiet">1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78</td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-yes">44×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes"></span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { ElementVNode, Module } from '../' &nbsp; import { BaseModule } from './BaseModule' import { emptyVNode } from './emptyVNode' &nbsp; <span class="fstat-no" title="function not covered" >export function createAttributesModule(</span>): Module { <span class="cstat-no" title="statement not covered" > return new AttributesModule()</span> } &nbsp; const NAMESPACE_URIS = { xlink: 'http://www.w3.org/1999/xlink', } &nbsp; const booleanAttributes: Array&lt;string&gt; = [ 'allowfullscreen', 'async', 'autofocus', 'autoplay', 'checked', 'compact', 'controls', 'declare', 'default', 'defaultchecked', 'defaultmuted', 'defaultselected', 'defer', 'disabled', 'draggable', 'enabled', 'formnovalidate', 'hidden', 'indeterminate', 'inert', 'ismap', 'itemscope', 'loop', 'multiple', 'muted', 'nohref', 'noresize', 'noshade', 'novalidate', 'nowrap', 'open', 'pauseonexit', 'readonly', 'required', 'reversed', 'scoped', 'seamless', 'selected', 'sortable', 'spellcheck', 'translate', 'truespeed', 'typemustmatch', 'visible', ] &nbsp; const booleanAttributeDictionary: any = Object.create(null) &nbsp; for (let i = 0, count = booleanAttributes.length; i &lt; count; i++) booleanAttributeDictionary[booleanAttributes[i]] = true &nbsp; // attributes module class AttributesModule extends BaseModule { <span class="fstat-no" title="function not covered" > public create(vNode: ElementVNode)</span> { <span class="cstat-no" title="statement not covered" > updateAttributes(emptyVNode, vNode)</span> } &nbsp; <span class="fstat-no" title="function not covered" > public update(formerVNode: ElementVNode, vNode: ElementVNode)</span> { <span class="cstat-no" title="statement not covered" > updateAttributes(formerVNode, vNode)</span> } } &nbsp; <span class="fstat-no" title="function not covered" >function updateAttributes(formerVNode: ElementVNode, vNode: ElementVNode)</span> { <span class="cstat-no" title="statement not covered" > let attributeValue: any</span> <span class="cstat-no" title="statement not covered" > let formerAttributeValue: any</span> <span class="cstat-no" title="statement not covered" > const element: Element = vNode.element</span> <span class="cstat-no" title="statement not covered" > let formerAttributes: any = formerVNode.props.attrs</span> <span class="cstat-no" title="statement not covered" > let attributes: any = vNode.props.attrs</span> <span class="cstat-no" title="statement not covered" > let attributeParts: Array&lt;string&gt;</span> &nbsp; <span class="cstat-no" title="statement not covered" > if (!formerAttributes &amp;&amp; !attributes) <span class="cstat-no" title="statement not covered" >return</span></span> &nbsp; <span class="cstat-no" title="statement not covered" > formerAttributes = formerAttributes || {}</span> <span class="cstat-no" title="statement not covered" > attributes = attributes || {}</span> &nbsp; <span class="cstat-no" title="statement not covered" > for (const key in attributes) {</span> <span class="cstat-no" title="statement not covered" > attributeValue = attributes[key]</span> <span class="cstat-no" title="statement not covered" > formerAttributeValue = formerAttributes[key]</span> &nbsp; <span class="cstat-no" title="statement not covered" > if (formerAttributeValue !== attributeValue) {</span> <span class="cstat-no" title="statement not covered" > if (!attributeValue &amp;&amp; booleanAttributeDictionary[key])</span> <span class="cstat-no" title="statement not covered" > element.removeAttribute(key)</span> &nbsp; else { <span class="cstat-no" title="statement not covered" > attributeParts = key.split(':')</span> &nbsp; <span class="cstat-no" title="statement not covered" > if (attributeParts.length &gt; 1 &amp;&amp; NAMESPACE_URIS.hasOwnProperty(attributeParts[0]))</span> <span class="cstat-no" title="statement not covered" > element.setAttributeNS((NAMESPACE_URIS as any)[attributeParts[0]], key, attributeValue)</span> &nbsp; else <span class="cstat-no" title="statement not covered" > element.setAttribute(key, attributeValue)</span> } } } &nbsp; <span class="cstat-no" title="statement not covered" > for (const key in formerAttributes)</span> <span class="cstat-no" title="statement not covered" > if (!(key in attributes))</span> <span class="cstat-no" title="statement not covered" > element.removeAttribute(key)</span> } &nbsp;</pre></td></tr> </table></pre> <div class='push'></div><!-- for sticky footer --> </div><!-- /wrapper --> <div class='footer quiet pad2 space-top1 center small'> Code coverage generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Mon Oct 22 2018 09:07:29 GMT-0400 (Eastern Daylight Time) </div> </div> <script src="../../prettify.js"></script> <script> window.onload = function () { if (typeof prettyPrint === 'function') { prettyPrint(); } }; </script> <script src="../../sorter.js"></script> </body> </html>