/
var
/
www
/
greso.tech
/
server
/
nsm
/
node_modules
/
CSSwhat
/
/var/www/greso.tech/server/nsm/node_modules/CSSwhat
mkdir
upload
Name
Size
Mode
Actions
tests/
-
0755
rm
.travis.yml
55
0644
edit
dl
rm
index.js
4501
0644
edit
dl
rm
LICENSE
1260
0644
edit
dl
rm
package.json
830
0644
edit
dl
rm
readme.md
1834
0644
edit
dl
rm
Edit:
/var/www/greso.tech/server/nsm/node_modules/CSSwhat/index.js
(4501B)
"use strict"; module.exports = parse; var re_ws = /^\s/, re_name = /^(?:\\.|[\w\-\u00c0-\uFFFF])+/, re_escape = /\\([\da-f]{1,6}\s?|(\s)|.)/ig, //modified version of https://github.com/jquery/sizzle/blob/master/src/sizzle.js#L87 re_attr = /^\s*((?:\\.|[\w\u00c0-\uFFFF\-])+)\s*(?:(\S?)=\s*(?:(['"])(.*?)\3|(#?(?:\\.|[\w\u00c0-\uFFFF\-])*)|)|)\s*(i)?\]/; var actionTypes = { __proto__: null, "undefined": "exists", "": "equals", "~": "element", "^": "start", "$": "end", "*": "any", "!": "not", "|": "hyphen" }; var simpleSelectors = { __proto__: null, ">": "child", "<": "parent", "~": "sibling", "+": "adjacent" }; var attribSelectors = { __proto__: null, "#": ["id", "equals"], ".": ["class", "element"] }; //unescape function taken from https://github.com/jquery/sizzle/blob/master/src/sizzle.js#L139 function funescape( _, escaped, escapedWhitespace ) { var high = "0x" + escaped - 0x10000; // NaN means non-codepoint // Support: Firefox // Workaround erroneous numeric interpretation of +"0x" return high !== high || escapedWhitespace ? escaped : // BMP codepoint high < 0 ? String.fromCharCode( high + 0x10000 ) : // Supplemental Plane codepoint (surrogate pair) String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); } function unescapeCSS(str){ return str.replace(re_escape, funescape); } function getClosingPos(selector){ var pos = 1, counter = 1, len = selector.length; for(; counter > 0 && pos < len; pos++){ if(selector.charAt(pos) === "(") counter++; else if(selector.charAt(pos) === ")") counter--; } return pos; } function parse(selector, options){ selector = (selector + "").trimLeft(); var subselects = [], tokens = [], sawWS = false, data, firstChar, name; function getName(){ var sub = selector.match(re_name)[0]; selector = selector.substr(sub.length); return unescapeCSS(sub); } while(selector !== ""){ if(re_name.test(selector)){ if(sawWS){ tokens.push({type: "descendant"}); sawWS = false; } name = getName(); if(!options || ("lowerCaseTags" in options ? options.lowerCaseTags : !options.xmlMode)){ name = name.toLowerCase(); } tokens.push({type: "tag", name: name}); } else if(re_ws.test(selector)){ sawWS = true; selector = selector.trimLeft(); } else { firstChar = selector.charAt(0); selector = selector.substr(1); if(firstChar in simpleSelectors){ tokens.push({type: simpleSelectors[firstChar]}); selector = selector.trimLeft(); sawWS = false; continue; } else if(firstChar === ","){ if(tokens.length === 0){ throw new SyntaxError("empty sub-selector"); } subselects.push(tokens); tokens = []; selector = selector.trimLeft(); sawWS = false; continue; } else if(sawWS){ tokens.push({type: "descendant"}); sawWS = false; } if(firstChar === "*"){ tokens.push({type: "universal"}); } else if(firstChar in attribSelectors){ tokens.push({ type: "attribute", name: attribSelectors[firstChar][0], action: attribSelectors[firstChar][1], value: getName(), ignoreCase: false }); } else if(firstChar === "["){ data = selector.match(re_attr); if(!data){ throw new SyntaxError("Malformed attribute selector: " + selector); } selector = selector.substr(data[0].length); name = unescapeCSS(data[1]); if( !options || ( "lowerCaseAttributeNames" in options ? options.lowerCaseAttributeNames : !options.xmlMode ) ){ name = name.toLowerCase(); } tokens.push({ type: "attribute", name: name, action: actionTypes[data[2]], value: unescapeCSS(data[4] || data[5] || ""), ignoreCase: !!data[6] }); } else if(firstChar === ":"){ //if(selector.charAt(0) === ":"){} //TODO pseudo-element name = getName().toLowerCase(); data = null; if(selector.charAt(0) === "("){ var pos = getClosingPos(selector); data = selector.substr(1, pos - 2); selector = selector.substr(pos); } tokens.push({type: "pseudo", name: name, data: data}); } else { //otherwise, the parser needs to throw or it would enter an infinite loop throw new SyntaxError("Unmatched selector: " + firstChar + selector); } } } if(subselects.length > 0 && tokens.length === 0){ throw new SyntaxError("empty sub-selector"); } subselects.push(tokens); return subselects; }
Save
cmd:
run