postcss-nested-ancestors
Advanced tools
Comparing version 1.0.0 to 2.0.0
@@ -0,1 +1,7 @@ | ||
## 2.0.0 | ||
- Consider `rule` nodes only when when building ancestor selectors | ||
- Use `PostCSS` 6 | ||
- Restrict support to `node.js` >= 4 | ||
- Remove `object-assign` dependency | ||
## 1.0.0 | ||
@@ -2,0 +8,0 @@ - Solve complex nesting scenarios scenarios externalizing parent selectors resolution to [postcss-resolve-nested-selector](https://github.com/davidtheclark/) |
44
index.js
@@ -1,8 +0,7 @@ | ||
var postcss = require('postcss'), | ||
resolvedNestedSelector = require('postcss-resolve-nested-selector'), | ||
assign = require('object-assign'), | ||
escRgx = require('escape-string-regexp'); | ||
var postcss = require('postcss'); | ||
var resolvedNestedSelector = require('postcss-resolve-nested-selector'); | ||
var escRgx = require('escape-string-regexp'); | ||
module.exports = postcss.plugin('postcss-nested-ancestors', function (opts) { | ||
opts = assign({ | ||
opts = Object.assign({ | ||
placeholder: '^&', | ||
@@ -13,3 +12,3 @@ replaceDeclarations: false | ||
// Advanced options | ||
opts = assign({ | ||
opts = Object.assign({ | ||
levelSymbol: opts.levelSymbol || opts.placeholder.charAt(0), | ||
@@ -27,8 +26,27 @@ parentSymbol: opts.parentSymbol || opts.placeholder.charAt(1) | ||
/** | ||
* Climb up PostCSS node parent stack | ||
* Get first parent rule node (no @-rules) | ||
* @param {Object} node PostCSS node object | ||
* @return {Object|false} Parent node or false if no parent rule found | ||
*/ | ||
function getParentRule(node) { | ||
var parentNode = node.parent; | ||
if (parentNode.type === 'rule') { | ||
return parentNode; | ||
} | ||
if (parentNode.type === 'root') { | ||
return false; | ||
} | ||
return getParentRule(parentNode); | ||
} | ||
/** | ||
* Climb up PostCSS node parent stack (no @-rules) | ||
* @param {Object} node PostCSS node object | ||
* @param {Number} nestingLevel Number of parent to climb | ||
* @return {Object|false} Parent PostCSS node or false if no matching parent | ||
* @return {Object|false} Parent node or false if no matching parent | ||
*/ | ||
function getParentNodeAtLevel(node, nestingLevel) { | ||
function getParentRuleAtLevel(node, nestingLevel) { | ||
var currentNode = node; | ||
@@ -38,6 +56,6 @@ nestingLevel = nestingLevel || 1; | ||
for (var i = 0; i < nestingLevel; i++) { | ||
if (currentNode.parent.type === 'root') { | ||
currentNode = getParentRule(currentNode); | ||
if (!currentNode) { | ||
return false; | ||
} else { | ||
currentNode = currentNode.parent; | ||
} | ||
@@ -61,3 +79,3 @@ } | ||
// Get parent PostCSS node object at requested nesting level | ||
var parentNodeAtLevel = getParentNodeAtLevel(node, nestingLevel + 1); | ||
var parentNodeAtLevel = getParentRuleAtLevel(node, nestingLevel + 1); | ||
@@ -64,0 +82,0 @@ // Iterate each matching parent node selectors and resolve them |
{ | ||
"name": "postcss-nested-ancestors", | ||
"version": "1.0.0", | ||
"version": "2.0.0", | ||
"description": "PostCSS plugin to reference any ancestor selector in nested CSS", | ||
"engines": { | ||
"node": ">=4.0.0" | ||
}, | ||
"keywords": [ | ||
@@ -23,4 +26,3 @@ "postcss", | ||
"escape-string-regexp": "^1.0.5", | ||
"object-assign": "^4.1.0", | ||
"postcss": "^5.0.21", | ||
"postcss": "^6.0.0", | ||
"postcss-resolve-nested-selector": "^0.1.1" | ||
@@ -27,0 +29,0 @@ }, |
# PostCSS Nested ancestors [![Build Status][ci-img]][ci] | ||
[PostCSS] plugin to reference any ancestor selector in nested CSS. | ||
[PostCSS] plugin to reference any parent ancestor selector in nested CSS. | ||
@@ -5,0 +5,0 @@ [PostCSS]: https://github.com/postcss/postcss |
18505
3
8
175
+ Addedansi-styles@3.2.1(transitive)
+ Addedchalk@2.4.2(transitive)
+ Addedcolor-convert@1.9.3(transitive)
+ Addedcolor-name@1.1.3(transitive)
+ Addedhas-flag@3.0.0(transitive)
+ Addedpostcss@6.0.23(transitive)
+ Addedsource-map@0.6.1(transitive)
+ Addedsupports-color@5.5.0(transitive)
- Removedobject-assign@^4.1.0
- Removedansi-regex@2.1.1(transitive)
- Removedansi-styles@2.2.1(transitive)
- Removedchalk@1.1.3(transitive)
- Removedhas-ansi@2.0.0(transitive)
- Removedhas-flag@1.0.0(transitive)
- Removedjs-base64@2.6.4(transitive)
- Removedobject-assign@4.1.1(transitive)
- Removedpostcss@5.2.18(transitive)
- Removedsource-map@0.5.7(transitive)
- Removedstrip-ansi@3.0.1(transitive)
- Removedsupports-color@2.0.03.2.3(transitive)
Updatedpostcss@^6.0.0