New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

bemquery-selector-converter

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

bemquery-selector-converter - npm Package Compare versions

Comparing version

to
0.1.5

37

CHANGELOG.md

@@ -1,28 +0,47 @@

# bemquery-package-boilerplate Changelog
# bemquery-selector-converter Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).
---
## 0.1.4
## [0.1.5] – 2016-09-17
### Added
* Ability to install package via [Bower](https://bower.io/).
## [0.1.4]
### Changed
* Updated boilerplate.
### Fixed
* Fixed headings levels in changelog.
## 0.1.3
* Repaired changelog.
## [0.1.3]
### Changed
* Updated CI configuration.
* Updated dependencies.
## 0.1.2
### Fixed
* Repaired changelog.
## [0.1.2]
### Changed
* Updated rollup configuration.
* Updated dependencies.
### Fixed
* Fixed wrong project name in documentation.
## 0.1.1
## [0.1.1]
### Changed
* Updated dependencies.
## 0.1.0
### Added
* First working version, yay!
* First working version, yay!
[0.1.5]: https://github.com/BEMQuery/bemquery-selector-converter/compare/v0.1.4...v0.1.5
[0.1.4]: https://github.com/BEMQuery/bemquery-selector-converter/compare/v0.1.3...v0.1.4
[0.1.3]: https://github.com/BEMQuery/bemquery-selector-converter/compare/v0.1.2...v0.1.3
[0.1.2]: https://github.com/BEMQuery/bemquery-selector-converter/compare/v0.1.1...v0.1.2
[0.1.1]: https://github.com/BEMQuery/bemquery-selector-converter/compare/v0.1.0...v0.1.1

@@ -1,2 +0,2 @@

/*! bemquery-selector-converter v0.1.4 | (c) 2016 BEMQuery team | MIT license (see LICENSE) */
/*! bemquery-selector-converter v0.1.5 | (c) 2016 BEMQuery team | MIT license (see LICENSE) */
/** Simple class representing selector */

@@ -3,0 +3,0 @@ class Selector {

@@ -1,2 +0,2 @@

/*! bemquery-selector-converter v0.1.4 | (c) 2016 BEMQuery team | MIT license (see LICENSE) */
/*! bemquery-selector-converter v0.1.5 | (c) 2016 BEMQuery team | MIT license (see LICENSE) */
(function (global, factory) {

@@ -6,175 +6,175 @@ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :

(factory((global.bemquerySelectorConverter = global.bemquerySelectorConverter || {})));
}(this, function (exports) { 'use strict';
}(this, (function (exports) { 'use strict';
/** Simple class representing selector */
class Selector {
/** Simple class representing selector */
class Selector {
/**
* Creates new Selector instance.
*
* @param {String} BEM BEM version of selector.
* @param {String} CSS CSS version of selector.
*/
constructor( BEM, CSS ) {
/**
* Creates new Selector instance.
* BEM version of selector.
*
* @param {String} BEM BEM version of selector.
* @param {String} CSS CSS version of selector.
* @property {String}
*/
constructor( BEM, CSS ) {
/**
* BEM version of selector.
*
* @property {String}
*/
this.BEM = BEM;
this.BEM = BEM;
/**
* CSS version of selector.
*
* @property {String}
*/
this.CSS = CSS;
/**
* CSS version of selector.
*
* @property {String}
*/
this.CSS = CSS;
Object.freeze( this );
}
Object.freeze( this );
}
}
function endsWithModifier( selector, bemConfig ) {
const regex = new RegExp( `[^${bemConfig.elemSeparator}${bemConfig.modifierSeparator}]+${bemConfig.modifierSeparator}[^${bemConfig.elemSeparator}${bemConfig.modifierSeparator}]+$`,
'g' );
function endsWithModifier( selector, bemConfig ) {
const regex = new RegExp( `[^${bemConfig.elemSeparator}${bemConfig.modifierSeparator}]+${bemConfig.modifierSeparator}[^${bemConfig.elemSeparator}${bemConfig.modifierSeparator}]+$`,
'g' );
return !!selector.match( regex );
}
return !!selector.match( regex );
}
function getSelectorWithoutModifier( selector, modifierSeparator ) {
return ` ${selector.substring( selector.lastIndexOf( '.' ), selector.lastIndexOf( modifierSeparator ) )}`;
}
function getSelectorWithoutModifier( selector, modifierSeparator ) {
return ` ${selector.substring( selector.lastIndexOf( '.' ), selector.lastIndexOf( modifierSeparator ) )}`;
}
const defaultConfig = {
bem: {
elemSeparator: '__',
modifierSeparator: '_'
const defaultConfig = {
bem: {
elemSeparator: '__',
modifierSeparator: '_'
},
rules: {
default( token ) {
return `.${token}`;
},
rules: {
default( token ) {
return `.${token}`;
},
' > '( token, config ) {
return ` ${config.rules.default( token )}`;
},
' > '( token, config ) {
return ` ${config.rules.default( token )}`;
},
' '( token, config, selector ) {
if ( endsWithModifier( selector, config.bem ) ) {
return `${getSelectorWithoutModifier( selector, config.bem.modifierSeparator )}${config.bem.elemSeparator}${token}`;
}
return `${config.bem.elemSeparator}${token}`;
},
':'( token, config ) {
return `${config.bem.modifierSeparator}${token}`;
' '( token, config, selector ) {
if ( endsWithModifier( selector, config.bem ) ) {
return `${getSelectorWithoutModifier( selector, config.bem.modifierSeparator )}${config.bem.elemSeparator}${token}`;
}
}
};
function convertToken( tokens, config, selector = '' ) {
const rules = config.rules;
const delimeter = tokens.shift();
let rule;
let token;
return `${config.bem.elemSeparator}${token}`;
},
if ( !delimeter ) {
return selector;
} else if ( !selector ) {
token = delimeter;
rule = rules.default;
} else {
token = tokens.shift();
rule = rules[ delimeter ];
':'( token, config ) {
return `${config.bem.modifierSeparator}${token}`;
}
}
};
if ( typeof rule !== 'function' ) {
throw new SyntaxError( 'Malformed BEM rule' );
}
function convertToken( tokens, config, selector = '' ) {
const rules = config.rules;
const delimeter = tokens.shift();
let rule;
let token;
selector += rule( token, config, selector );
if ( !delimeter ) {
return selector;
} else if ( !selector ) {
token = delimeter;
rule = rules.default;
} else {
token = tokens.shift();
rule = rules[ delimeter ];
}
return convertToken( tokens, config, selector );
if ( typeof rule !== 'function' ) {
throw new SyntaxError( 'Malformed BEM rule' );
}
function convert( selector, config ) {
const rules = Object.keys( config.rules ).filter( ( rule ) => {
return rule !== 'default';
} );
const splitRule = new RegExp( `(${rules.join( '|' )})`, 'g' );
const splittedSelector = selector.split( splitRule );
selector += rule( token, config, selector );
selector = convertToken( splittedSelector, config );
return convertToken( tokens, config, selector );
}
return selector;
}
function convert( selector, config ) {
const rules = Object.keys( config.rules ).filter( ( rule ) => {
return rule !== 'default';
} );
const splitRule = new RegExp( `(${rules.join( '|' )})`, 'g' );
const splittedSelector = selector.split( splitRule );
/** Converter's class*/
class Converter {
/**
* Create converter's instance.
*
* @param {Object} [config=defaultConfig] converter's configuration options.
* @class
*/
constructor( config = defaultConfig ) {
/**
* Converter's configuration
*
* @property {Object}
*/
this.config = config;
}
selector = convertToken( splittedSelector, config );
/**
* Converts given selector to CSS.
*
* @param {String} selector BEM selector to be converted.
* @return {Selector} Converted selector.
*/
convert( selector ) {
const convertedSelector = convert( selector, this.config );
return selector;
}
return new Selector( selector, convertedSelector );
}
/** Converter's class*/
class Converter {
/**
* Create converter's instance.
*
* @param {Object} [config=defaultConfig] converter's configuration options.
* @class
*/
constructor( config = defaultConfig ) {
/**
* Get state from given `[class]` attribute contents.
* Converter's configuration
*
* @param {String} className HTML `[class]` attribute.
* @return {String|null} Fetched state.
* @property {Object}
*/
getStateFromClass( className ) {
if ( typeof className !== 'string' ) {
throw new TypeError( 'Class must be a string.' );
}
this.config = config;
}
const bemConfig = this.config.bem;
const regex = new RegExp( `[^${bemConfig.elemSeparator}${bemConfig.modifierSeparator}]+${bemConfig.modifierSeparator}([^${bemConfig.elemSeparator}${bemConfig.modifierSeparator}]+)$` );
const match = className.match( regex );
/**
* Converts given selector to CSS.
*
* @param {String} selector BEM selector to be converted.
* @return {Selector} Converted selector.
*/
convert( selector ) {
const convertedSelector = convert( selector, this.config );
return match ? match[ 1 ] : null;
}
return new Selector( selector, convertedSelector );
}
/**
* BEM selector converter factory.
* Get state from given `[class]` attribute contents.
*
* @param {Object} [converterConfig=defaultConverterConfig] Configuration object that
* should be passed to the Converter constructor.
* @return {Converter} Converter's instance.
* @param {String} className HTML `[class]` attribute.
* @return {String|null} Fetched state.
*/
function factory( converterConfig = defaultConfig ) {
const converter = new Converter( converterConfig );
getStateFromClass( className ) {
if ( typeof className !== 'string' ) {
throw new TypeError( 'Class must be a string.' );
}
return converter;
const bemConfig = this.config.bem;
const regex = new RegExp( `[^${bemConfig.elemSeparator}${bemConfig.modifierSeparator}]+${bemConfig.modifierSeparator}([^${bemConfig.elemSeparator}${bemConfig.modifierSeparator}]+)$` );
const match = className.match( regex );
return match ? match[ 1 ] : null;
}
}
exports.Converter = Converter;
exports.Selector = Selector;
exports['default'] = factory;
/**
* BEM selector converter factory.
*
* @param {Object} [converterConfig=defaultConverterConfig] Configuration object that
* should be passed to the Converter constructor.
* @return {Converter} Converter's instance.
*/
function factory( converterConfig = defaultConfig ) {
const converter = new Converter( converterConfig );
Object.defineProperty(exports, '__esModule', { value: true });
return converter;
}
}));
exports.Converter = Converter;
exports.Selector = Selector;
exports['default'] = factory;
Object.defineProperty(exports, '__esModule', { value: true });
})));
//# sourceMappingURL=bemquery-selector-converter.umd.js.map
{
"name": "bemquery-selector-converter",
"version": "0.1.4",
"version": "0.1.5",
"description": "Simple module for converting BEM selectors.",

@@ -11,10 +11,27 @@ "main": "dist/bemquery-selector-converter.umd.js",

"test": "karma start config/karma/default.js",
"precommit": "npm test",
"commitmsg": "commitplease .git/COMMIT_EDITMSG",
"prebuild": "npm test",
"build": "rollup -c config/rollup/umd.js && rollup -c config/rollup/es6.js && rollup -c config/rollup/es5.js",
"build-docs": "jsdoc -c config/jsdoc/default.json ./src",
"publish-docs": "npm run build-docs && git checkout gh-pages && ncp docs/dist ./ && git add -A && git commit -m \"[ci skip] Updated docs.\" && git push origin gh-pages && git checkout master",
"preversion": "npm test",
"postversion": "git push origin && git push origin --tags",
"publish-docs": "npm run build-docs && git checkout gh-pages && ncp docs/dist ./ && git add -A && git commit -m \"docs(gh-pages): update docs [ci skip]\" && git push origin gh-pages && git checkout master",
"preversion": "npm run build && git add -f dist/",
"postversion": "git rm -r --cached dist/ && git commit -m \"chore(dist): clean after release [ci skip]\" && git push origin && git push origin --tags",
"prepublish": "in-publish && npm run build || exit 0"
},
"commitplease": {
"nohook": true,
"style": "angular",
"types": [
"feat",
"fix",
"docs",
"style",
"refactor",
"perf",
"test",
"chore"
],
"scope": "\\S+.*"
},
"repository": {

@@ -46,9 +63,12 @@ "type": "git",

"chai": "^3.5.0",
"commitplease": "^2.7.2",
"cz-conventional-changelog": "^1.2.0",
"docdash": "^0.4.0",
"eslint": "^3.0.1",
"husky": "^0.11.7",
"in-publish": "^2.0.0",
"ink-docstrap": "^1.2.1",
"is-travis": "^1.0.0",
"jsdoc": "^3.4.0",
"karma": "^1.0.0",
"karma-chrome-launcher": "^1.0.1",
"karma-chrome-launcher": "^2.0.0",
"karma-coverage": "^1.0.0",

@@ -65,5 +85,5 @@ "karma-firefox-launcher": "^1.0.0",

"ncp": "^2.0.0",
"rollup": "^0.34.0",
"rollup": "^0.35.10",
"rollup-plugin-babel": "^2.6.1",
"rollup-plugin-commonjs": "^3.0.0",
"rollup-plugin-commonjs": "^5.0.0",
"rollup-plugin-mockr": "^1.0.1",

@@ -75,3 +95,8 @@ "rollup-plugin-node-resolve": "^2.0.0",

"uglify-js": "^2.6.2"
},
"config": {
"commitizen": {
"path": "./node_modules/cz-conventional-changelog"
}
}
}
# bemquery-selector-converter
[![Build Status](https://travis-ci.org/BEMQuery/bemquery-selector-converter.svg?branch=master)](https://travis-ci.org/BEMQuery/bemquery-selector-converter) [![Dependency Status](https://david-dm.org/BEMQuery/bemquery-selector-converter.svg)](https://david-dm.org/BEMQuery/bemquery-selector-converter) [![devDependency Status](https://david-dm.org/BEMQuery/bemquery-selector-converter/dev-status.svg)](https://david-dm.org/BEMQuery/bemquery-selector-converter#info=devDependencies)
[![Build Status](https://travis-ci.org/BEMQuery/bemquery-selector-converter.svg?branch=master)](https://travis-ci.org/BEMQuery/bemquery-selector-converter) · [![Dependency Status](https://david-dm.org/BEMQuery/bemquery-selector-converter.svg)](https://david-dm.org/BEMQuery/bemquery-selector-converter) · [![devDependency Status](https://david-dm.org/BEMQuery/bemquery-selector-converter/dev-status.svg)](https://david-dm.org/BEMQuery/bemquery-selector-converter#info=devDependencies) · [![Known Vulnerabilities](https://snyk.io/test/github/bemquery/bemquery-selector-converter/badge.svg)](https://snyk.io/test/github/bemquery/bemquery-selector-converter) ·[![Package quality](http://packagequality.com/badge/bemquery-selector-converter.png)](http://packagequality.com/#?package=bemquery-selector-converter) · [![npm version](https://badge.fury.io/js/bemquery-selector-converter.svg)](https://badge.fury.io/js/bemquery-selector-converter) · [![Bower version](https://badge.fury.io/bo/bemquery-selector-converter.svg)](https://badge.fury.io/bo/bemquery-selector-converter)

@@ -11,2 +11,3 @@ Simple module for converting BEM selectors.

You can install this package from npm:
```bash

@@ -16,4 +17,9 @@ npm install bemquery-selector-converter [--save]

You can also install it from bower:
```bash
bower install bemquery-selector-converter
```
## Documentation
Docs are available at http://bemquery.github.io/bemquery-selector-converter

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet