Вход Регистрация
Файл: error-kitty/node_modules/cheerio/node_modules/dom-serializer/index.js
Строк: 113
<?php
/*
  Module dependencies
*/
var ElementType = require('domelementtype');
var 
entities = require('entities');

/*
  Boolean Attributes
*/
var booleanAttributes = {
  
__proto__null,
  
allowfullscreentrue,
  
asynctrue,
  
autofocustrue,
  
autoplaytrue,
  
checkedtrue,
  
controlstrue,
  default: 
true,
  
defertrue,
  
disabledtrue,
  
hiddentrue,
  
ismaptrue,
  
looptrue,
  
multipletrue,
  
mutedtrue,
  
opentrue,
  
readonlytrue,
  
requiredtrue,
  
reversedtrue,
  
scopedtrue,
  
seamlesstrue,
  
selectedtrue,
  
typemustmatchtrue
};

var 
unencodedElements = {
  
__proto__null,
  
styletrue,
  
scripttrue,
  
xmptrue,
  
iframetrue,
  
noembedtrue,
  
noframestrue,
  
plaintexttrue,
  
noscripttrue
};

/*
  Format attributes
*/
function formatAttrs(attributesopts) {
  if (!
attributes) return;

  var 
output '',
      
value;

  
// Loop through the attributes
  
for (var key in attributes) {
    
value attributes[key];
    if (
output) {
      
output += ' ';
    }

    if (!
value && booleanAttributes[key]) {
      
output += key;
    } else {
      
output += key '="' + (opts.decodeEntities entities.encodeXML(value) : value) + '"';
    }
  }

  return 
output;
}

/*
  Self-enclosing tags (stolen from node-htmlparser)
*/
var singleTag = {
  
__proto__null,
  
areatrue,
  
basetrue,
  
basefonttrue,
  
brtrue,
  
coltrue,
  
commandtrue,
  
embedtrue,
  
frametrue,
  
hrtrue,
  
imgtrue,
  
inputtrue,
  
isindextrue,
  
keygentrue,
  
linktrue,
  
metatrue,
  
paramtrue,
  
sourcetrue,
  
tracktrue,
  
wbrtrue,

  
//common self closing svg elements
  
pathtrue,
  
circletrue,
  
ellipsetrue,
  
linetrue,
  
recttrue,
  use: 
true
};

var 
render module.exports = function(domopts) {
  if (!Array.
isArray(dom) && !dom.cheeriodom = [dom];
  
opts opts || {};

  var 
output '';

  for(var 
0dom.lengthi++){
    var 
elem dom[i];

    if (
elem.type === 'root')
      
output += render(elem.childrenopts);
    else if (
ElementType.isTag(elem))
      
output += renderTag(elemopts);
    else if (
elem.type === ElementType.Directive)
      
output += renderDirective(elem);
    else if (
elem.type === ElementType.Comment)
      
output += renderComment(elem);
    else if (
elem.type === ElementType.CDATA)
      
output += renderCdata(elem);
    else
      
output += renderText(elemopts);
  }

  return 
output;
};

function 
renderTag(elemopts) {
  var 
tag '<' elem.name,
      
attribs formatAttrs(elem.attribsopts);

  if (
attribs) {
    
tag += ' ' attribs;
  }

  if (
    
opts.xmlMode &&
    (!
elem.children || elem.children.length === 0)
  ) {
    
tag += '/>';
  } else {
    
tag += '>';
    
tag += render(elem.childrenopts);

    if (!
singleTag[elem.name] || opts.xmlMode) {
      
tag += '</' elem.name '>';
    }
  }



  return 
tag;
}

function 
renderDirective(elem) {
  return 
'<' elem.data '>';
}

function 
renderText(elemopts) {
  var 
data elem.data || '';

  
// if entities weren't decoded, no need to encode them back
  
if (opts.decodeEntities && !(elem.parent && elem.parent.name in unencodedElements)) {
    
data entities.encodeXML(data);
  }

  return 
data;
}

function 
renderCdata(elem) {
  return 
'<![CDATA[' elem.children[0].data ']]>';
}

function 
renderComment(elem) {
  return 
'<!--' elem.data '-->';
}
?>
Онлайн: 0
Реклама