diff options
| author | ruki <waruqi@gmail.com> | 2018-11-08 00:38:48 +0800 |
|---|---|---|
| committer | ruki <waruqi@gmail.com> | 2018-11-07 21:53:09 +0800 |
| commit | 26105034da4fcce7ac883c899d781f016559310d (patch) | |
| tree | c459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/csso/lib/compressor/usage.js | |
| parent | 2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff) | |
| download | xmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip | |
switch to vuepress
Diffstat (limited to 'node_modules/csso/lib/compressor/usage.js')
| -rw-r--r-- | node_modules/csso/lib/compressor/usage.js | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/node_modules/csso/lib/compressor/usage.js b/node_modules/csso/lib/compressor/usage.js new file mode 100644 index 00000000..72d8b15b --- /dev/null +++ b/node_modules/csso/lib/compressor/usage.js @@ -0,0 +1,58 @@ +var hasOwnProperty = Object.prototype.hasOwnProperty; + +function buildMap(list, caseInsensitive) { + var map = Object.create(null); + + if (!Array.isArray(list)) { + return false; + } + + for (var i = 0; i < list.length; i++) { + var name = list[i]; + + if (caseInsensitive) { + name = name.toLowerCase(); + } + + map[name] = true; + } + + return map; +} + +function buildIndex(data) { + var scopes = false; + + if (data.scopes && Array.isArray(data.scopes)) { + scopes = Object.create(null); + + for (var i = 0; i < data.scopes.length; i++) { + var list = data.scopes[i]; + + if (!list || !Array.isArray(list)) { + throw new Error('Wrong usage format'); + } + + for (var j = 0; j < list.length; j++) { + var name = list[j]; + + if (hasOwnProperty.call(scopes, name)) { + throw new Error('Class can\'t be used for several scopes: ' + name); + } + + scopes[name] = i + 1; + } + } + } + + return { + tags: buildMap(data.tags, true), + ids: buildMap(data.ids), + classes: buildMap(data.classes), + scopes: scopes + }; +} + +module.exports = { + buildIndex: buildIndex +}; |
