From 26105034da4fcce7ac883c899d781f016559310d Mon Sep 17 00:00:00 2001 From: ruki Date: Thu, 8 Nov 2018 00:38:48 +0800 Subject: switch to vuepress --- .../postcss-selector-parser/dist/tokenize.js | 231 +++++++++++++++++++++ 1 file changed, 231 insertions(+) create mode 100644 node_modules/postcss-selector-parser/dist/tokenize.js (limited to 'node_modules/postcss-selector-parser/dist/tokenize.js') diff --git a/node_modules/postcss-selector-parser/dist/tokenize.js b/node_modules/postcss-selector-parser/dist/tokenize.js new file mode 100644 index 00000000..acc73b05 --- /dev/null +++ b/node_modules/postcss-selector-parser/dist/tokenize.js @@ -0,0 +1,231 @@ +'use strict'; + +exports.__esModule = true; +exports.default = tokenize; +var singleQuote = 39, + doubleQuote = 34, + backslash = 92, + slash = 47, + newline = 10, + space = 32, + feed = 12, + tab = 9, + cr = 13, + plus = 43, + gt = 62, + tilde = 126, + pipe = 124, + comma = 44, + openBracket = 40, + closeBracket = 41, + openSq = 91, + closeSq = 93, + semicolon = 59, + asterisk = 42, + colon = 58, + ampersand = 38, + at = 64, + atEnd = /[ \n\t\r\{\(\)'"\\;/]/g, + wordEnd = /[ \n\t\r\(\)\*:;@!&'"\+\|~>,\[\]\\]|\/(?=\*)/g; + +function tokenize(input) { + var tokens = []; + var css = input.css.valueOf(); + + var code = void 0, + next = void 0, + quote = void 0, + lines = void 0, + last = void 0, + content = void 0, + escape = void 0, + nextLine = void 0, + nextOffset = void 0, + escaped = void 0, + escapePos = void 0; + + var length = css.length; + var offset = -1; + var line = 1; + var pos = 0; + + var unclosed = function unclosed(what, end) { + if (input.safe) { + css += end; + next = css.length - 1; + } else { + throw input.error('Unclosed ' + what, line, pos - offset, pos); + } + }; + + while (pos < length) { + code = css.charCodeAt(pos); + + if (code === newline) { + offset = pos; + line += 1; + } + + switch (code) { + case newline: + case space: + case tab: + case cr: + case feed: + next = pos; + do { + next += 1; + code = css.charCodeAt(next); + if (code === newline) { + offset = next; + line += 1; + } + } while (code === space || code === newline || code === tab || code === cr || code === feed); + + tokens.push(['space', css.slice(pos, next), line, pos - offset, pos]); + pos = next - 1; + break; + + case plus: + case gt: + case tilde: + case pipe: + next = pos; + do { + next += 1; + code = css.charCodeAt(next); + } while (code === plus || code === gt || code === tilde || code === pipe); + tokens.push(['combinator', css.slice(pos, next), line, pos - offset, pos]); + pos = next - 1; + break; + + case asterisk: + tokens.push(['*', '*', line, pos - offset, pos]); + break; + + case ampersand: + tokens.push(['&', '&', line, pos - offset, pos]); + break; + + case comma: + tokens.push([',', ',', line, pos - offset, pos]); + break; + + case openSq: + tokens.push(['[', '[', line, pos - offset, pos]); + break; + + case closeSq: + tokens.push([']', ']', line, pos - offset, pos]); + break; + + case colon: + tokens.push([':', ':', line, pos - offset, pos]); + break; + + case semicolon: + tokens.push([';', ';', line, pos - offset, pos]); + break; + + case openBracket: + tokens.push(['(', '(', line, pos - offset, pos]); + break; + + case closeBracket: + tokens.push([')', ')', line, pos - offset, pos]); + break; + + case singleQuote: + case doubleQuote: + quote = code === singleQuote ? "'" : '"'; + next = pos; + do { + escaped = false; + next = css.indexOf(quote, next + 1); + if (next === -1) { + unclosed('quote', quote); + } + escapePos = next; + while (css.charCodeAt(escapePos - 1) === backslash) { + escapePos -= 1; + escaped = !escaped; + } + } while (escaped); + + tokens.push(['string', css.slice(pos, next + 1), line, pos - offset, line, next - offset, pos]); + pos = next; + break; + + case at: + atEnd.lastIndex = pos + 1; + atEnd.test(css); + if (atEnd.lastIndex === 0) { + next = css.length - 1; + } else { + next = atEnd.lastIndex - 2; + } + tokens.push(['at-word', css.slice(pos, next + 1), line, pos - offset, line, next - offset, pos]); + pos = next; + break; + + case backslash: + next = pos; + escape = true; + while (css.charCodeAt(next + 1) === backslash) { + next += 1; + escape = !escape; + } + code = css.charCodeAt(next + 1); + if (escape && code !== slash && code !== space && code !== newline && code !== tab && code !== cr && code !== feed) { + next += 1; + } + tokens.push(['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset, pos]); + pos = next; + break; + + default: + if (code === slash && css.charCodeAt(pos + 1) === asterisk) { + next = css.indexOf('*/', pos + 2) + 1; + if (next === 0) { + unclosed('comment', '*/'); + } + + content = css.slice(pos, next + 1); + lines = content.split('\n'); + last = lines.length - 1; + + if (last > 0) { + nextLine = line + last; + nextOffset = next - lines[last].length; + } else { + nextLine = line; + nextOffset = offset; + } + + tokens.push(['comment', content, line, pos - offset, nextLine, next - nextOffset, pos]); + + offset = nextOffset; + line = nextLine; + pos = next; + } else { + wordEnd.lastIndex = pos + 1; + wordEnd.test(css); + if (wordEnd.lastIndex === 0) { + next = css.length - 1; + } else { + next = wordEnd.lastIndex - 2; + } + + tokens.push(['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset, pos]); + pos = next; + } + + break; + } + + pos++; + } + + return tokens; +} +module.exports = exports['default']; \ No newline at end of file -- cgit v1.2.3