19
19
20
20
This tool allows getting information about BEM entity using [ string] ( #string-representation ) as well as forming string representation based on [ BEM-naming] ( #bem-naming ) .
21
21
22
+ Install
23
+ -------
24
+
25
+ ```
26
+ $ npm install --save bem-naming
27
+ ```
28
+
29
+ Usage
30
+ -----
31
+
32
+ ``` js
33
+ var bemNaming = require (' bem-naming' );
34
+
35
+ bemNaming .parse (' button__text' ); // { block: 'button', elem: 'text' }
36
+
37
+ bemNaming .stringify ({ block: ' button' , modName: ' checked' }); // button_checked
38
+ ```
39
+
40
+ Table of Contents
41
+ -----------------
42
+
43
+ * [ String representation] ( #string-representation )
44
+ * [ Common misconceptions] ( #common-misconceptions )
45
+ * [ BEM-naming] ( #bem-naming-1 )
46
+ * [ API] ( #api )
47
+ * [ Custom naming convention] ( #custom-naming-convention )
48
+ * [ Convention by Harry Roberts] ( #convention-by-harry-roberts )
49
+
22
50
String representation
23
51
---------------------
24
52
To define BEM entities we often use a special string format that allows us 100% define what entity exactly is represented.
@@ -111,24 +139,24 @@ Example:
111
139
API
112
140
---
113
141
114
- * [ ` validate(str) ` ] ( #validatestr )
115
- * [ ` parse(str) ` ] ( #parsestr )
116
- * [ ` stringify(obj) ` ] ( #stringifyobj )
117
- * [ ` typeOf(str) ` ] ( #typeofstr )
118
- * [ ` typeOf(obj) ` ] ( #typeofobj )
119
- * [ ` isBlock(str) ` ] ( #isblockstr )
120
- * [ ` isBlock(obj) ` ] ( #isblockobj )
121
- * [ ` isBlockMod(str) ` ] ( #isblockmodstr )
122
- * [ ` isBlockMod(obj) ` ] ( #isblockmodobj )
123
- * [ ` isElem(str) ` ] ( #iselemstr )
124
- * [ ` isElem(obj) ` ] ( #iselemobj )
125
- * [ ` isElemMod(str) ` ] ( #iselemmodstr )
126
- * [ ` isElemMod(obj) ` ] ( #iselemmodobj )
127
- * [ ` elemDelim ` ] ( #elemdelim )
128
- * [ ` modDelim ` ] ( #moddelim )
129
- * [ ` modValDelim ` ] ( #modvaldelim )
130
-
131
- ### ` validate(str) `
142
+ * [ validate(str)] ( #validatestr )
143
+ * [ parse(str)] ( #parsestr )
144
+ * [ stringify(obj)] ( #stringifyobj )
145
+ * [ typeOf(str)] ( #typeofstr )
146
+ * [ typeOf(obj)] ( #typeofobj )
147
+ * [ isBlock(str)] ( #isblockstr )
148
+ * [ isBlock(obj)] ( #isblockobj )
149
+ * [ isBlockMod(str)] ( #isblockmodstr )
150
+ * [ isBlockMod(obj)] ( #isblockmodobj )
151
+ * [ isElem(str)] ( #iselemstr )
152
+ * [ isElem(obj)] ( #iselemobj )
153
+ * [ isElemMod(str)] ( #iselemmodstr )
154
+ * [ isElemMod(obj)] ( #iselemmodobj )
155
+ * [ elemDelim] ( #elemdelim )
156
+ * [ modDelim] ( #moddelim )
157
+ * [ modValDelim] ( #modvaldelim )
158
+
159
+ ### validate(str)
132
160
133
161
Checks a string to be valid BEM notation.
134
162
@@ -139,9 +167,7 @@ bemNaming.validate('block-name'); // true
139
167
bemNaming .validate (' ^*^' ); // false
140
168
```
141
169
142
- -------------------------------------------------------------------------------
143
-
144
- ### ` parse(str) `
170
+ ### parse(str)
145
171
146
172
It parses string ` str ` into BEM-naming.
147
173
@@ -152,9 +178,7 @@ bemNaming.parse('block__elem_mod_val'); // { block: 'block', elem: 'elem',
152
178
// modName: 'mod', modVal: 'val' }
153
179
```
154
180
155
- -------------------------------------------------------------------------------
156
-
157
- ### ` stringify(obj) `
181
+ ### stringify(obj)
158
182
159
183
It forms a string according to BEM-naming ` obj ` .
160
184
@@ -167,8 +191,6 @@ bemNaming.stringify({
167
191
}); // 'block__elem_mod_val'
168
192
```
169
193
170
- -------------------------------------------------------------------------------
171
-
172
194
### ` typeOf(str) `
173
195
174
196
Returns a string indicating the type of the BEM entity.
@@ -182,9 +204,7 @@ bemNaming.typeOf('block__elem'); // elem
182
204
bemNaming .typeOf (' block__elem_mod' ); // elemMod
183
205
```
184
206
185
- -------------------------------------------------------------------------------
186
-
187
- ### ` typeOf(obj) `
207
+ ### typeOf(obj)
188
208
189
209
Returns a string indicating the type of the BEM entity.
190
210
@@ -197,9 +217,7 @@ bemNaming.typeOf({ block: 'block', elem: 'elem' }); // elem
197
217
bemNaming .typeOf ({ block: ' block' , elem: ' elem' , modName: ' mod' }); // elemMod
198
218
```
199
219
200
- -------------------------------------------------------------------------------
201
-
202
- ### ` isBlock(str) `
220
+ ### isBlock(str)
203
221
204
222
Checks whether string ` str ` is a block.
205
223
@@ -210,9 +228,7 @@ bemNaming.isBlock('block-name'); // true
210
228
bemNaming .isBlock (' block__elem' ); // false
211
229
```
212
230
213
- -------------------------------------------------------------------------------
214
-
215
- ### ` isBlock(obj) `
231
+ ### isBlock(obj)
216
232
217
233
Checks whether BEM-naming ` obj ` is a block.
218
234
@@ -223,9 +239,7 @@ bemNaming.isBlock({ block: 'block-name' }); // true
223
239
bemNaming .isBlock ({ block: ' block' , elem: ' elem' }); // false
224
240
```
225
241
226
- -------------------------------------------------------------------------------
227
-
228
- ### ` isBlockMod(str) `
242
+ ### isBlockMod(str)
229
243
230
244
Checks whether string ` str ` is modifier of a block.
231
245
@@ -236,9 +250,7 @@ bemNaming.isBlockMod('block_mod'); // true
236
250
bemNaming .isBlockMod (' block__elem_mod' ); // false
237
251
```
238
252
239
- -------------------------------------------------------------------------------
240
-
241
- ### ` isBlockMod(obj) `
253
+ ### isBlockMod(obj)
242
254
243
255
Checks whether BEM-naming ` obj ` is modifier of a block.
244
256
@@ -252,9 +264,7 @@ bemNaming.isBlockMod({ block: 'block', elem: 'elem',
252
264
modName: ' mod' , modVal: true }); // false
253
265
```
254
266
255
- -------------------------------------------------------------------------------
256
-
257
- ### ` isElem(str) `
267
+ ### isElem(str)
258
268
259
269
Checks whether string ` str ` is element of a block.
260
270
@@ -265,9 +275,7 @@ bemNaming.isElem('block__elem'); // true
265
275
bemNaming .isElem (' block-name' ); // false
266
276
```
267
277
268
- -------------------------------------------------------------------------------
269
-
270
- ### ` isElem(obj) `
278
+ ### isElem(obj)
271
279
272
280
Checks whether BEM-naming ` obj ` is element of a block.
273
281
@@ -278,9 +286,7 @@ bemNaming.isElem({ block: 'block', elem: 'elem' }); // true
278
286
bemNaming .isElem ({ block: ' block-name' }); // false
279
287
```
280
288
281
- -------------------------------------------------------------------------------
282
-
283
- ### ` isElemMod(str) `
289
+ ### isElemMod(str)
284
290
285
291
Checks whether string ` str ` is modifier of an element.
286
292
@@ -291,9 +297,7 @@ bemNaming.isElemMod('block__elem_mod'); // true
291
297
bemNaming .isElemMod (' block__elem' ); // false
292
298
```
293
299
294
- -------------------------------------------------------------------------------
295
-
296
- ### ` isElemMod(obj) `
300
+ ### isElemMod(obj)
297
301
298
302
Checks whether BEM-naming ` obj ` is modifier of an element.
299
303
@@ -307,21 +311,15 @@ bemNaming.isElemMod({ block: 'block',
307
311
modName: ' mod' , modVal: true }); // false
308
312
```
309
313
310
- -------------------------------------------------------------------------------
311
-
312
- ### ` elemDelim `
314
+ ### elemDelim
313
315
314
316
String to separate elem from block.
315
317
316
- -------------------------------------------------------------------------------
317
-
318
- ### ` modDelim `
318
+ ### modDelim
319
319
320
320
String to separate modifiers from blocks and elements.
321
321
322
- -------------------------------------------------------------------------------
323
-
324
- ### ` modValDelim `
322
+ ### modValDelim
325
323
326
324
String to separate value of modifier from name of modifier.
327
325
@@ -330,22 +328,6 @@ Custom naming convention
330
328
331
329
Use ` bemNaming ` function to create instance to manage naming of your own naming convention.
332
330
333
- Function ` bemNaming ` gets the object from the following options:
334
-
335
- * ** String** ` elem ` — separates element's name from block. Default as ` __ ` .
336
- * ** String|Object** ` mod ` — separates modifiers from blocks and elements. Default as ` _ ` .
337
-
338
- This option can get object:
339
-
340
- ``` js
341
- { name: String , val: String }
342
- ```
343
-
344
- * ** String** ` name ` — separates name of modifier from blocks and elements. Default as ` _ ` .
345
- * ** String** ` val ` — separates value of modifier from name of modifier. Default as the value of the ` name ` .
346
-
347
- * ** String** ` wordPattern ` — defines which symbols can be used for block, element and modifier's names. Default as ` [a-z0-9]+(?:-[a-z0-9]+)* ` .
348
-
349
331
Example:
350
332
351
333
``` js
@@ -366,6 +348,42 @@ myNaming.stringify({ // 'blockName-elemName--boolElemMod'
366
348
});
367
349
```
368
350
351
+ ### bemNaming({ elem, mod, wordPattern })
352
+
353
+ #### elem
354
+
355
+ Type: ` String `
356
+
357
+ Default: ` __ `
358
+
359
+ Separates element's name from block
360
+
361
+ #### mod
362
+
363
+ Type: ` String ` , ` { name: String, val: String } `
364
+
365
+ Default: ` _ `
366
+
367
+ Separates modifiers from blocks and elements.
368
+
369
+ This option can take object with following fields:
370
+
371
+ * ` name ` — separates name of modifier from blocks and elements.
372
+
373
+ Default as ` _ ` .
374
+
375
+ * ` val ` — separates value of modifier from name of modifier.
376
+
377
+ Default as the value of the ` name ` .
378
+
379
+ #### wordPattern
380
+
381
+ Type: ` String `
382
+
383
+ Default: ` [a-z0-9]+(?:-[a-z0-9]+)* `
384
+
385
+ Defines which symbols can be used for block, element and modifier's names.
386
+
369
387
Convention by Harry Roberts
370
388
---------------------------
371
389
0 commit comments