-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js.map
1 lines (1 loc) · 25.5 KB
/
index.js.map
1
{"version":3,"file":"index.js","sources":["src/join.js","src/sort.js","src/serialize.js","src/index.js"],"sourcesContent":["import homunculus from 'homunculus';\n\nlet Token = homunculus.getClass('token', 'jsx');\n\nlet S = {};\nS[Token.LINE] = S[Token.COMMENT] = S[Token.BLANK] = true;\n\nlet index;\nlet res;\n\nfunction recursion(node, excludeLine) {\n if(node.isToken()) {\n let token = node.token();\n if(!token.isVirtual()) {\n res += token.content();\n while(token.next()) {\n token = token.next();\n if(token.isVirtual() || !S.hasOwnProperty(token.type())) {\n break;\n }\n let s = token.content();\n if(!excludeLine || s !== '\\n') {\n res += token.content();\n }\n }\n }\n }\n else {\n node.leaves().forEach(function(leaf) {\n recursion(leaf, excludeLine);\n });\n }\n}\n\nexport default function(node, excludeLine) {\n res = '';\n recursion(node, excludeLine);\n return res;\n}\n","function quickSort(arr, begin, end, compare) {\n if(begin >= end) {\n return;\n }\n let i = begin, j = end, p = i, n = arr[p], seq = true;\n outer:\n while(i < j) {\n if(seq) {\n for(; i < j; j--) {\n if((compare && compare.call(arr, n, arr[j])) || (!compare && n > arr[j])) {\n swap(arr, p, j);\n p = j;\n seq = !seq;\n continue outer;\n }\n }\n }\n else {\n for(; i < j; i++) {\n if((compare && compare.call(arr, arr[i], n)) || (!compare && n < arr[i])) {\n swap(arr, p, i);\n p = i;\n seq = !seq;\n continue outer;\n }\n }\n }\n }\n quickSort(arr, begin, p, compare);\n quickSort(arr, p + 1, end, compare);\n}\nfunction swap(arr, a, b) {\n let temp = arr[a];\n arr[a] = arr[b];\n arr[b] = temp;\n}\n\nexport default function(arr, compare) {\n if(!Array.isArray(arr)) {\n throw new Error('quick sort need an array');\n }\n if(arr.length < 2) {\n return arr;\n }\n quickSort(arr, 0, arr.length - 1, compare);\n return arr;\n};\n","import homunculus from 'homunculus';\nimport join from './join';\nimport sort from './sort';\n\nlet Token = homunculus.getClass('token', 'css');\nlet Node = homunculus.getClass('node', 'css');\n\nlet idx;\n\nfunction parse(node) {\n idx = 0;\n let res = {};\n node.leaves().forEach(function(leaf, i) {\n if(leaf.name() === Node.STYLESET) {\n styleset(leaf, res);\n }\n });\n return res;\n}\n\nfunction styleset(node, res) {\n let sels = selectors(node.first());\n let styles = block(node.last());\n let i = idx++;\n sels.forEach(function(sel) {\n record(sel, i, styles, res);\n });\n}\nfunction selectors(node) {\n let res = [];\n node.leaves().forEach(function(leaf) {\n if(leaf.name() === Node.SELECTOR) {\n res.push(selector(leaf));\n }\n });\n return res;\n}\nfunction selector(node) {\n return node.leaves().map(function(leaf) {\n return leaf.token();\n });\n}\nfunction block(node) {\n let res = [];\n node.leaves().forEach(function(leaf) {\n if(leaf.name() === Node.STYLE) {\n res.push(style(leaf));\n }\n });\n return res;\n}\nfunction style(node) {\n let s = join(node, true).trim();\n s = s.replace(/;$/, '');\n return s;\n}\n\nfunction record(sel, idx, styles, res) {\n let _p = [0, 0, 0];\n for(let i = sel.length - 1; i >= 0; i--) {\n let temp = {\n s: [],\n a: [],\n p: []\n };\n let t = sel[i];\n let s = t.content();\n priority(t, s, _p);\n switch(t.type()) {\n case Token.SELECTOR:\n temp.s.push(s);\n break;\n case Token.PSEUDO:\n let s2 = s.replace(/^:+/, '');\n if(sel[i].content() === '(') {\n s2 += '(';\n for(let j = i + 1; j < sel.length; j++) {\n if(sel[j].content() === ')') {\n s2 += ')';\n break;\n }\n s2 += sel[j].content();\n }\n }\n temp.p.push(s2);\n break;\n case Token.SIGN:\n switch(s) {\n case ']':\n let item = [];\n i--;\n t = t.prev();\n while(t) {\n s = t.content();\n if(s === '[') {\n break;\n }\n i--;\n t = t.prev();\n s = s.replace(/^(['\"])(.*)\\1$/, '$2');\n item.unshift(s);\n }\n temp.a.push({\n v: item,\n s: item.join('')\n });\n break;\n case '+':\n case '>':\n case '~':\n s = '_' + s;\n res[s] = res[s] || {};\n res = res[s];\n continue;\n //忽略掉(),因为其出现在:nth-child(n)中\n case ')':\n i--;\n t = t.prev();\n while(t) {\n s = t.content();\n if(s === '(') {\n break;\n }\n i--;\n t = t.prev();\n }\n break;\n }\n break;\n }\n t = t.prev();\n while(t && !isSplit(t)) {\n s = t.content();\n priority(t, s, _p);\n switch(t.type()) {\n case Token.SELECTOR:\n temp.s.push(s);\n break;\n case Token.PSEUDO:\n let s2 = s.replace(/^:+/, '');\n if(sel[i].content() === '(') {\n s2 += '(';\n for(let j = i + 1; j < sel.length; j++) {\n if(sel[j].content() === ')') {\n s2 += ')';\n break;\n }\n s2 += sel[j].content();\n }\n }\n temp.p.push(s2);\n break;\n case Token.SIGN:\n switch(s) {\n case ']':\n let item = [];\n i--;\n t = t.prev();\n while(t) {\n s = t.content();\n if(s === '[') {\n break;\n }\n i--;\n t = t.prev();\n s = s.replace(/^(['\"])(.*)\\1$/, '$2');\n item.unshift(s);\n }\n temp.a.push({\n v: item,\n s: item.join('')\n });\n break;\n case '+':\n case '>':\n case '~':\n s = '_' + s;\n res[s] = res[s] || {};\n res = res[s];\n continue;\n //忽略掉(),因为其出现在:nth-child(n)中\n case ')':\n i--;\n t = t.prev();\n while(t) {\n s = t.content();\n if(s === '(') {\n break;\n }\n i--;\n t = t.prev();\n }\n break;\n }\n break;\n }\n t = t.prev();\n i--;\n }\n res = save(temp, res);\n }\n res._v = res._v || [];\n styles.forEach(function(style) {\n let [k, v] = style.split(':');\n k = k.replace(/-(\\w)/g, function($0, $1) {\n return $1.toUpperCase();\n });\n res._v.push([idx, [k, v]]);\n });\n res._p = _p;\n}\n\nfunction priority(token, s, p) {\n switch(token.type()) {\n case Token.SELECTOR:\n if(s.charAt(0) === '#') {\n p[0]++;\n }\n else if(s.charAt(0) === '.') {\n p[1]++;\n }\n else {\n p[2]++;\n }\n break;\n case Token.PSEUDO:\n p[2]++;\n break;\n case Token.SIGN:\n if(s === ']') {\n p[1]++;\n }\n break;\n }\n}\n\nfunction isSplit(token) {\n if(token.type() === Token.BLANK) {\n return true;\n }\n if(token.type() === Token.LINE) {\n return true;\n }\n if(token.type() === Token.SIGN) {\n return ['>', '+', '~', '{', '}', ','].indexOf(token.content()) > -1;\n }\n return false;\n}\n\nfunction save(temp, res) {\n if(!temp.s.length) {\n temp.s.push('*');\n }\n //selector按name/class/id排序\n sort(temp.s, function(a, b) {\n return a !== '*' && a < b || b === '*';\n });\n let star = temp.s[0] === '*';\n //*开头有几种组合,记录之\n if(star) {\n res['_*'] = true;\n if(temp.s.length > 1) {\n if(temp.s.length > 2) {\n res['_*.#'] = true;\n }\n else if(temp.s[1][0] === '.') {\n res['_*.'] = true;\n }\n else {\n res['_*#'] = true;\n }\n }\n }\n let s = temp.s.join('');\n res[s] = res[s] || {};\n res = res[s];\n //伪类\n if(temp.p.length) {\n res['_:'] = res['_:'] || [];\n let pseudos = res['_:'];\n let pseudo = [];\n temp.p.forEach(function(item) {\n //防止多次重复\n if(pseudo.indexOf(item) === -1) {\n pseudo.push(item);\n }\n });\n //排序后比对,可能重复,合并之如a:hover{...}a:hover{...}会生成2个hover数组\n sort(pseudo, function(a, b) {\n return a < b;\n });\n let isExist = -1;\n for(let j = 0, len = pseudos.length; j < len; j++) {\n if(pseudos[j][0].join(',') === pseudo.join(',')) {\n isExist = j;\n break;\n }\n }\n if(isExist > -1) {\n res = pseudos[isExist][1];\n }\n else {\n let arr = [];\n arr.push(pseudo);\n res = {};\n arr.push(res);\n pseudos.push(arr);\n }\n }\n //属性\n if(temp.a.length) {\n res['_['] = res['_['] || [];\n let attrs = res['_['];\n let attr = [];\n //去重并排序\n sort(temp.a, function(a, b) {\n return a.s < b.s;\n });\n let hash = {};\n temp.a.forEach(function(item) {\n if(!hash.hasOwnProperty(item.s)) {\n attr.push(item.v);\n }\n });\n let isExist = -1;\n let join = '';\n join += attr.map(function(item) {\n return item.join('');\n });\n for(let j = 0, len = attrs.length; j < len; j++) {\n let s1 = '';\n s1 += attrs[j][0].map(function(item) {\n return item.join('');\n });\n if(s1 === join) {\n isExist = j;\n break;\n }\n }\n if(isExist > -1) {\n res = attrs[isExist][1];\n }\n else {\n let arr = [];\n arr.push(attr);\n res = {};\n arr.push(res);\n attrs.push(arr);\n }\n }\n return res;\n}\n\nexport default parse;\n","import homunculus from 'homunculus';\nimport serialize from './serialize';\n\nclass Selenite {\n constructor() {\n this.parser = null;\n this.node = null;\n }\n\n parse(code, option = {}) {\n this.parser = homunculus.getParser('css');\n this.node = this.parser.parse(code);\n return serialize(this.node);\n }\n\n tokens() {\n return this.ast ? this.parser.lexer.tokens() : null;\n }\n ast() {\n return this.node;\n }\n}\n\nexport default new Selenite();\n"],"names":["Token","homunculus","getClass","S","LINE","COMMENT","BLANK","res","recursion","node","excludeLine","isToken","token","isVirtual","content","next","hasOwnProperty","type","s","leaves","forEach","leaf","quickSort","arr","begin","end","compare","i","j","p","n","seq","outer","call","swap","a","b","temp","Array","isArray","Error","length","Node","idx","parse","name","STYLESET","styleset","sels","selectors","first","styles","block","last","sel","record","SELECTOR","push","selector","map","STYLE","style","join","trim","replace","_p","t","priority","PSEUDO","s2","SIGN","item","prev","unshift","v","isSplit","save","_v","split","k","$0","$1","toUpperCase","charAt","indexOf","sort","star","pseudos","pseudo","isExist","len","attrs","attr","hash","s1","Selenite","parser","code","getParser","serialize","ast","lexer","tokens"],"mappings":"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"}