Socket
Socket
Sign inDemoInstall

postcss-bem-linter

Package Overview
Dependencies
Maintainers
2
Versions
31
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

postcss-bem-linter - npm Package Compare versions

Comparing version 2.4.1 to 2.5.0

4

CHANGELOG.md

@@ -0,1 +1,5 @@

=== 2.5.0 (April 27, 2016)
* Add support for nested selectors.
=== 2.4.1 (March 28, 2016)

@@ -2,0 +6,0 @@

@@ -5,3 +5,53 @@ var listSequences = require('./list-sequences');

var toInterpoloatedRegexp = require('./to-interpolated-regexp');
var resolveNestedSelector = require('postcss-resolve-nested-selector');
function isTopLevel(node) {
return node.type === 'root';
}
function isNestedRule(node) {
return /(?:at)?rule/.test(node.parent.type)
}
function hasNoDeclarations(node) {
return node.nodes.length && node.every(function(child) {
return child.type !== 'decl';
});
}
function getComponentRootRule(node) {
while (!isTopLevel(node.parent)) {
node = node.parent;
}
return node;
}
function unWrapSelectors(parent, rule) {
var selectors = [];
parent.walkRules(function(node) {
// Only unwrap as far as the current rule being linted
if (node.selector !== rule.selector) {return;}
node.selectors.forEach(function(selector) {
selectors = selectors.concat(resolveNestedSelector(selector, node));
});
});
return selectors;
}
function getSelectors(rule) {
// Skip validation on rules with no declarations
// as these don't exist after rules have been unwrapped
if (hasNoDeclarations(rule)) {
return [];
}
if (isNestedRule(rule)) {
var componentRootRule = getComponentRootRule(rule);
var nestedSelectors = unWrapSelectors(componentRootRule, rule);
return nestedSelectors;
}
return rule.selectors;
}
/**

@@ -19,2 +69,3 @@ * @param {Object} config

if (shouldIgnoreRule(config.rule)) return;
var rule = config.rule;

@@ -27,3 +78,3 @@ var initialPattern = (config.selectorPattern.initial)

: toInterpoloatedRegexp(initialPattern);
var selectors = config.rule.selectors;
var selectors = getSelectors(rule);

@@ -46,3 +97,3 @@ selectors.forEach(function(selector) {

{
node: config.rule,
node: rule,
word: selector,

@@ -49,0 +100,0 @@ }

8

package.json
{
"name": "postcss-bem-linter",
"version": "2.4.1",
"version": "2.5.0",
"description": "A BEM linter for postcss",

@@ -10,7 +10,9 @@ "files": [

"dependencies": {
"postcss": "^5.0.0"
"postcss": "^5.0.0",
"postcss-resolve-nested-selector": "^0.1.1"
},
"devDependencies": {
"eslint": "1.7.3",
"mocha": "2.3.3"
"mocha": "2.3.3",
"rewire": "^2.5.1"
},

@@ -17,0 +19,0 @@ "scripts": {

@@ -77,3 +77,3 @@ # postcss-bem-linter

[in the SUIT docs](https://github.com/suitcss/suit/blob/master/doc/naming-conventions.md#namespace-optional)
- `'bem'`, as defined [here](https://en.bem.info/tools/bem/bem-naming/).
- `'bem'`, as defined [here](https://en.bem.info/methodology/naming-convention/).
- `namespace`: a namespace to prefix valid classes, to be separated from the block name with a hyphen,

@@ -80,0 +80,0 @@ e.g. with namespace `foo`, `.foo-dropdown__menu`.

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc