From 26105034da4fcce7ac883c899d781f016559310d Mon Sep 17 00:00:00 2001 From: ruki Date: Thu, 8 Nov 2018 00:38:48 +0800 Subject: switch to vuepress --- node_modules/csso/lib/utils/names.js | 73 ++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 node_modules/csso/lib/utils/names.js (limited to 'node_modules/csso/lib/utils/names.js') diff --git a/node_modules/csso/lib/utils/names.js b/node_modules/csso/lib/utils/names.js new file mode 100644 index 00000000..27277711 --- /dev/null +++ b/node_modules/csso/lib/utils/names.js @@ -0,0 +1,73 @@ +var hasOwnProperty = Object.prototype.hasOwnProperty; +var knownKeywords = Object.create(null); +var knownProperties = Object.create(null); + +function getVendorPrefix(string) { + if (string[0] === '-') { + // skip 2 chars to avoid wrong match with variables names + var secondDashIndex = string.indexOf('-', 2); + + if (secondDashIndex !== -1) { + return string.substr(0, secondDashIndex + 1); + } + } + + return ''; +} + +function getKeywordInfo(keyword) { + if (hasOwnProperty.call(knownKeywords, keyword)) { + return knownKeywords[keyword]; + } + + var lowerCaseKeyword = keyword.toLowerCase(); + var vendor = getVendorPrefix(lowerCaseKeyword); + var name = lowerCaseKeyword; + + if (vendor) { + name = name.substr(vendor.length); + } + + return knownKeywords[keyword] = Object.freeze({ + vendor: vendor, + prefix: vendor, + name: name + }); +} + +function getPropertyInfo(property) { + if (hasOwnProperty.call(knownProperties, property)) { + return knownProperties[property]; + } + + var lowerCaseProperty = property.toLowerCase(); + var hack = lowerCaseProperty[0]; + + if (hack === '*' || hack === '_' || hack === '$') { + lowerCaseProperty = lowerCaseProperty.substr(1); + } else if (hack === '/' && property[1] === '/') { + hack = '//'; + lowerCaseProperty = lowerCaseProperty.substr(2); + } else { + hack = ''; + } + + var vendor = getVendorPrefix(lowerCaseProperty); + var name = lowerCaseProperty; + + if (vendor) { + name = name.substr(vendor.length); + } + + return knownProperties[property] = Object.freeze({ + hack: hack, + vendor: vendor, + prefix: hack + vendor, + name: name + }); +} + +module.exports = { + keyword: getKeywordInfo, + property: getPropertyInfo +}; -- cgit v1.2.3