postcss-attribute-case-insensitive
Advanced tools
Comparing version 4.0.1 to 4.0.2
@@ -1,105 +0,96 @@ | ||
'use strict'; | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
value: true | ||
}); | ||
exports.default = void 0; | ||
var _postcss = require('postcss'); | ||
var _postcss = _interopRequireDefault(require("postcss")); | ||
var _postcss2 = _interopRequireDefault(_postcss); | ||
var _postcssSelectorParser = _interopRequireDefault(require("postcss-selector-parser")); | ||
var _postcssSelectorParser = require('postcss-selector-parser'); | ||
var _postcssSelectorParser2 = _interopRequireDefault(_postcssSelectorParser); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
function nodeIsInsensitiveAttribute(node) { | ||
return node.type === 'attribute' && node.insensitive; | ||
return node.type === 'attribute' && node.insensitive; | ||
} | ||
function selectorHasInsensitiveAttribute(selector) { | ||
return selector.some(nodeIsInsensitiveAttribute); | ||
return selector.some(nodeIsInsensitiveAttribute); | ||
} | ||
function transformString(strings, charPos, string) { | ||
var char = string.charAt(charPos); | ||
if (char === '') { | ||
return strings; | ||
} | ||
var char = string.charAt(charPos); | ||
var newStrings = strings.map(function (x) { | ||
return x + char; | ||
}); | ||
var upperChar = char.toLocaleUpperCase(); | ||
if (char === '') { | ||
return strings; | ||
} | ||
if (upperChar !== char) { | ||
newStrings = newStrings.concat(strings.map(function (x) { | ||
return x + upperChar; | ||
})); | ||
} | ||
var newStrings = strings.map(function (x) { | ||
return x + char; | ||
}); | ||
var upperChar = char.toLocaleUpperCase(); | ||
return transformString(newStrings, charPos + 1, string); | ||
if (upperChar !== char) { | ||
newStrings = newStrings.concat(strings.map(function (x) { | ||
return x + upperChar; | ||
})); | ||
} | ||
return transformString(newStrings, charPos + 1, string); | ||
} | ||
function createSensitiveAtributes(attribute) { | ||
var attributes = transformString([''], 0, attribute.value); | ||
return attributes.map(function (x) { | ||
var newAttribute = attribute.clone({ | ||
spaces: { | ||
after: attribute.spaces.after, | ||
before: attribute.spaces.before | ||
}, | ||
insensitive: false | ||
}); | ||
newAttribute.setValue(x); | ||
return newAttribute; | ||
}); | ||
var attributes = transformString([''], 0, attribute.value); | ||
return attributes.map(function (x) { | ||
var newAttribute = attribute.clone({ | ||
spaces: { | ||
after: attribute.spaces.after, | ||
before: attribute.spaces.before | ||
}, | ||
insensitive: false | ||
}); | ||
newAttribute.setValue(x); | ||
return newAttribute; | ||
}); | ||
} | ||
function createNewSelectors(selector) { | ||
var newSelectors = [_postcssSelectorParser2.default.selector()]; | ||
var newSelectors = [_postcssSelectorParser.default.selector()]; | ||
selector.walk(function (node) { | ||
if (!nodeIsInsensitiveAttribute(node)) { | ||
newSelectors.forEach(function (newSelector) { | ||
newSelector.append(node.clone()); | ||
}); | ||
return; | ||
} | ||
selector.walk(function (node) { | ||
if (!nodeIsInsensitiveAttribute(node)) { | ||
newSelectors.forEach(function (newSelector) { | ||
newSelector.append(node.clone()); | ||
}); | ||
return; | ||
} | ||
var sensitiveAttributes = createSensitiveAtributes(node); | ||
var newSelectorsWithSensitiveAttributes = []; | ||
sensitiveAttributes.forEach(function (newNode) { | ||
newSelectors.forEach(function (newSelector) { | ||
var newSelectorWithNewNode = newSelector.clone(); | ||
newSelectorWithNewNode.append(newNode); | ||
newSelectorsWithSensitiveAttributes.push(newSelectorWithNewNode); | ||
}); | ||
}); | ||
newSelectors = newSelectorsWithSensitiveAttributes; | ||
}); | ||
return newSelectors; | ||
var sensitiveAttributes = createSensitiveAtributes(node); | ||
var newSelectorsWithSensitiveAttributes = []; | ||
sensitiveAttributes.forEach(function (newNode) { | ||
newSelectors.forEach(function (newSelector) { | ||
var newSelectorWithNewNode = newSelector.clone(); | ||
newSelectorWithNewNode.append(newNode); | ||
newSelectorsWithSensitiveAttributes.push(newSelectorWithNewNode); | ||
}); | ||
}); | ||
newSelectors = newSelectorsWithSensitiveAttributes; | ||
}); | ||
return newSelectors; | ||
} | ||
function transform(selectors) { | ||
var newSelectors = []; | ||
var newSelectors = []; | ||
selectors.each(function (selector) { | ||
if (selectorHasInsensitiveAttribute(selector)) { | ||
newSelectors = newSelectors.concat(createNewSelectors(selector)); | ||
selector.remove(); | ||
} | ||
}); | ||
selectors.each(function (selector) { | ||
if (selectorHasInsensitiveAttribute(selector)) { | ||
newSelectors = newSelectors.concat(createNewSelectors(selector)); | ||
selector.remove(); | ||
} | ||
}); | ||
if (newSelectors.length) { | ||
newSelectors.forEach(function (newSelector) { | ||
return selectors.append(newSelector); | ||
}); | ||
} | ||
if (newSelectors.length) { | ||
newSelectors.forEach(function (newSelector) { | ||
return selectors.append(newSelector); | ||
}); | ||
} | ||
} | ||
@@ -109,9 +100,10 @@ | ||
exports.default = _postcss2.default.plugin('postcss-attribute-case-insensitive', function () { | ||
return function (css) { | ||
css.walkRules(caseInsensitiveRegExp, function (rule) { | ||
rule.selector = (0, _postcssSelectorParser2.default)(transform).processSync(rule.selector); | ||
}); | ||
}; | ||
var _default = _postcss.default.plugin('postcss-attribute-case-insensitive', function () { | ||
return function (css) { | ||
css.walkRules(caseInsensitiveRegExp, function (rule) { | ||
rule.selector = (0, _postcssSelectorParser.default)(transform).processSync(rule.selector); | ||
}); | ||
}; | ||
}); | ||
module.exports = exports.default; | ||
exports.default = _default; |
{ | ||
"name": "postcss-attribute-case-insensitive", | ||
"version": "4.0.1", | ||
"version": "4.0.2", | ||
"description": "PostCSS plugin to support case insensitive attributes", | ||
"main": "dist/index.js", | ||
"scripts": { | ||
"test": "eslint src && npm run prepublish && mocha --require babel-register", | ||
"test": "eslint src && npm run prepublish && mocha --require @babel/register", | ||
"prepublish": "babel src --out-dir dist" | ||
@@ -30,8 +30,8 @@ }, | ||
"devDependencies": { | ||
"babel-cli": "^6.26.0", | ||
"babel-eslint": "^10.0.0", | ||
"babel-plugin-add-module-exports": "^1.0.0", | ||
"babel-preset-env": "^1.7.0", | ||
"babel-register": "^6.26.0", | ||
"chai": "^4.1.2", | ||
"@babel/cli": "^7.8.3", | ||
"@babel/core": "^7.8.3", | ||
"@babel/node": "^7.8.3", | ||
"@babel/preset-env": "^7.8.3", | ||
"@babel/register": "^7.8.3", | ||
"chai": "^4.2.0", | ||
"eslint": "^5.6.0", | ||
@@ -44,4 +44,4 @@ "eslint-config-airbnb-base": "^13.1.0", | ||
"postcss": "^7.0.2", | ||
"postcss-selector-parser": "^5.0.0" | ||
"postcss-selector-parser": "^6.0.2" | ||
} | ||
} |
import postcss from 'postcss'; | ||
import { expect } from 'chai'; | ||
import plugin from '../'; | ||
import plugin from '..'; | ||
@@ -6,0 +6,0 @@ const test = (input, output, opts, done) => { |
10512
212
+ Addedcssesc@3.0.0(transitive)
+ Addedpostcss-selector-parser@6.0.16(transitive)
+ Addedutil-deprecate@1.0.2(transitive)
- Removedcssesc@2.0.0(transitive)
- Removedindexes-of@1.0.1(transitive)
- Removedpostcss-selector-parser@5.0.0(transitive)
- Removeduniq@1.0.1(transitive)