Skip to content
This repository was archived by the owner on Feb 4, 2018. It is now read-only.

Commit 2690db2

Browse files
authored
Merge pull request #58 from bem-sdk/issue-53
fix(mod): should return `undefined` if entity is not modifier
2 parents 4f8a748 + f0297e8 commit 2690db2

File tree

3 files changed

+20
-14
lines changed

3 files changed

+20
-14
lines changed

README.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ const entityName = new BemEntityName({ block: 'button', elem: 'text' });
3737

3838
entityName.block; // button
3939
entityName.elem; // text
40-
entityName.mod; // {}
40+
entityName.mod; // undefined
4141

4242
entityName.id; // button__elem
4343
entityName.type; // elem
@@ -143,13 +143,16 @@ name.elem; // text
143143

144144
The modifier of this entity.
145145

146-
If entity is not modifier then returns empty object.
146+
**Important:** If entity is not a modifier then returns `undefined`.
147147

148148
```js
149149
const BemEntityName = require('bem-entity-name');
150-
const name = new BemEntityName({ block: 'button', mod: 'disabled' });
151150

152-
name.mod; // { name: 'disabled', val: true }
151+
const blockName = new BemEntityName({ block: 'button' });
152+
const modName = new BemEntityName({ block: 'button', mod: 'disabled' });
153+
154+
modName.mod; // { name: 'disabled', val: true }
155+
blockName.mod; // undefined
153156
```
154157

155158
### id

index.js

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -76,17 +76,20 @@ module.exports = class BemEntityName {
7676
/**
7777
* Returns the modifier of this entity.
7878
*
79-
* If entity is not modifier then returns empty object.
79+
* Important: If entity is not a modifier then returns `undefined`.
8080
*
8181
* @example
8282
* const BemEntityName = require('bem-entity-name');
83-
* const name = new BemEntityName({ block: 'button', mod: 'disabled' });
8483
*
85-
* console.log(name.mod); // { name: 'disabled', val: true }
84+
* const blockName = new BemEntityName({ block: 'button' });
85+
* const modName = new BemEntityName({ block: 'button', mod: 'disabled' });
86+
*
87+
* console.log(modName.mod); // { name: 'disabled', val: true }
88+
* console.log(blockName.mod); // undefined
8689
*
8790
* @returns {{mod: string, val: *}} entity modifier.
8891
*/
89-
get mod() { return this._data.mod || {}; }
92+
get mod() { return this._data.mod; }
9093
/**
9194
* Returns the modifier name of this entity.
9295
*
@@ -95,7 +98,7 @@ module.exports = class BemEntityName {
9598
* @returns {string} entity modifier name.
9699
* @deprecated use `mod.name` instead.
97100
*/
98-
get modName() { return this.mod.name; }
101+
get modName() { return this.mod && this.mod.name; }
99102
/**
100103
* Returns the modifier value of this entity.
101104
*
@@ -104,7 +107,7 @@ module.exports = class BemEntityName {
104107
* @returns {string} entity modifier name.
105108
* @deprecated use `mod.val` instead.
106109
*/
107-
get modVal() { return this.mod.val; }
110+
get modVal() { return this.mod && this.mod.val; }
108111
/**
109112
* Returns id for this entity.
110113
*
@@ -127,8 +130,8 @@ module.exports = class BemEntityName {
127130
const entity = { block: this._data.block };
128131

129132
this.elem && (entity.elem = this.elem);
130-
this.mod.name && (entity.modName = this.mod.name);
131-
this.mod.val && (entity.modVal = this.mod.val);
133+
this.modName && (entity.modName = this.modName);
134+
this.modVal && (entity.modVal = this.modVal);
132135

133136
this._id = stringifyEntity(entity);
134137

test/fields.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@ test('should return `undefined` if entity is not element', t => {
3838
t.is(entity.elem, undefined);
3939
});
4040

41-
test('should return empty object if entity is not modifier', t => {
41+
test('should return `undefined` if entity is not modifier', t => {
4242
const entity = new BemEntityName({ block: 'block' });
4343

44-
t.deepEqual(entity.mod, {});
44+
t.deepEqual(entity.mod, undefined);
4545
});
4646

4747
test('should return `undefined` in `modName` property if entity is not modifier', t => {

0 commit comments

Comments
 (0)