From 26105034da4fcce7ac883c899d781f016559310d Mon Sep 17 00:00:00 2001 From: ruki Date: Thu, 8 Nov 2018 00:38:48 +0800 Subject: switch to vuepress --- .../csso/lib/compressor/compress/Attribute.js | 33 ++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 node_modules/csso/lib/compressor/compress/Attribute.js (limited to 'node_modules/csso/lib/compressor/compress/Attribute.js') diff --git a/node_modules/csso/lib/compressor/compress/Attribute.js b/node_modules/csso/lib/compressor/compress/Attribute.js new file mode 100644 index 00000000..99cafdce --- /dev/null +++ b/node_modules/csso/lib/compressor/compress/Attribute.js @@ -0,0 +1,33 @@ +// Can unquote attribute detection +// Adopted implementation of Mathias Bynens +// https://github.com/mathiasbynens/mothereff.in/blob/master/unquoted-attributes/eff.js +var escapesRx = /\\([0-9A-Fa-f]{1,6})[ \t\n\f\r]?|\\./g; +var blockUnquoteRx = /^(-?\d|--)|[\u0000-\u002c\u002e\u002f\u003A-\u0040\u005B-\u005E\u0060\u007B-\u009f]/; + +function canUnquote(value) { + if (value === '' || value === '-') { + return; + } + + // Escapes are valid, so replace them with a valid non-empty string + value = value.replace(escapesRx, 'a'); + + return !blockUnquoteRx.test(value); +} + +module.exports = function(node) { + var attrValue = node.value; + + if (!attrValue || attrValue.type !== 'String') { + return; + } + + var unquotedValue = attrValue.value.replace(/^(.)(.*)\1$/, '$2'); + if (canUnquote(unquotedValue)) { + node.value = { + type: 'Identifier', + info: attrValue.info, + name: unquotedValue + }; + } +}; -- cgit v1.2.3