From 424bd90e653450a548403249c80984676f99134f Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Mon, 18 Jul 2016 13:15:36 +0300
Subject: [PATCH 01/38] first commit
---
README.md | 262 ++++++++++++++++++++++++++++++++++++++++++++----------
1 file changed, 216 insertions(+), 46 deletions(-)
diff --git a/README.md b/README.md
index de26329..e1bb5df 100644
--- a/README.md
+++ b/README.md
@@ -1,69 +1,239 @@
-bem-walk
-========
+# bem-walk
-[![NPM Status][npm-img]][npm]
-[![Travis Status][test-img]][travis]
-[![Windows Status][appveyor-img]][appveyor]
-[![Coverage Status][coverage-img]][coveralls]
-[![Dependency Status][david-img]][david]
+## Что это?
-[npm]: https://www.npmjs.org/package/bem-walk
-[npm-img]: https://img.shields.io/npm/v/bem-walk.svg
+Инструмент обходит файловую структуру БЭМ-проекта и возвращает информацию о найденных файлах.
-[travis]: https://travis-ci.org/bem-sdk/bem-walk
-[test-img]: https://img.shields.io/travis/bem-sdk/bem-walk.svg?label=tests
+## Требования к установке
-[appveyor]: https://ci.appveyor.com/project/blond/bem-walk
-[appveyor-img]: http://img.shields.io/appveyor/ci/blond/bem-walk.svg?style=flat&label=windows
+Node.js 4.0+
-[coveralls]: https://coveralls.io/r/bem-sdk/bem-walk
-[coverage-img]: https://img.shields.io/coveralls/bem-sdk/bem-walk.svg
+## Установка
-[david]: https://david-dm.org/bem-sdk/bem-walk
-[david-img]: http://img.shields.io/david/bem-sdk/bem-walk.svg?style=flat
+```
+$ npm install --save bem-walk
+```
+
+## Быстрый старт
+
+```js
+var walk = require('bem-walk'),
+ config = {
+ // уровни проекта
+ levels: {
+ 'lib/bem-core/common.blocks': { naming: 'origin' },
+ 'common.blocks': { naming: 'origin' }
+ }
+ },
+ files = [];
+
+var stream = walk([
+ 'libs/bem-core/common.blocks',
+ 'common.blocks'
+], config);
+
+stream.on('data', function(file) {
+ files.push(file);
+});
+
+stream.on('error', function(err) {
+ console.log(err);
+});
+
+stream.on('end', function() {
+ console.log(files);
+});
+```
+
+## Начало работы
+
+Прежде чем использовать `bem-walk`, необходимо описать уровни файловой системы в объекте `config`:
+
+```js
+ var config = {
+ // cписок уровней
+ levels: {
+ 'lib/bem-core/common.blocks': { naming: 'origin' },
+ 'common.blocks': { scheme: 'nested' }
+ }
+ };
+```
+* `naming` — схема именования файлов.
+* `scheme` — схема файловой структуры.
+
+Подробнее:
+* [bem-naming](https://ru.bem.info/toolbox/sdk/bem-naming/);
+* [bem-fs-scheme](https://ru.bem.info/toolbox/sdk/bem-fs-scheme/).
+
+## API
+
+### walk()
+
+#### Описание
+
+`walk(levels, config);`
+
+#### Входные параметры
+
+**levels**
+
+Тип: string[]
+
+Описание: пути для обхода (абсолютные или относительные).
+
+```js
+[
+ 'lib/bem-core/common.blocks', // относительно корня сайта
+ '//vash-site.com/lib/bem-core/common.blocks' // абсолютный путь
+]
+```
+
+**config**
+
+Тип: object
+
+Описание: уровни проекта.
+
+
+**Важно!** В случае, если ранее уровни проекта были описаны в `bem-config`, можно воспользоваться методом `levelMapSync()`, который возвращает аналогичный объект.
+
+```js
+var config = require('bem-config')();
+var levelMap = config.levelMapSync();
+console.log(levelMap);
+```
+
+#### Возвращает
-Install
--------
+Поток с возможностью чтения (`stream.Readable`), который имеет следующие события:
+##### Событие: 'data'
+
+`function (file) { }`
+
+Передаёт обработчику JavaScript-объект, содержащий информацию о найденном файле:
+
+В JSON-интерфейсе:
+
+```js
+{
+ entity: { block: "page" },
+ level: "libs/bem-core/desktop.blocks",
+ tech: "bemhtml",
+ path: "libs/bem-core/desktop.blocks/page/page.bemhtml.js"
+}
+```
+
+* `entity` — БЭМ-сущность;
+* `level` — путь к уровню;
+* `tech` — технология реализации;
+* `path` — относительный путь к файлу;
+
+##### Событие: 'end'
+
+`function () { }`
+
+Генерируется когда `bem-walk` заканчивает обход всех уровней, описанных в объекте `levels`.
+
+##### Событие: 'error'
+
+`function (err) { }`
+
+Генерируется если при обходе уровней произошла ошибка.
+
+#### Примеры использования
+
+##### Группировка
+
+```js
+var walk = require('bem-walk'),
+ config = {
+ // уровни проекта
+ levels: {
+ 'lib/bem-core/common.blocks': { naming: 'origin' },
+ 'common.blocks': { naming: 'origin' }
+ }
+ },
+ groups = {};
+
+var stream = walk([
+ 'libs/bem-core/common.blocks',
+ 'common.blocks'
+], config);
+
+stream.on('data', function(file) {
+ (groups[file.entity.block] = []).push(file);
+});
+
+stream.on('error', function(err) {
+ console.log(err);
+});
+
+stream.on('end', function() {
+ console.log(groups);
+});
```
-$ npm install --save-dev bem-walk
+##### Фильтрация
+
+```js
+var walk = require('bem-walk'),
+ config = {
+ // уровни проекта
+ levels: {
+ 'lib/bem-core/common.blocks': { naming: 'origin' },
+ 'common.blocks': { naming: 'origin' }
+ }
+ },
+ files = [];
+
+var stream = walk([
+ 'libs/bem-core/common.blocks',
+ 'common.blocks'
+], config);
+
+stream.on('data', function(file) {
+ if (file.entity.block !== 'button') {
+ files.push(file);
+ }
+});
+
+stream.on('error', function(err) {
+ console.log(err);
+});
+
+stream.on('end', function() {
+ console.log(files);
+});
```
-Usage
------
+##### Трансформация
```js
var walk = require('bem-walk'),
stringify = require('JSONStream').stringify,
+ through2 = require('through2'),
+ fs = require('fs'),
config = {
+ // уровни проекта
levels: {
- 'lib/bem-core/common.blocks': { scheme: 'nested' },
- 'lib/bem-core/desktop.blocks': { scheme: 'nested' },
- 'common.blocks': { scheme: 'flat' },
- 'desktop.blocks': { scheme: 'flat' }
+ 'lib/bem-core/common.blocks': { naming: 'origin' },
+ 'common.blocks': { naming: 'origin' }
}
- };
+ },
+ files = [];
-walk([
+var stream = walk([
'libs/bem-core/common.blocks',
- 'libs/bem-core/desktop.blocks',
- 'common.blocks',
- 'desktop.blocks'
-], config)
- .pipe(stringify())
- .pipe(process.stdout);
+ 'common.blocks'
+], config);
-// [{
-// entity: { block: "page" },
-// level: "libs/bem-core/desktop.blocks",
-// tech: "bemhtml.js",
-// path: "libs/bem-core/desktop.blocks/page/page.bemhtml.js"
-// },
-// ...
-// ]
-```
-License
--------
+stream.pipe(through2.obj(function (file, enc, callback) {
+ file.source = fs.readFileSync(file.path).toString('utf-8');
+ this.push(file);
-Code and documentation copyright 2014 YANDEX LLC. Code released under the [Mozilla Public License 2.0](LICENSE.txt).
+ callback();
+}))
+ .pipe(stringify())
+ .pipe(process.stdout);
+```
From 6ceab8025fc8a536fccb9af4e76b59985880bbb0 Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Mon, 18 Jul 2016 13:23:17 +0300
Subject: [PATCH 02/38] fixes
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index e1bb5df..89f7f63 100644
--- a/README.md
+++ b/README.md
@@ -133,13 +133,13 @@ console.log(levelMap);
`function () { }`
-Генерируется когда `bem-walk` заканчивает обход всех уровней, описанных в объекте `levels`.
+Генерируется, когда `bem-walk` заканчивает обход всех уровней, описанных в объекте `levels`.
##### Событие: 'error'
`function (err) { }`
-Генерируется если при обходе уровней произошла ошибка.
+Генерируется, если при обходе уровней произошла ошибка.
#### Примеры использования
From 28b2cffc80ad66c06265cab0b5f4b64deb489145 Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Mon, 18 Jul 2016 13:54:40 +0300
Subject: [PATCH 03/38] deleted function (...){..}
---
README.md | 6 ------
1 file changed, 6 deletions(-)
diff --git a/README.md b/README.md
index 89f7f63..5bdffe1 100644
--- a/README.md
+++ b/README.md
@@ -109,8 +109,6 @@ console.log(levelMap);
##### Событие: 'data'
-`function (file) { }`
-
Передаёт обработчику JavaScript-объект, содержащий информацию о найденном файле:
В JSON-интерфейсе:
@@ -131,14 +129,10 @@ console.log(levelMap);
##### Событие: 'end'
-`function () { }`
-
Генерируется, когда `bem-walk` заканчивает обход всех уровней, описанных в объекте `levels`.
##### Событие: 'error'
-`function (err) { }`
-
Генерируется, если при обходе уровней произошла ошибка.
#### Примеры использования
From 06911ffef95213fe4f85f0be216bd230a164cbc5 Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Tue, 19 Jul 2016 11:00:20 +0300
Subject: [PATCH 04/38] made the changes
---
README.md => README.ru.md | 85 +++++++++++++++++----------------------
1 file changed, 36 insertions(+), 49 deletions(-)
rename README.md => README.ru.md (73%)
diff --git a/README.md b/README.ru.md
similarity index 73%
rename from README.md
rename to README.ru.md
index 5bdffe1..b99a84d 100644
--- a/README.md
+++ b/README.ru.md
@@ -2,47 +2,51 @@
## Что это?
-Инструмент обходит файловую структуру БЭМ-проекта и возвращает информацию о найденных файлах.
-
-## Требования к установке
-
-Node.js 4.0+
+Инструмент обходит файловую систему БЭМ-проекта и возвращает информацию о найденных файлах.
## Установка
```
$ npm install --save bem-walk
```
+Для работы требуется Node.js 4.0+.
## Быстрый старт
```js
-var walk = require('bem-walk'),
- config = {
- // уровни проекта
- levels: {
- 'lib/bem-core/common.blocks': { naming: 'origin' },
- 'common.blocks': { naming: 'origin' }
- }
- },
+var сonfig = require('bem-config')(),
+ walk = require('bem-walk'),
+ levelMap = сonfig.levelMapSync(),
files = [];
var stream = walk([
'libs/bem-core/common.blocks',
'common.blocks'
-], config);
+], levelMap);
-stream.on('data', function(file) {
- files.push(file);
-});
+stream.on('data', (file) => files.push(file));
-stream.on('error', function(err) {
- console.log(err);
-});
+stream.on('error', console.error);
-stream.on('end', function() {
- console.log(files);
-});
+stream.on('end', () => console.log(files));
+
+```
+
+Пример организации файловой структуры БЭМ-проекта:
+
+```files
+common.blocks/ # Уровень проекта
+libs/
+ bem-core/ # Уровень библиотеки `bem-core`
+ common.blocks/
+```
+
+**Важно!** Приведенный выше пример использует уровни проекта, описанные в `bem-config`.
+
+```js
+var config = require('bem-config')();
+var levelMap = config.levelMapSync();
+console.log(levelMap);
```
## Начало работы
@@ -79,11 +83,11 @@ stream.on('end', function() {
Тип: string[]
-Описание: пути для обхода (абсолютные или относительные).
+Описание: пути для обхода (относительные или абсолютные).
```js
[
- 'lib/bem-core/common.blocks', // относительно корня сайта
+ 'lib/bem-core/common.blocks', // путь относительно каталога, из которого запущен `bem-walk`.
'//vash-site.com/lib/bem-core/common.blocks' // абсолютный путь
]
```
@@ -94,15 +98,6 @@ stream.on('end', function() {
Описание: уровни проекта.
-
-**Важно!** В случае, если ранее уровни проекта были описаны в `bem-config`, можно воспользоваться методом `levelMapSync()`, который возвращает аналогичный объект.
-
-```js
-var config = require('bem-config')();
-var levelMap = config.levelMapSync();
-console.log(levelMap);
-```
-
#### Возвращает
Поток с возможностью чтения (`stream.Readable`), который имеет следующие события:
@@ -155,18 +150,13 @@ var stream = walk([
'common.blocks'
], config);
-stream.on('data', function(file) {
- (groups[file.entity.block] = []).push(file);
-});
+stream.on('data', (file) => (groups[file.entity.block] = []).push(file));
-stream.on('error', function(err) {
- console.log(err);
-});
+stream.on('error', console.error);
-stream.on('end', function() {
- console.log(groups);
-});
+stream.on('end', () => console.log(groups));
```
+
##### Фильтрация
```js
@@ -191,13 +181,10 @@ stream.on('data', function(file) {
}
});
-stream.on('error', function(err) {
- console.log(err);
-});
+stream.on('error', console.error);
+
+stream.on('end', () => console.log(files));
-stream.on('end', function() {
- console.log(files);
-});
```
##### Трансформация
From 6153411ce06a1e28b67423636e565e24157549c5 Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Tue, 19 Jul 2016 11:06:08 +0300
Subject: [PATCH 05/38] Changed the headers
---
README.ru.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/README.ru.md b/README.ru.md
index b99a84d..8fbb7d7 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -130,9 +130,9 @@ console.log(levelMap);
Генерируется, если при обходе уровней произошла ошибка.
-#### Примеры использования
+## Примеры использования
-##### Группировка
+### Группировка
```js
var walk = require('bem-walk'),
@@ -157,7 +157,7 @@ stream.on('error', console.error);
stream.on('end', () => console.log(groups));
```
-##### Фильтрация
+### Фильтрация
```js
var walk = require('bem-walk'),
@@ -187,7 +187,7 @@ stream.on('end', () => console.log(files));
```
-##### Трансформация
+### Трансформация
```js
var walk = require('bem-walk'),
From 763a577dc1acb6d7d57939c6e055051034cae210 Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Wed, 20 Jul 2016 17:00:10 +0300
Subject: [PATCH 06/38] changed info about URL
---
README.ru.md | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/README.ru.md b/README.ru.md
index 8fbb7d7..4ee6091 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -83,15 +83,22 @@ console.log(levelMap);
Тип: string[]
-Описание: пути для обхода (относительные или абсолютные).
+Описание: пути для обхода.
```js
[
- 'lib/bem-core/common.blocks', // путь относительно каталога, из которого запущен `bem-walk`.
- '//vash-site.com/lib/bem-core/common.blocks' // абсолютный путь
+ 'lib/bem-core/common.blocks',
+ 'common.blocks'
]
```
+Можно использовать абсолютный URL, например, так:
+```js
+[
+ '//www.cosmofarm.ru/lib/bem-core/common.blocks',
+ '//www.cosmofarm.ru/common.blocks'
+]
+```
**config**
Тип: object
From 33c45a4c7c68bdb89dd5bdcc9c7dd7e6e0e415c6 Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Wed, 27 Jul 2016 10:56:58 +0300
Subject: [PATCH 07/38] corrected usage
---
README.ru.md | 64 +++++++++++++++++++++++++++-------------------------
1 file changed, 33 insertions(+), 31 deletions(-)
diff --git a/README.ru.md b/README.ru.md
index 4ee6091..28588f7 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -13,26 +13,7 @@ $ npm install --save bem-walk
## Быстрый старт
-```js
-var сonfig = require('bem-config')(),
- walk = require('bem-walk'),
- levelMap = сonfig.levelMapSync(),
- files = [];
-
-var stream = walk([
- 'libs/bem-core/common.blocks',
- 'common.blocks'
-], levelMap);
-
-stream.on('data', (file) => files.push(file));
-
-stream.on('error', console.error);
-
-stream.on('end', () => console.log(files));
-
-```
-
-Пример организации файловой структуры БЭМ-проекта:
+Пример файловой системы БЭМ-проекта:
```files
common.blocks/ # Уровень проекта
@@ -41,16 +22,6 @@ libs/
common.blocks/
```
-**Важно!** Приведенный выше пример использует уровни проекта, описанные в `bem-config`.
-
-```js
-var config = require('bem-config')();
-var levelMap = config.levelMapSync();
-console.log(levelMap);
-```
-
-## Начало работы
-
Прежде чем использовать `bem-walk`, необходимо описать уровни файловой системы в объекте `config`:
```js
@@ -69,6 +40,37 @@ console.log(levelMap);
* [bem-naming](https://ru.bem.info/toolbox/sdk/bem-naming/);
* [bem-fs-scheme](https://ru.bem.info/toolbox/sdk/bem-fs-scheme/).
+```js
+var walk = require('bem-walk'),
+ config = {
+ // уровни проекта
+ levels: {
+ 'lib/bem-core/common.blocks': { naming: 'origin' },
+ 'common.blocks': { naming: 'origin' }
+ }
+ },
+ files = [];
+
+var stream = walk([
+ 'libs/bem-core/common.blocks',
+ 'common.blocks'
+], config);
+
+stream.on('data', file => files.push(file));
+
+stream.on('error', console.error);
+
+stream.on('end', () => console.log(files));
+```
+
+**Важно!** Описывать все уровни проекта вручную необязательно, можно воспользоваться пакетом [`bem-config`](https://ru.bem.info/toolbox/sdk/bem-config/).
+
+```js
+var config = require('bem-config')();
+var levelMap = config.levelMapSync();
+console.log(levelMap);
+```
+
## API
### walk()
@@ -157,7 +159,7 @@ var stream = walk([
'common.blocks'
], config);
-stream.on('data', (file) => (groups[file.entity.block] = []).push(file));
+stream.on('data', file => (groups[file.entity.block] = []).push(file));
stream.on('error', console.error);
From b6f74214a99cb8b2f6044249f4cb5ddd795985fe Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Wed, 27 Jul 2016 11:00:05 +0300
Subject: [PATCH 08/38] corrected example of transformation
---
README.ru.md | 25 ++++++++++++++-----------
1 file changed, 14 insertions(+), 11 deletions(-)
diff --git a/README.ru.md b/README.ru.md
index 28588f7..b1d814d 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -25,13 +25,13 @@ libs/
Прежде чем использовать `bem-walk`, необходимо описать уровни файловой системы в объекте `config`:
```js
- var config = {
- // cписок уровней
- levels: {
- 'lib/bem-core/common.blocks': { naming: 'origin' },
- 'common.blocks': { scheme: 'nested' }
- }
- };
+var config = {
+ // cписок уровней
+ levels: {
+ 'lib/bem-core/common.blocks': { naming: 'origin' },
+ 'common.blocks': { scheme: 'nested' }
+ }
+};
```
* `naming` — схема именования файлов.
* `scheme` — схема файловой структуры.
@@ -40,6 +40,7 @@ libs/
* [bem-naming](https://ru.bem.info/toolbox/sdk/bem-naming/);
* [bem-fs-scheme](https://ru.bem.info/toolbox/sdk/bem-fs-scheme/).
+
```js
var walk = require('bem-walk'),
config = {
@@ -87,18 +88,20 @@ console.log(levelMap);
Описание: пути для обхода.
+Путь относительно рабочего каталога:
+
```js
[
'lib/bem-core/common.blocks',
'common.blocks'
]
```
-Можно использовать абсолютный URL, например, так:
+Может быть указан абсолютный путь, например, так:
```js
[
- '//www.cosmofarm.ru/lib/bem-core/common.blocks',
- '//www.cosmofarm.ru/common.blocks'
+ '/path/to/project/lib/bem-core/common.blocks',
+ '/path/to/project/common.blocks'
]
```
**config**
@@ -217,8 +220,8 @@ var stream = walk([
'common.blocks'
], config);
-
stream.pipe(through2.obj(function (file, enc, callback) {
+ // Создание свойства source объекта file
file.source = fs.readFileSync(file.path).toString('utf-8');
this.push(file);
From 07f33cf623455ba9218580dc8e387f2266631d69 Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Thu, 28 Jul 2016 16:15:37 +0300
Subject: [PATCH 09/38] Made corrections
---
README.ru.md | 39 ++++++++++++++-------------------------
1 file changed, 14 insertions(+), 25 deletions(-)
diff --git a/README.ru.md b/README.ru.md
index b1d814d..f23e008 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -22,24 +22,7 @@ libs/
common.blocks/
```
-Прежде чем использовать `bem-walk`, необходимо описать уровни файловой системы в объекте `config`:
-
-```js
-var config = {
- // cписок уровней
- levels: {
- 'lib/bem-core/common.blocks': { naming: 'origin' },
- 'common.blocks': { scheme: 'nested' }
- }
-};
-```
-* `naming` — схема именования файлов.
-* `scheme` — схема файловой структуры.
-
-Подробнее:
-* [bem-naming](https://ru.bem.info/toolbox/sdk/bem-naming/);
-* [bem-fs-scheme](https://ru.bem.info/toolbox/sdk/bem-fs-scheme/).
-
+Прежде чем использовать `bem-walk`, необходимо описать уровни файловой системы в объекте `config`.
```js
var walk = require('bem-walk'),
@@ -64,7 +47,14 @@ stream.on('error', console.error);
stream.on('end', () => console.log(files));
```
-**Важно!** Описывать все уровни проекта вручную необязательно, можно воспользоваться пакетом [`bem-config`](https://ru.bem.info/toolbox/sdk/bem-config/).
+* `naming` — схема именования файлов;
+* `scheme` — схема файловой структуры.
+
+Подробнее:
+* [bem-naming](https://ru.bem.info/toolbox/sdk/bem-naming/);
+* [bem-fs-scheme](https://ru.bem.info/toolbox/sdk/bem-fs-scheme/).
+
+**Важно!** Также уровни проекта можно описать с помощью пакета [`bem-config`](https://ru.bem.info/toolbox/sdk/bem-config/).
```js
var config = require('bem-config')();
@@ -122,17 +112,17 @@ console.log(levelMap);
```js
{
- entity: { block: "page" },
- level: "libs/bem-core/desktop.blocks",
- tech: "bemhtml",
- path: "libs/bem-core/desktop.blocks/page/page.bemhtml.js"
+ "entity": { "block": "page" },
+ "level": "libs/bem-core/desktop.blocks",
+ "tech": "bemhtml",
+ "path": "libs/bem-core/desktop.blocks/page/page.bemhtml.js"
}
```
* `entity` — БЭМ-сущность;
* `level` — путь к уровню;
* `tech` — технология реализации;
-* `path` — относительный путь к файлу;
+* `path` — относительный путь к файлу.
##### Событие: 'end'
@@ -196,7 +186,6 @@ stream.on('data', function(file) {
stream.on('error', console.error);
stream.on('end', () => console.log(files));
-
```
### Трансформация
From 7a78fe8ce724229d9f4df54c06db06c71fa8d93a Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Wed, 10 Aug 2016 18:12:41 +0300
Subject: [PATCH 10/38] corrections from Yura - part 1
---
README.ru.md | 117 ++++++++++++++++++++++++++++++++++++---------------
1 file changed, 84 insertions(+), 33 deletions(-)
diff --git a/README.ru.md b/README.ru.md
index f23e008..961492f 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -1,28 +1,93 @@
# bem-walk
-## Что это?
+Инструмент, позволяющий обойти файловую систему БЭМ-проекта и получить информацию о найденных файлах.
-Инструмент обходит файловую систему БЭМ-проекта и возвращает информацию о найденных файлах.
+## Быстрый старт
-## Установка
+### Шаг 1. Установите bem-walk
```
$ npm install --save bem-walk
```
+
Для работы требуется Node.js 4.0+.
-## Быстрый старт
+### Шаг 2. Подключите bem-walk
+
+Прежде чем использовать `bem-walk`, необходимо создать JavaScript-файл и добавить строку следующего вида:
+
+```js
+var walk = require('bem-walk');
+```
+
+### Шаг 3. Опишите уровни файловой системы
+
+Опишите уровни файловой системы проекта в объекте `config`.
+
+```js
+var config = {
+ // уровни проекта
+ levels: {
+ 'lib/bem-core/common.blocks': { naming: 'origin' }, // `naming` — схема именования файлов
+ 'common.blocks': { sheme: 'nested' } // `scheme` — схема файловой структуры
+ }
+};
+```
+
+**Примечание** В примере скрипта указаны используемые схемы именования файлов и файловой структуры проекта.
+
+Подробнее:
+* [bem-naming](https://ru.bem.info/toolbox/sdk/bem-naming/);
+* [bem-fs-scheme](https://ru.bem.info/toolbox/sdk/bem-fs-scheme/).
+
+**Примечание** Уровни проекта также можно описать с помощью пакета [`bem-config`](https://ru.bem.info/toolbox/sdk/bem-config/).
+
+```js
+var config = require('bem-config')();
+var levelMap = config.levelMapSync();
+```
+
+### Шаг 4. Опишите пути для обхода
+
+Возможные варианты:
+
+* относительно корневого каталога
+
+ ```js
+ var levels = [
+ 'libs/bem-core/common.blocks',
+ 'common.blocks'
+ ];
+ ```
-Пример файловой системы БЭМ-проекта:
+* абсолютные
-```files
-common.blocks/ # Уровень проекта
-libs/
- bem-core/ # Уровень библиотеки `bem-core`
- common.blocks/
+ ```js
+ var levels = [
+ '/path/to/project/lib/bem-core/common.blocks',
+ '/path/to/project/common.blocks'
+ ];
+ ```
+
+### Шаг 5. Получите информацию о найденных файлах
+
+Передайте методу walk() объекты `levels` и `config`.
+
+```js
+var files = [];
+
+var stream = walk(levels, config);
+
+stream.on('data', file => files.push(file)); // добавляем информацию о найденном файле в конец массива files
+
+stream.on('error', console.error);
+
+stream.on('end', () => console.log(files));
```
-Прежде чем использовать `bem-walk`, необходимо описать уровни файловой системы в объекте `config`.
+### Результат
+
+Полный текст примера:
```js
var walk = require('bem-walk'),
@@ -33,12 +98,13 @@ var walk = require('bem-walk'),
'common.blocks': { naming: 'origin' }
}
},
+ levels = [
+ 'libs/bem-core/common.blocks',
+ 'common.blocks'
+ ],
files = [];
-var stream = walk([
- 'libs/bem-core/common.blocks',
- 'common.blocks'
-], config);
+var stream = walk(levels, config);
stream.on('data', file => files.push(file));
@@ -47,21 +113,6 @@ stream.on('error', console.error);
stream.on('end', () => console.log(files));
```
-* `naming` — схема именования файлов;
-* `scheme` — схема файловой структуры.
-
-Подробнее:
-* [bem-naming](https://ru.bem.info/toolbox/sdk/bem-naming/);
-* [bem-fs-scheme](https://ru.bem.info/toolbox/sdk/bem-fs-scheme/).
-
-**Важно!** Также уровни проекта можно описать с помощью пакета [`bem-config`](https://ru.bem.info/toolbox/sdk/bem-config/).
-
-```js
-var config = require('bem-config')();
-var levelMap = config.levelMapSync();
-console.log(levelMap);
-```
-
## API
### walk()
@@ -78,7 +129,7 @@ console.log(levelMap);
Описание: пути для обхода.
-Путь относительно рабочего каталога:
+Путь относительно корневого каталога:
```js
[
@@ -106,7 +157,7 @@ console.log(levelMap);
##### Событие: 'data'
-Передаёт обработчику JavaScript-объект, содержащий информацию о найденном файле:
+Передает обработчику JavaScript-объект, содержащий информацию о найденном файле:
В JSON-интерфейсе:
@@ -164,7 +215,7 @@ stream.on('end', () => console.log(groups));
```js
var walk = require('bem-walk'),
config = {
- // уровни проекта
+ // уровни проекта
levels: {
'lib/bem-core/common.blocks': { naming: 'origin' },
'common.blocks': { naming: 'origin' }
From 7456a1da3e1fb95251a704a0796f3ef53e999872 Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Mon, 15 Aug 2016 14:24:25 +0300
Subject: [PATCH 11/38] Part 2
---
README.ru.md | 57 ++++++++++++++++++++--------------------------------
1 file changed, 22 insertions(+), 35 deletions(-)
diff --git a/README.ru.md b/README.ru.md
index 961492f..8a2bbdf 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -1,6 +1,10 @@
# bem-walk
-Инструмент, позволяющий обойти файловую систему БЭМ-проекта и получить информацию о найденных файлах.
+Инструмент позволяет обойти файловую систему БЭМ-проекта и получить следующую информацию о найденных файлах:
+
+* тип БЭМ-сущности (Блок, Элемент, Модификатор);
+* технология реализации;
+* расположение на файловой системе.
## Быстрый старт
@@ -28,19 +32,23 @@ var walk = require('bem-walk');
var config = {
// уровни проекта
levels: {
- 'lib/bem-core/common.blocks': { naming: 'origin' }, // `naming` — схема именования файлов
- 'common.blocks': { sheme: 'nested' } // `scheme` — схема файловой структуры
+ 'lib/bem-core/common.blocks': { naming: 'two-dashes' }, // `naming` — схема именования файлов
+ 'common.blocks': { sheme: 'nested' } // `scheme` — схема файловой системы
}
};
```
-**Примечание** В примере скрипта указаны используемые схемы именования файлов и файловой структуры проекта.
+**Примечание** Для каждого описываемого уровня указывается используемая схема именования файлов или схема файловой системы. Это позволяет при обходе получать информацию о БЭМ-сущностях по их именам или по схеме организации файловой системы на данном уровне.
+
+Если при описании уровня схема не указана, используются:
+* схема именования файлов `origin`;
+* схема файловой системы `nested`.
Подробнее:
* [bem-naming](https://ru.bem.info/toolbox/sdk/bem-naming/);
* [bem-fs-scheme](https://ru.bem.info/toolbox/sdk/bem-fs-scheme/).
-**Примечание** Уровни проекта также можно описать с помощью пакета [`bem-config`](https://ru.bem.info/toolbox/sdk/bem-config/).
+**Примечание** Для того чтобы не определять уровни проекта вручную, воспользуйтесь инструментом [`bem-config`](https://ru.bem.info/toolbox/sdk/bem-config/).
```js
var config = require('bem-config')();
@@ -117,47 +125,26 @@ stream.on('end', () => console.log(files));
### walk()
+Обходит директории описанные в параметре `levels` и возвращает поток `stream.Readable`.
+
#### Описание
`walk(levels, config);`
#### Входные параметры
-**levels**
-
-Тип: string[]
-
-Описание: пути для обхода.
-
-Путь относительно корневого каталога:
-
-```js
-[
- 'lib/bem-core/common.blocks',
- 'common.blocks'
-]
-```
-Может быть указан абсолютный путь, например, так:
-
-```js
-[
- '/path/to/project/lib/bem-core/common.blocks',
- '/path/to/project/common.blocks'
-]
-```
-**config**
-
-Тип: object
-
-Описание: уровни проекта.
+| Параметр | Тип | Описание |
+|----------|-----|----------|
+|**levels**|`string[]`|Пути для обхода|
+|**config**|`object`|Уровни проекта|
-#### Возвращает
+#### Выходные данные
-Поток с возможностью чтения (`stream.Readable`), который имеет следующие события:
+Метод `walk()` возвращает поток с возможностью чтения (`stream.Readable`), который имеет следующие события:
##### Событие: 'data'
-Передает обработчику JavaScript-объект, содержащий информацию о найденном файле:
+Передает обработчику JavaScript-объект, содержащий информацию о найденном файле.
В JSON-интерфейсе:
From f923a10ce6a655b423fe7a16c5df5388c54c5a57 Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Mon, 15 Aug 2016 14:33:23 +0300
Subject: [PATCH 12/38] returned badges
---
README.ru.md | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/README.ru.md b/README.ru.md
index 8a2bbdf..35539d1 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -1,5 +1,26 @@
# bem-walk
+[![NPM Status][npm-img]][npm]
+[![Travis Status][test-img]][travis]
+[![Windows Status][appveyor-img]][appveyor]
+[![Coverage Status][coverage-img]][coveralls]
+[![Dependency Status][david-img]][david]
+
+[npm]: https://www.npmjs.org/package/bem-walk
+[npm-img]: https://img.shields.io/npm/v/bem-walk.svg
+
+[travis]: https://travis-ci.org/bem-sdk/bem-walk
+[test-img]: https://img.shields.io/travis/bem-sdk/bem-walk.svg?label=tests
+
+[appveyor]: https://ci.appveyor.com/project/blond/bem-walk
+[appveyor-img]: http://img.shields.io/appveyor/ci/blond/bem-walk.svg?style=flat&label=windows
+
+[coveralls]: https://coveralls.io/r/bem-sdk/bem-walk
+[coverage-img]: https://img.shields.io/coveralls/bem-sdk/bem-walk.svg
+
+[david]: https://david-dm.org/bem-sdk/bem-walk
+[david-img]: http://img.shields.io/david/bem-sdk/bem-walk.svg?style=flat
+
Инструмент позволяет обойти файловую систему БЭМ-проекта и получить следующую информацию о найденных файлах:
* тип БЭМ-сущности (Блок, Элемент, Модификатор);
From 4d33688073781ae8d8c2ec049e25663dba1b5cce Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Mon, 15 Aug 2016 16:06:36 +0300
Subject: [PATCH 13/38] added info about event data
---
README.ru.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/README.ru.md b/README.ru.md
index 35539d1..d126353 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -80,7 +80,7 @@ var levelMap = config.levelMapSync();
Возможные варианты:
-* относительно корневого каталога
+* относительно корневого каталога;
```js
var levels = [
@@ -89,7 +89,7 @@ var levelMap = config.levelMapSync();
];
```
-* абсолютные
+* абсолютные.
```js
var levels = [
@@ -165,9 +165,9 @@ stream.on('end', () => console.log(files));
##### Событие: 'data'
-Передает обработчику JavaScript-объект, содержащий информацию о найденном файле.
+Передает обработчику JavaScript-объект, содержащий информацию о найденном файле. В разделе рассмотрен JSON-интерфейс, включающий все элементы, которые могут войти в ответ метода walk. Объекты и ключи приведены с примерами значений.
-В JSON-интерфейсе:
+**Пример**
```js
{
From 12580c743214e424cc07c01467c65350a40828ae Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Mon, 15 Aug 2016 17:33:04 +0300
Subject: [PATCH 14/38] deleted steps
---
README.ru.md | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/README.ru.md b/README.ru.md
index d126353..4842e42 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -29,7 +29,7 @@
## Быстрый старт
-### Шаг 1. Установите bem-walk
+### Установите bem-walk
```
$ npm install --save bem-walk
@@ -37,7 +37,7 @@ $ npm install --save bem-walk
Для работы требуется Node.js 4.0+.
-### Шаг 2. Подключите bem-walk
+### Подключите bem-walk
Прежде чем использовать `bem-walk`, необходимо создать JavaScript-файл и добавить строку следующего вида:
@@ -45,7 +45,7 @@ $ npm install --save bem-walk
var walk = require('bem-walk');
```
-### Шаг 3. Опишите уровни файловой системы
+### Опишите уровни файловой системы
Опишите уровни файловой системы проекта в объекте `config`.
@@ -76,7 +76,7 @@ var config = require('bem-config')();
var levelMap = config.levelMapSync();
```
-### Шаг 4. Опишите пути для обхода
+### Опишите пути для обхода
Возможные варианты:
@@ -98,7 +98,7 @@ var levelMap = config.levelMapSync();
];
```
-### Шаг 5. Получите информацию о найденных файлах
+### Получите информацию о найденных файлах
Передайте методу walk() объекты `levels` и `config`.
From 9ad3c3f216de87274727b665f735007e1ac59de7 Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Tue, 16 Aug 2016 11:29:42 +0300
Subject: [PATCH 15/38] changed quick-start
---
README.ru.md | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/README.ru.md b/README.ru.md
index 4842e42..2f1fd7f 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -59,9 +59,9 @@ var config = {
};
```
-**Примечание** Для каждого описываемого уровня указывается используемая схема именования файлов или схема файловой системы. Это позволяет при обходе получать информацию о БЭМ-сущностях по их именам или по схеме организации файловой системы на данном уровне.
+**Примечание** Для каждого описываемого уровня указывается используемая схема именования файлов или схема организации файловой системы. Это позволяет при обходе получать информацию о БЭМ-сущностях [по их именам](https://ru.bem.info/toolbox/sdk/bem-naming/#Строковое-представление) или именам файлов и директорий.
-Если при описании уровня схема не указана, используются:
+Если при описании уровня схема не указана, по умолчанию используется:
* схема именования файлов `origin`;
* схема файловой системы `nested`.
@@ -78,9 +78,11 @@ var levelMap = config.levelMapSync();
### Опишите пути для обхода
+Укажите пути для обхода в объекте `levels`.
+
Возможные варианты:
-* относительно корневого каталога;
+* относительно корневого каталога
```js
var levels = [
@@ -89,7 +91,7 @@ var levelMap = config.levelMapSync();
];
```
-* абсолютные.
+* абсолютные
```js
var levels = [
@@ -100,7 +102,7 @@ var levelMap = config.levelMapSync();
### Получите информацию о найденных файлах
-Передайте методу walk() объекты `levels` и `config`.
+Передайте методу walk() объекты `levels` и `config`. Если запрос был обработан без ошибок, генрируется событие `data` и возвращается JavaScript-объект с информацией о найденом файле. Если запрос вызвал ошибку, возвращается объект `error`, содержащий описание ошибки.
```js
var files = [];
@@ -144,7 +146,7 @@ stream.on('end', () => console.log(files));
## API
-### walk()
+### Метод walk
Обходит директории описанные в параметре `levels` и возвращает поток `stream.Readable`.
@@ -179,7 +181,7 @@ stream.on('end', () => console.log(files));
```
* `entity` — БЭМ-сущность;
-* `level` — путь к уровню;
+* `level` — путь к директории;
* `tech` — технология реализации;
* `path` — относительный путь к файлу.
@@ -193,6 +195,8 @@ stream.on('end', () => console.log(files));
## Примеры использования
+Типичные задачи, решаемые с полученными JavaScript-объектами — группировка, фильтрация, трансформация уже имеющихся данных.
+
### Группировка
```js
From 491ae23d09eab6bc98935754360509d00ec2a5a7 Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Tue, 16 Aug 2016 11:35:41 +0300
Subject: [PATCH 16/38] added punctuations
---
README.ru.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.ru.md b/README.ru.md
index 2f1fd7f..dd5e12e 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -59,7 +59,7 @@ var config = {
};
```
-**Примечание** Для каждого описываемого уровня указывается используемая схема именования файлов или схема организации файловой системы. Это позволяет при обходе получать информацию о БЭМ-сущностях [по их именам](https://ru.bem.info/toolbox/sdk/bem-naming/#Строковое-представление) или именам файлов и директорий.
+**Примечание** Для каждого описываемого уровня указывается используемая схема именования файлов или схема организации файловой системы. Это позволяет при обходе получать информацию о БЭМ-сущностях [по их именам](https://ru.bem.info/toolbox/sdk/bem-naming/#Строковое-представление) или по именам файлов и директорий.
Если при описании уровня схема не указана, по умолчанию используется:
* схема именования файлов `origin`;
@@ -82,7 +82,7 @@ var levelMap = config.levelMapSync();
Возможные варианты:
-* относительно корневого каталога
+* относительно корневого каталога;
```js
var levels = [
@@ -91,7 +91,7 @@ var levelMap = config.levelMapSync();
];
```
-* абсолютные
+* абсолютные.
```js
var levels = [
From d9069debf0356b54830dd1127587a00fab143cd9 Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Tue, 16 Aug 2016 11:48:16 +0300
Subject: [PATCH 17/38] added links to Node.js documentation
---
README.ru.md | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/README.ru.md b/README.ru.md
index dd5e12e..37ad306 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -102,7 +102,7 @@ var levelMap = config.levelMapSync();
### Получите информацию о найденных файлах
-Передайте методу walk() объекты `levels` и `config`. Если запрос был обработан без ошибок, генрируется событие `data` и возвращается JavaScript-объект с информацией о найденом файле. Если запрос вызвал ошибку, возвращается объект `error`, содержащий описание ошибки.
+Передайте методу walk() объекты `levels` и `config`. Если запрос был обработан без ошибок, генерируется событие `data` и возвращается JavaScript-объект с информацией о найденом файле. Если запрос вызвал ошибку, возвращается объект `error`, содержащий описание ошибки.
```js
var files = [];
@@ -148,7 +148,7 @@ stream.on('end', () => console.log(files));
### Метод walk
-Обходит директории описанные в параметре `levels` и возвращает поток `stream.Readable`.
+Обходит директории описанные в параметре `levels` и возвращает поток [`stream.Readable`](https://nodejs.org/api/stream.html#stream_class_stream_readable).
#### Описание
@@ -165,7 +165,7 @@ stream.on('end', () => console.log(files));
Метод `walk()` возвращает поток с возможностью чтения (`stream.Readable`), который имеет следующие события:
-##### Событие: 'data'
+##### Событие: ['data'](https://nodejs.org/api/stream.html#stream_event_data)
Передает обработчику JavaScript-объект, содержащий информацию о найденном файле. В разделе рассмотрен JSON-интерфейс, включающий все элементы, которые могут войти в ответ метода walk. Объекты и ключи приведены с примерами значений.
@@ -185,11 +185,11 @@ stream.on('end', () => console.log(files));
* `tech` — технология реализации;
* `path` — относительный путь к файлу.
-##### Событие: 'end'
+##### Событие: ['end'](https://nodejs.org/api/stream.html#stream_event_end)
Генерируется, когда `bem-walk` заканчивает обход всех уровней, описанных в объекте `levels`.
-##### Событие: 'error'
+##### Событие: ['error'](https://nodejs.org/api/stream.html#stream_event_error_1)
Генерируется, если при обходе уровней произошла ошибка.
From 16ecc2501ec301855922bdd781d7f1f90f36819b Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Wed, 17 Aug 2016 11:18:45 +0300
Subject: [PATCH 18/38] fixed a typo
---
README.ru.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.ru.md b/README.ru.md
index 37ad306..b33af13 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -102,7 +102,7 @@ var levelMap = config.levelMapSync();
### Получите информацию о найденных файлах
-Передайте методу walk() объекты `levels` и `config`. Если запрос был обработан без ошибок, генерируется событие `data` и возвращается JavaScript-объект с информацией о найденом файле. Если запрос вызвал ошибку, возвращается объект `error`, содержащий описание ошибки.
+Передайте методу walk() объекты `levels` и `config`. Если запрос был обработан без ошибок, генерируется событие `data` и возвращается JavaScript-объект с информацией о найденном файле. Если запрос вызвал ошибку, возвращается объект `error`, содержащий описание ошибки.
```js
var files = [];
From 1098d151e6503ae8a2bdb05a1f8951fd377d2244 Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Wed, 17 Aug 2016 11:22:21 +0300
Subject: [PATCH 19/38] removed brackets
---
README.ru.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.ru.md b/README.ru.md
index b33af13..d675f72 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -163,7 +163,7 @@ stream.on('end', () => console.log(files));
#### Выходные данные
-Метод `walk()` возвращает поток с возможностью чтения (`stream.Readable`), который имеет следующие события:
+Метод `walk` возвращает поток с возможностью чтения (`stream.Readable`), который имеет следующие события:
##### Событие: ['data'](https://nodejs.org/api/stream.html#stream_event_data)
From d10c46a99eef14ee126134a9ecef9f5719a93e99 Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Wed, 17 Aug 2016 15:13:27 +0300
Subject: [PATCH 20/38] glvrd
---
README.ru.md | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/README.ru.md b/README.ru.md
index d675f72..b05474f 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -39,7 +39,7 @@ $ npm install --save bem-walk
### Подключите bem-walk
-Прежде чем использовать `bem-walk`, необходимо создать JavaScript-файл и добавить строку следующего вида:
+Прежде чем использовать `bem-walk`, создайте JavaScript-файл и добавьте строку следующего вида:
```js
var walk = require('bem-walk');
@@ -59,7 +59,7 @@ var config = {
};
```
-**Примечание** Для каждого описываемого уровня указывается используемая схема именования файлов или схема организации файловой системы. Это позволяет при обходе получать информацию о БЭМ-сущностях [по их именам](https://ru.bem.info/toolbox/sdk/bem-naming/#Строковое-представление) или по именам файлов и директорий.
+**Примечание** Для каждого уровня указывается используемая схема именования файлов или схема организации файловой системы. Это позволяет при обходе получать информацию о БЭМ-сущностях [по их именам](https://ru.bem.info/toolbox/sdk/bem-naming/#Строковое-представление) или по именам файлов и директорий.
Если при описании уровня схема не указана, по умолчанию используется:
* схема именования файлов `origin`;
@@ -69,7 +69,7 @@ var config = {
* [bem-naming](https://ru.bem.info/toolbox/sdk/bem-naming/);
* [bem-fs-scheme](https://ru.bem.info/toolbox/sdk/bem-fs-scheme/).
-**Примечание** Для того чтобы не определять уровни проекта вручную, воспользуйтесь инструментом [`bem-config`](https://ru.bem.info/toolbox/sdk/bem-config/).
+**Примечание** Чтобы не определять уровни проекта вручную, воспользуйтесь инструментом [`bem-config`](https://ru.bem.info/toolbox/sdk/bem-config/).
```js
var config = require('bem-config')();
@@ -102,7 +102,7 @@ var levelMap = config.levelMapSync();
### Получите информацию о найденных файлах
-Передайте методу walk() объекты `levels` и `config`. Если запрос был обработан без ошибок, генерируется событие `data` и возвращается JavaScript-объект с информацией о найденном файле. Если запрос вызвал ошибку, возвращается объект `error`, содержащий описание ошибки.
+Передайте методу walk() объекты `levels` и `config`. Если запрос обработан без ошибок, генерируется событие `data` и возвращается JavaScript-объект с информацией о найденном файле. Если запрос вызвал ошибку, возвращается объект `error`, содержащий описание ошибки.
```js
var files = [];
@@ -167,7 +167,7 @@ stream.on('end', () => console.log(files));
##### Событие: ['data'](https://nodejs.org/api/stream.html#stream_event_data)
-Передает обработчику JavaScript-объект, содержащий информацию о найденном файле. В разделе рассмотрен JSON-интерфейс, включающий все элементы, которые могут войти в ответ метода walk. Объекты и ключи приведены с примерами значений.
+Передает обработчику JavaScript-объект, содержащий информацию о найденном файле. В разделе рассмотрен JSON-интерфейс, включающий элементы, которые входят в ответ метода walk. Объекты и ключи приведены с примерами значений.
**Пример**
@@ -187,7 +187,7 @@ stream.on('end', () => console.log(files));
##### Событие: ['end'](https://nodejs.org/api/stream.html#stream_event_end)
-Генерируется, когда `bem-walk` заканчивает обход всех уровней, описанных в объекте `levels`.
+Генерируется, когда `bem-walk` заканчивает обход уровней, описанных в объекте `levels`.
##### Событие: ['error'](https://nodejs.org/api/stream.html#stream_event_error_1)
From 2670033549a9cc17aff3a5f63cb67afec9ce6b2d Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Tue, 23 Aug 2016 14:15:03 +0300
Subject: [PATCH 21/38] second edition from Jura
---
README.ru.md | 81 ++++++++++++++++++++++------------------------------
1 file changed, 34 insertions(+), 47 deletions(-)
diff --git a/README.ru.md b/README.ru.md
index b05474f..45c09ac 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -29,23 +29,23 @@
## Быстрый старт
-### Установите bem-walk
+**Примечание** Для работы с `bem-walk` требуется установить Node.js 4.0+.
+
+### 1. Установите bem-walk
```
$ npm install --save bem-walk
```
-Для работы требуется Node.js 4.0+.
-
-### Подключите bem-walk
+### 2. Подключите bem-walk
-Прежде чем использовать `bem-walk`, создайте JavaScript-файл и добавьте строку следующего вида:
+Создайте JavaScript-файл с произвольным именем и добавьте строку следующего вида:
```js
var walk = require('bem-walk');
```
-### Опишите уровни файловой системы
+### 3. Опишите уровни файловой системы
Опишите уровни файловой системы проекта в объекте `config`.
@@ -59,9 +59,9 @@ var config = {
};
```
-**Примечание** Для каждого уровня указывается используемая схема именования файлов или схема организации файловой системы. Это позволяет при обходе получать информацию о БЭМ-сущностях [по их именам](https://ru.bem.info/toolbox/sdk/bem-naming/#Строковое-представление) или по именам файлов и директорий.
+**Примечание** Для каждого уровня указывается схема именования файлов или организации файловой системы. Это позволяет при обходе получать информацию о БЭМ-сущностях [по их именам](https://ru.bem.info/toolbox/sdk/bem-naming/#Строковое-представление) или по именам файлов и директорий.
-Если при описании уровня схема не указана, по умолчанию используется:
+Если схема не указана, по умолчанию используется:
* схема именования файлов `origin`;
* схема файловой системы `nested`.
@@ -69,20 +69,20 @@ var config = {
* [bem-naming](https://ru.bem.info/toolbox/sdk/bem-naming/);
* [bem-fs-scheme](https://ru.bem.info/toolbox/sdk/bem-fs-scheme/).
-**Примечание** Чтобы не определять уровни проекта вручную, воспользуйтесь инструментом [`bem-config`](https://ru.bem.info/toolbox/sdk/bem-config/).
+**Примечание** Чтобы не определять уровни проекта вручную, воспользуйтесь инструментом [`bem-config`](https://ru.bem.info/toolbox/sdk/bem-config/).
```js
var config = require('bem-config')();
var levelMap = config.levelMapSync();
```
-### Опишите пути для обхода
+### 4. Опишите пути обхода
-Укажите пути для обхода в объекте `levels`.
+Укажите пути обхода в объекте `levels`.
Возможные варианты:
-* относительно корневого каталога;
+* Относительно корневого каталога.
```js
var levels = [
@@ -91,7 +91,7 @@ var levelMap = config.levelMapSync();
];
```
-* абсолютные.
+* Абсолютные.
```js
var levels = [
@@ -100,9 +100,11 @@ var levelMap = config.levelMapSync();
];
```
-### Получите информацию о найденных файлах
+### 5. Получите информацию о найденных файлах
-Передайте методу walk() объекты `levels` и `config`. Если запрос обработан без ошибок, генерируется событие `data` и возвращается JavaScript-объект с информацией о найденном файле. Если запрос вызвал ошибку, возвращается объект `error`, содержащий описание ошибки.
+Передайте методу walk() объекты `levels` и `config`.
+
+Для получения данных о найденных файлах используется поток (stream). Когда порция данных получена, генерируется событие `data` и информация о найденном файле добавляется в массив `files`. При возникновении ошибки `bem-walk` прекращает обработку запроса и возвращает ответ, содержащий идентификатор ошибки и ее описание. Событие `end` наступает при окончании получения данных из потока.
```js
var files = [];
@@ -116,9 +118,9 @@ stream.on('error', console.error);
stream.on('end', () => console.log(files));
```
-### Результат
+**Примечание** [Подробнее о возвращаемых данных](#Событие-data).
-Полный текст примера:
+В результате выполненных действий полный код JavaScript-файла должен иметь следующий вид:
```js
var walk = require('bem-walk'),
@@ -148,14 +150,16 @@ stream.on('end', () => console.log(files));
### Метод walk
-Обходит директории описанные в параметре `levels` и возвращает поток [`stream.Readable`](https://nodejs.org/api/stream.html#stream_class_stream_readable).
+`walk(levels, config);`
#### Описание
-`walk(levels, config);`
+Обходит директории описанные в параметре `levels` и возвращает поток `stream.Readable`.
#### Входные параметры
+Требования к поиску определяются параметрами `levels` и `config`. Параметры нельзя передавать в любой последовательности.
+
| Параметр | Тип | Описание |
|----------|-----|----------|
|**levels**|`string[]`|Пути для обхода|
@@ -163,39 +167,22 @@ stream.on('end', () => console.log(files));
#### Выходные данные
-Метод `walk` возвращает поток с возможностью чтения (`stream.Readable`), который имеет следующие события:
-
-##### Событие: ['data'](https://nodejs.org/api/stream.html#stream_event_data)
-
-Передает обработчику JavaScript-объект, содержащий информацию о найденном файле. В разделе рассмотрен JSON-интерфейс, включающий элементы, которые входят в ответ метода walk. Объекты и ключи приведены с примерами значений.
-
-**Пример**
-
-```js
-{
- "entity": { "block": "page" },
- "level": "libs/bem-core/desktop.blocks",
- "tech": "bemhtml",
- "path": "libs/bem-core/desktop.blocks/page/page.bemhtml.js"
-}
-```
-
-* `entity` — БЭМ-сущность;
-* `level` — путь к директории;
-* `tech` — технология реализации;
-* `path` — относительный путь к файлу.
-
-##### Событие: ['end'](https://nodejs.org/api/stream.html#stream_event_end)
-
-Генерируется, когда `bem-walk` заканчивает обход уровней, описанных в объекте `levels`.
+Поток с возможностью чтения (`stream.Readable`), который имеет следующие события:
-##### Событие: ['error'](https://nodejs.org/api/stream.html#stream_event_error_1)
+| Событие | Описание |
+|----------|-----|
+|'data'|Возвращает обработчику JavaScript-объект с информацией о найденном файле. Ниже рассмотрен JSON-интерфейс, включающий элементы, которые входят в ответ метода `walk`. Объекты и ключи приведены с примерами значений. **Пример** { "entity": { "block": "page" }, "level": "libs/bem-core/desktop.blocks", "tech": "bemhtml", "path": "libs/bem-core/desktop.blocks/page/page.bemhtml.js" }
`entity` — БЭМ-сущность; `level` — путь к директории; `tech` — технология реализации; `path` — относительный путь к файлу.|
+| 'error' | Генерируется, если при обходе уровней произошла ошибка. |
+| 'end' | Генерируется, когда `bem-walk` заканчивает обход уровней, описанных в объекте `levels`. |
-Генерируется, если при обходе уровней произошла ошибка.
+**Примечание** [Полный список событий](https://nodejs.org/api/stream.html#stream_class_stream_readable).
## Примеры использования
-Типичные задачи, решаемые с полученными JavaScript-объектами — группировка, фильтрация, трансформация уже имеющихся данных.
+Типовые задачи, решаемые с полученными JavaScript-объектами:
+* [Группировка](#Группировка).
+* [Фильтрация](#Фильтрация).
+* [Трансформация имеющихся данных](#Трансформация).
### Группировка
From 5eb4100e86b490ca447f20b4d3745c708e328c1f Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Tue, 23 Aug 2016 14:22:30 +0300
Subject: [PATCH 22/38] corrected code example
---
README.ru.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.ru.md b/README.ru.md
index 45c09ac..d523258 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -118,7 +118,7 @@ stream.on('error', console.error);
stream.on('end', () => console.log(files));
```
-**Примечание** [Подробнее о возвращаемых данных](#Событие-data).
+[Подробнее о возвращаемых данных](#Выходные-данные).
В результате выполненных действий полный код JavaScript-файла должен иметь следующий вид:
@@ -171,7 +171,7 @@ stream.on('end', () => console.log(files));
| Событие | Описание |
|----------|-----|
-|'data'|Возвращает обработчику JavaScript-объект с информацией о найденном файле. Ниже рассмотрен JSON-интерфейс, включающий элементы, которые входят в ответ метода `walk`. Объекты и ключи приведены с примерами значений. **Пример** { "entity": { "block": "page" }, "level": "libs/bem-core/desktop.blocks", "tech": "bemhtml", "path": "libs/bem-core/desktop.blocks/page/page.bemhtml.js" }
`entity` — БЭМ-сущность; `level` — путь к директории; `tech` — технология реализации; `path` — относительный путь к файлу.|
+|'data'|Возвращает обработчику JavaScript-объект с информацией о найденном файле. Ниже рассмотрен JSON-интерфейс, включающий элементы, которые входят в ответ метода `walk`. Объекты и ключи приведены с примерами значений. **Пример** ```js{ "entity": { "block": "page" }, "level": "libs/bem-core/desktop.blocks", "tech": "bemhtml", "path": "libs/bem-core/desktop.blocks/page/page.bemhtml.js" }``` `entity` — БЭМ-сущность; `level` — путь к директории; `tech` — технология реализации; `path` — относительный путь к файлу.|
| 'error' | Генерируется, если при обходе уровней произошла ошибка. |
| 'end' | Генерируется, когда `bem-walk` заканчивает обход уровней, описанных в объекте `levels`. |
From 4acb6ddc12bb0bab30d57b4750f702b205bc5580 Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Tue, 23 Aug 2016 14:26:15 +0300
Subject: [PATCH 23/38] corrected code example 2
---
README.ru.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.ru.md b/README.ru.md
index d523258..cc1188d 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -171,7 +171,7 @@ stream.on('end', () => console.log(files));
| Событие | Описание |
|----------|-----|
-|'data'|Возвращает обработчику JavaScript-объект с информацией о найденном файле. Ниже рассмотрен JSON-интерфейс, включающий элементы, которые входят в ответ метода `walk`. Объекты и ключи приведены с примерами значений. **Пример** ```js{ "entity": { "block": "page" }, "level": "libs/bem-core/desktop.blocks", "tech": "bemhtml", "path": "libs/bem-core/desktop.blocks/page/page.bemhtml.js" }``` `entity` — БЭМ-сущность; `level` — путь к директории; `tech` — технология реализации; `path` — относительный путь к файлу.|
+|'data'|Возвращает обработчику JavaScript-объект с информацией о найденном файле. Ниже рассмотрен JSON-интерфейс, включающий элементы, которые входят в ответ метода `walk`. Объекты и ключи приведены с примерами значений. **Пример** {
"entity": { "block": "page" },
"level": "libs/bem-core/desktop.blocks",
"tech": "bemhtml",
"path": "libs/bem-core/desktop.blocks/page/page.bemhtml.js"
}
`entity` — БЭМ-сущность; `level` — путь к директории; `tech` — технология реализации; `path` — относительный путь к файлу.|
| 'error' | Генерируется, если при обходе уровней произошла ошибка. |
| 'end' | Генерируется, когда `bem-walk` заканчивает обход уровней, описанных в объекте `levels`. |
From f006db462d8082b6709772aa74909e403d801f23 Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Tue, 23 Aug 2016 14:29:22 +0300
Subject: [PATCH 24/38] corrected code 3
---
README.ru.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.ru.md b/README.ru.md
index cc1188d..e17992c 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -171,7 +171,7 @@ stream.on('end', () => console.log(files));
| Событие | Описание |
|----------|-----|
-|'data'|Возвращает обработчику JavaScript-объект с информацией о найденном файле. Ниже рассмотрен JSON-интерфейс, включающий элементы, которые входят в ответ метода `walk`. Объекты и ключи приведены с примерами значений. **Пример** {
"entity": { "block": "page" },
"level": "libs/bem-core/desktop.blocks",
"tech": "bemhtml",
"path": "libs/bem-core/desktop.blocks/page/page.bemhtml.js"
}
`entity` — БЭМ-сущность; `level` — путь к директории; `tech` — технология реализации; `path` — относительный путь к файлу.|
+|'data'|Возвращает обработчику JavaScript-объект с информацией о найденном файле. Ниже рассмотрен JSON-интерфейс, включающий элементы, которые входят в ответ метода `walk`. Объекты и ключи приведены с примерами значений. **Пример** {
"entity": { "block": "page" },
"level": "libs/bem-core/desktop.blocks",
"tech": "bemhtml",
"path": "libs/bem-core/desktop.blocks/page/page.bemhtml.js"
}
`entity` — БЭМ-сущность; `level` — путь к директории; `tech` — технология реализации; `path` — относительный путь к файлу.|
| 'error' | Генерируется, если при обходе уровней произошла ошибка. |
| 'end' | Генерируется, когда `bem-walk` заканчивает обход уровней, описанных в объекте `levels`. |
From 87dfd26b4c3deec597777b1282346de84b444c9d Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Tue, 23 Aug 2016 14:56:24 +0300
Subject: [PATCH 25/38] deleted 'for'
---
README.ru.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.ru.md b/README.ru.md
index e17992c..979cc74 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -162,7 +162,7 @@ stream.on('end', () => console.log(files));
| Параметр | Тип | Описание |
|----------|-----|----------|
-|**levels**|`string[]`|Пути для обхода|
+|**levels**|`string[]`|Пути обхода|
|**config**|`object`|Уровни проекта|
#### Выходные данные
From 7bd303f4bbc794038ec81fa0cc6892525a96c2b0 Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Wed, 24 Aug 2016 19:24:35 +0300
Subject: [PATCH 26/38] edit from blond@
---
README.ru.md | 50 ++++++++++++++++++++++++++++++++++++++++----------
1 file changed, 40 insertions(+), 10 deletions(-)
diff --git a/README.ru.md b/README.ru.md
index 979cc74..183e0eb 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -61,9 +61,10 @@ var config = {
**Примечание** Для каждого уровня указывается схема именования файлов или организации файловой системы. Это позволяет при обходе получать информацию о БЭМ-сущностях [по их именам](https://ru.bem.info/toolbox/sdk/bem-naming/#Строковое-представление) или по именам файлов и директорий.
-Если схема не указана, по умолчанию используется:
-* схема именования файлов `origin`;
-* схема файловой системы `nested`.
+| Схема | Значение по умолчанию | Все возможные значения |
+|----------|-----|----------|
+|`naming` — схема именования файлов.|`origin`| `origin`, `two-dashes`|
+|`sheme` — cхема файловой системы.|`nested`|`nested`, `flat`|
Подробнее:
* [bem-naming](https://ru.bem.info/toolbox/sdk/bem-naming/);
@@ -74,6 +75,7 @@ var config = {
```js
var config = require('bem-config')();
var levelMap = config.levelMapSync();
+var stream = walk(levels, levelMap);
```
### 4. Опишите пути обхода
@@ -172,7 +174,7 @@ stream.on('end', () => console.log(files));
| Событие | Описание |
|----------|-----|
|'data'|Возвращает обработчику JavaScript-объект с информацией о найденном файле. Ниже рассмотрен JSON-интерфейс, включающий элементы, которые входят в ответ метода `walk`. Объекты и ключи приведены с примерами значений. **Пример** {
"entity": { "block": "page" },
"level": "libs/bem-core/desktop.blocks",
"tech": "bemhtml",
"path": "libs/bem-core/desktop.blocks/page/page.bemhtml.js"
}
`entity` — БЭМ-сущность; `level` — путь к директории; `tech` — технология реализации; `path` — относительный путь к файлу.|
-| 'error' | Генерируется, если при обходе уровней произошла ошибка. |
+| 'error' | Генерируется, если при обходе уровней произошла ошибка. Возвращается ответ с описанием ошибки.|
| 'end' | Генерируется, когда `bem-walk` заканчивает обход уровней, описанных в объекте `levels`. |
**Примечание** [Полный список событий](https://nodejs.org/api/stream.html#stream_class_stream_readable).
@@ -191,14 +193,14 @@ var walk = require('bem-walk'),
config = {
// уровни проекта
levels: {
- 'lib/bem-core/common.blocks': { naming: 'origin' },
+ 'lib/bem-components/common.blocks': { naming: 'origin' },
'common.blocks': { naming: 'origin' }
}
},
groups = {};
var stream = walk([
- 'libs/bem-core/common.blocks',
+ 'libs/bem-components/common.blocks',
'common.blocks'
], config);
@@ -207,6 +209,16 @@ stream.on('data', file => (groups[file.entity.block] = []).push(file));
stream.on('error', console.error);
stream.on('end', () => console.log(groups));
+
+/*
+{ button:
+ [ { entity: { block: 'button' },
+ tech: 'spec.js',
+ path: 'libs/bem-components/common.blocks/button/_togglable/button_togglable_radio.spec.js',
+ level: 'libs/bem-components/common.blocks' } ],
+ ...
+}
+*/
```
### Фильтрация
@@ -216,14 +228,14 @@ var walk = require('bem-walk'),
config = {
// уровни проекта
levels: {
- 'lib/bem-core/common.blocks': { naming: 'origin' },
+ 'lib/bem-components/common.blocks': { naming: 'origin' },
'common.blocks': { naming: 'origin' }
}
},
files = [];
var stream = walk([
- 'libs/bem-core/common.blocks',
+ 'libs/bem-components/common.blocks',
'common.blocks'
], config);
@@ -236,6 +248,15 @@ stream.on('data', function(file) {
stream.on('error', console.error);
stream.on('end', () => console.log(files));
+
+/*
+[{ entity: { block: 'popup', modName: 'target', modVal: true },
+ tech: 'js',
+ path: 'libs/bem-components/common.blocks/popup/_target/popup_target.js',
+ level: 'libs/bem-components/common.blocks' },
+...
+]
+*/
```
### Трансформация
@@ -248,14 +269,14 @@ var walk = require('bem-walk'),
config = {
// уровни проекта
levels: {
- 'lib/bem-core/common.blocks': { naming: 'origin' },
+ 'lib/bem-components/common.blocks': { naming: 'origin' },
'common.blocks': { naming: 'origin' }
}
},
files = [];
var stream = walk([
- 'libs/bem-core/common.blocks',
+ 'libs/bem-components/common.blocks',
'common.blocks'
], config);
@@ -268,4 +289,13 @@ stream.pipe(through2.obj(function (file, enc, callback) {
}))
.pipe(stringify())
.pipe(process.stdout);
+/*
+[{ entity: { block: 'popup', modName: 'target', modVal: true },
+ tech: 'js',
+ path: 'libs/bem-components/common.blocks/popup/_target/popup_target.js',
+ level: 'libs/bem-components/common.blocks'
+ source: 'libs/bem-components/common.blocks/popup/_target/popup_target.js' },
+...
+]
+*/
```
From 5e9a58ef95449298a849667a2d90979041eef318 Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Thu, 25 Aug 2016 15:49:00 +0300
Subject: [PATCH 27/38] edit from blond@ part2
---
README.ru.md | 31 ++++++++++++++++---------------
1 file changed, 16 insertions(+), 15 deletions(-)
diff --git a/README.ru.md b/README.ru.md
index 183e0eb..0940f6f 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -174,11 +174,9 @@ stream.on('end', () => console.log(files));
| Событие | Описание |
|----------|-----|
|'data'|Возвращает обработчику JavaScript-объект с информацией о найденном файле. Ниже рассмотрен JSON-интерфейс, включающий элементы, которые входят в ответ метода `walk`. Объекты и ключи приведены с примерами значений. **Пример** {
"entity": { "block": "page" },
"level": "libs/bem-core/desktop.blocks",
"tech": "bemhtml",
"path": "libs/bem-core/desktop.blocks/page/page.bemhtml.js"
}
`entity` — БЭМ-сущность; `level` — путь к директории; `tech` — технология реализации; `path` — относительный путь к файлу.|
-| 'error' | Генерируется, если при обходе уровней произошла ошибка. Возвращается ответ с описанием ошибки.|
+| 'error' | Генерируется, если при обходе уровней произошла ошибка. Возвращает ответ с описанием ошибки.|
| 'end' | Генерируется, когда `bem-walk` заканчивает обход уровней, описанных в объекте `levels`. |
-**Примечание** [Полный список событий](https://nodejs.org/api/stream.html#stream_class_stream_readable).
-
## Примеры использования
Типовые задачи, решаемые с полученными JavaScript-объектами:
@@ -198,6 +196,7 @@ var walk = require('bem-walk'),
}
},
groups = {};
+const util = require('util');
var stream = walk([
'libs/bem-components/common.blocks',
@@ -208,11 +207,11 @@ stream.on('data', file => (groups[file.entity.block] = []).push(file));
stream.on('error', console.error);
-stream.on('end', () => console.log(groups));
+stream.on('end', () => console.log(util.inspect(groups, { depth: null })));
/*
{ button:
- [ { entity: { block: 'button' },
+ [ { entity: { block: 'button', modName: 'togglable', modVal: 'radio' },
tech: 'spec.js',
path: 'libs/bem-components/common.blocks/button/_togglable/button_togglable_radio.spec.js',
level: 'libs/bem-components/common.blocks' } ],
@@ -240,7 +239,7 @@ var stream = walk([
], config);
stream.on('data', function(file) {
- if (file.entity.block !== 'button') {
+ if (file.entity.block == 'popup') {
files.push(file);
}
});
@@ -272,8 +271,7 @@ var walk = require('bem-walk'),
'lib/bem-components/common.blocks': { naming: 'origin' },
'common.blocks': { naming: 'origin' }
}
- },
- files = [];
+ };
var stream = walk([
'libs/bem-components/common.blocks',
@@ -282,19 +280,22 @@ var stream = walk([
stream.pipe(through2.obj(function (file, enc, callback) {
// Создание свойства source объекта file
- file.source = fs.readFileSync(file.path).toString('utf-8');
- this.push(file);
+ if(fs.statSync(file.path).isFile()) {
+ file.source = fs.readFileSync(file.path, 'utf-8');
+ }
+ this.push(file);
callback();
}))
.pipe(stringify())
.pipe(process.stdout);
+
/*
-[{ entity: { block: 'popup', modName: 'target', modVal: true },
- tech: 'js',
- path: 'libs/bem-components/common.blocks/popup/_target/popup_target.js',
- level: 'libs/bem-components/common.blocks'
- source: 'libs/bem-components/common.blocks/popup/_target/popup_target.js' },
+[{"entity":{"block":"search","elem":"header"},
+ "tech":"css",
+ "path":"common.blocks/search/__header/search__header.css",
+ "level":"common.blocks",
+ "source":".search__header {\n\tdisplay: block;\n\tfont-size: 20px;\n\tcolor: rgba(0,0,0,0.84);\n\tmargin: 0;\n\tpadding: 0 0 16px;\n\n}\n\n"},
...
]
*/
From c72fab627983961504de6286c4a0ae2d5a5371a2 Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Thu, 25 Aug 2016 15:52:27 +0300
Subject: [PATCH 28/38] verbs
---
README.ru.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.ru.md b/README.ru.md
index 0940f6f..7689aaa 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -173,8 +173,8 @@ stream.on('end', () => console.log(files));
| Событие | Описание |
|----------|-----|
-|'data'|Возвращает обработчику JavaScript-объект с информацией о найденном файле. Ниже рассмотрен JSON-интерфейс, включающий элементы, которые входят в ответ метода `walk`. Объекты и ключи приведены с примерами значений. **Пример** {
"entity": { "block": "page" },
"level": "libs/bem-core/desktop.blocks",
"tech": "bemhtml",
"path": "libs/bem-core/desktop.blocks/page/page.bemhtml.js"
}
`entity` — БЭМ-сущность; `level` — путь к директории; `tech` — технология реализации; `path` — относительный путь к файлу.|
-| 'error' | Генерируется, если при обходе уровней произошла ошибка. Возвращает ответ с описанием ошибки.|
+|'data'|Возвращается JavaScript-объект с информацией о найденном файле. Ниже рассмотрен JSON-интерфейс, включающий элементы, которые входят в ответ метода `walk`. Объекты и ключи приведены с примерами значений. **Пример** {
"entity": { "block": "page" },
"level": "libs/bem-core/desktop.blocks",
"tech": "bemhtml",
"path": "libs/bem-core/desktop.blocks/page/page.bemhtml.js"
}
`entity` — БЭМ-сущность; `level` — путь к директории; `tech` — технология реализации; `path` — относительный путь к файлу.|
+| 'error' | Генерируется, если при обходе уровней произошла ошибка. Возвращается объект с описанием ошибки.|
| 'end' | Генерируется, когда `bem-walk` заканчивает обход уровней, описанных в объекте `levels`. |
## Примеры использования
From 16ad10f2c4eb8787b7355bdfb99ea6400c519bed Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Thu, 25 Aug 2016 16:00:19 +0300
Subject: [PATCH 29/38] deleted points
---
README.ru.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/README.ru.md b/README.ru.md
index 7689aaa..ebe329b 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -180,9 +180,9 @@ stream.on('end', () => console.log(files));
## Примеры использования
Типовые задачи, решаемые с полученными JavaScript-объектами:
-* [Группировка](#Группировка).
-* [Фильтрация](#Фильтрация).
-* [Трансформация имеющихся данных](#Трансформация).
+* [Группировка](#Группировка)
+* [Фильтрация](#Фильтрация)
+* [Трансформация имеющихся данных](#Трансформация)
### Группировка
From dbdb4ee46a3ac8be441a008c819c4468f36f729d Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Thu, 25 Aug 2016 16:04:22 +0300
Subject: [PATCH 30/38] fixed the code examples
---
README.ru.md | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/README.ru.md b/README.ru.md
index ebe329b..ae7afaa 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -67,8 +67,8 @@ var config = {
|`sheme` — cхема файловой системы.|`nested`|`nested`, `flat`|
Подробнее:
-* [bem-naming](https://ru.bem.info/toolbox/sdk/bem-naming/);
-* [bem-fs-scheme](https://ru.bem.info/toolbox/sdk/bem-fs-scheme/).
+* [bem-naming](https://ru.bem.info/toolbox/sdk/bem-naming/)
+* [bem-fs-scheme](https://ru.bem.info/toolbox/sdk/bem-fs-scheme/)
**Примечание** Чтобы не определять уровни проекта вручную, воспользуйтесь инструментом [`bem-config`](https://ru.bem.info/toolbox/sdk/bem-config/).
@@ -213,7 +213,8 @@ stream.on('end', () => console.log(util.inspect(groups, { depth: null })));
{ button:
[ { entity: { block: 'button', modName: 'togglable', modVal: 'radio' },
tech: 'spec.js',
- path: 'libs/bem-components/common.blocks/button/_togglable/button_togglable_radio.spec.js',
+ path: 'libs/bem-components/common.blocks/button/_togglable/
+ button_togglable_radio.spec.js',
level: 'libs/bem-components/common.blocks' } ],
...
}
@@ -295,7 +296,8 @@ stream.pipe(through2.obj(function (file, enc, callback) {
"tech":"css",
"path":"common.blocks/search/__header/search__header.css",
"level":"common.blocks",
- "source":".search__header {\n\tdisplay: block;\n\tfont-size: 20px;\n\tcolor: rgba(0,0,0,0.84);\n\tmargin: 0;\n\tpadding: 0 0 16px;\n\n}\n\n"},
+ "source":".search__header {\n\tdisplay: block;\n\tfont-size: 20px;\n\tcolor:
+ rgba(0,0,0,0.84);\n\tmargin: 0;\n\tpadding: 0 0 16px;\n\n}\n\n"},
...
]
*/
From 2c6c0ddfc755b8ff4ed558932322ba055462803b Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Fri, 26 Aug 2016 11:17:07 +0300
Subject: [PATCH 31/38] edited by tadatuta
---
README.ru.md | 90 ++++++++++++++++++++++++++++++++--------------------
1 file changed, 55 insertions(+), 35 deletions(-)
diff --git a/README.ru.md b/README.ru.md
index ae7afaa..903bb87 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -1,5 +1,11 @@
# bem-walk
+Инструмент позволяет обойти файловую систему БЭМ-проекта и получить следующую информацию о найденных файлах:
+
+* тип БЭМ-сущности (Блок, Элемент, Модификатор);
+* технология реализации;
+* расположение на файловой системе.
+
[![NPM Status][npm-img]][npm]
[![Travis Status][test-img]][travis]
[![Windows Status][appveyor-img]][appveyor]
@@ -21,12 +27,6 @@
[david]: https://david-dm.org/bem-sdk/bem-walk
[david-img]: http://img.shields.io/david/bem-sdk/bem-walk.svg?style=flat
-Инструмент позволяет обойти файловую систему БЭМ-проекта и получить следующую информацию о найденных файлах:
-
-* тип БЭМ-сущности (Блок, Элемент, Модификатор);
-* технология реализации;
-* расположение на файловой системе.
-
## Быстрый старт
**Примечание** Для работы с `bem-walk` требуется установить Node.js 4.0+.
@@ -53,13 +53,19 @@ var walk = require('bem-walk');
var config = {
// уровни проекта
levels: {
- 'lib/bem-core/common.blocks': { naming: 'two-dashes' }, // `naming` — схема именования файлов
- 'common.blocks': { sheme: 'nested' } // `scheme` — схема файловой системы
+ 'lib/bem-core/common.blocks': {
+ // `naming` — схема именования файлов
+ naming: 'two-dashes'
+ },
+ 'common.blocks': {
+ // `scheme` — схема файловой системы
+ sheme: 'nested'
+ }
}
};
```
-**Примечание** Для каждого уровня указывается схема именования файлов или организации файловой системы. Это позволяет при обходе получать информацию о БЭМ-сущностях [по их именам](https://ru.bem.info/toolbox/sdk/bem-naming/#Строковое-представление) или по именам файлов и директорий.
+**Примечание** Для каждого уровня указывается схема именования файлов либо организации файловой системы. Это позволяет при обходе получать информацию о БЭМ-сущностях [по их именам](https://ru.bem.info/toolbox/sdk/bem-naming/#Строковое-представление) или по именам файлов и директорий.
| Схема | Значение по умолчанию | Все возможные значения |
|----------|-----|----------|
@@ -106,22 +112,20 @@ var stream = walk(levels, levelMap);
Передайте методу walk() объекты `levels` и `config`.
-Для получения данных о найденных файлах используется поток (stream). Когда порция данных получена, генерируется событие `data` и информация о найденном файле добавляется в массив `files`. При возникновении ошибки `bem-walk` прекращает обработку запроса и возвращает ответ, содержащий идентификатор ошибки и ее описание. Событие `end` наступает при окончании получения данных из потока.
+Для получения данных о найденных файлах используется поток (stream). Когда порция данных получена, генерируется событие `data` и [информация о найденном файле](#Выходные-данные) добавляется в массив `files`. При возникновении ошибки `bem-walk` прекращает обработку запроса и возвращает ответ, содержащий идентификатор ошибки и ее описание. Событие `end` наступает при окончании получения данных из потока.
```js
var files = [];
var stream = walk(levels, config);
-
-stream.on('data', file => files.push(file)); // добавляем информацию о найденном файле в конец массива files
+// добавляем информацию о найденном файле в конец массива files
+stream.on('data', file => files.push(file));
stream.on('error', console.error);
stream.on('end', () => console.log(files));
```
-[Подробнее о возвращаемых данных](#Выходные-данные).
-
В результате выполненных действий полный код JavaScript-файла должен иметь следующий вид:
```js
@@ -129,8 +133,12 @@ var walk = require('bem-walk'),
config = {
// уровни проекта
levels: {
- 'lib/bem-core/common.blocks': { naming: 'origin' },
- 'common.blocks': { naming: 'origin' }
+ 'lib/bem-core/common.blocks': {
+ naming: 'origin'
+ },
+ 'common.blocks': {
+ naming: 'origin'
+ }
}
},
levels = [
@@ -191,8 +199,12 @@ var walk = require('bem-walk'),
config = {
// уровни проекта
levels: {
- 'lib/bem-components/common.blocks': { naming: 'origin' },
- 'common.blocks': { naming: 'origin' }
+ 'lib/bem-components/common.blocks': {
+ naming: 'origin'
+ },
+ 'common.blocks': {
+ naming: 'origin'
+ }
}
},
groups = {};
@@ -207,7 +219,9 @@ stream.on('data', file => (groups[file.entity.block] = []).push(file));
stream.on('error', console.error);
-stream.on('end', () => console.log(util.inspect(groups, { depth: null })));
+stream.on('end', () => console.log(util.inspect(groups, {
+ depth: null
+})));
/*
{ button:
@@ -226,10 +240,14 @@ stream.on('end', () => console.log(util.inspect(groups, { depth: null })));
```js
var walk = require('bem-walk'),
config = {
- // уровни проекта
+ // уровни проекта
levels: {
- 'lib/bem-components/common.blocks': { naming: 'origin' },
- 'common.blocks': { naming: 'origin' }
+ 'lib/bem-components/common.blocks': {
+ naming: 'origin'
+ },
+ 'common.blocks': {
+ naming: 'origin'
+ }
}
},
files = [];
@@ -242,7 +260,7 @@ var stream = walk([
stream.on('data', function(file) {
if (file.entity.block == 'popup') {
files.push(file);
- }
+ }
});
stream.on('error', console.error);
@@ -269,8 +287,12 @@ var walk = require('bem-walk'),
config = {
// уровни проекта
levels: {
- 'lib/bem-components/common.blocks': { naming: 'origin' },
- 'common.blocks': { naming: 'origin' }
+ 'lib/bem-components/common.blocks': {
+ naming: 'origin'
+ },
+ 'common.blocks': {
+ naming: 'origin'
+ }
}
};
@@ -279,18 +301,16 @@ var stream = walk([
'common.blocks'
], config);
-stream.pipe(through2.obj(function (file, enc, callback) {
- // Создание свойства source объекта file
- if(fs.statSync(file.path).isFile()) {
- file.source = fs.readFileSync(file.path, 'utf-8');
- }
-
- this.push(file);
- callback();
-}))
+stream.pipe(through2.obj(function(file, enc, callback) {
+ if (fs.statSync(file.path).isFile()) {
+ // Создание свойства source объекта file
+ file.source = fs.readFileSync(file.path, 'utf-8');
+ }
+ this.push(file);
+ callback();
+ }))
.pipe(stringify())
.pipe(process.stdout);
-
/*
[{"entity":{"block":"search","elem":"header"},
"tech":"css",
From 2d476049d505bb42e1df8818fec67ad0a6741b4a Mon Sep 17 00:00:00 2001
From: godfreyd <“sergei-b84@bk.ru”>
Date: Mon, 29 Aug 2016 12:58:57 +0300
Subject: [PATCH 32/38] Changed the description
---
README.ru.md | 26 +++++++++++++++-----------
1 file changed, 15 insertions(+), 11 deletions(-)
diff --git a/README.ru.md b/README.ru.md
index 903bb87..a638edd 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -1,10 +1,6 @@
# bem-walk
-Инструмент позволяет обойти файловую систему БЭМ-проекта и получить следующую информацию о найденных файлах:
-
-* тип БЭМ-сущности (Блок, Элемент, Модификатор);
-* технология реализации;
-* расположение на файловой системе.
+Инструмент для обхода файловой системы БЭМ-проекта.
[![NPM Status][npm-img]][npm]
[![Travis Status][test-img]][travis]
@@ -27,6 +23,12 @@
[david]: https://david-dm.org/bem-sdk/bem-walk
[david-img]: http://img.shields.io/david/bem-sdk/bem-walk.svg?style=flat
+Bem-walk позволяет получить следующую информацию о найденных файлах:
+
+* тип БЭМ-сущности (Блок, Элемент, Модификатор);
+* технология реализации;
+* расположение на файловой системе.
+
## Быстрый старт
**Примечание** Для работы с `bem-walk` требуется установить Node.js 4.0+.
@@ -47,7 +49,7 @@ var walk = require('bem-walk');
### 3. Опишите уровни файловой системы
-Опишите уровни файловой системы проекта в объекте `config`.
+Опишите уровни файловой системы проекта в объекте `config`, созданного на шаге №2 файла.
```js
var config = {
@@ -67,10 +69,12 @@ var config = {
**Примечание** Для каждого уровня указывается схема именования файлов либо организации файловой системы. Это позволяет при обходе получать информацию о БЭМ-сущностях [по их именам](https://ru.bem.info/toolbox/sdk/bem-naming/#Строковое-представление) или по именам файлов и директорий.
-| Схема | Значение по умолчанию | Все возможные значения |
-|----------|-----|----------|
-|`naming` — схема именования файлов.|`origin`| `origin`, `two-dashes`|
-|`sheme` — cхема файловой системы.|`nested`|`nested`, `flat`|
+Описание возможных значений, которые можно задать для каждой из схем, представлено в таблице.
+
+| Ключ | Схема | Значение по умолчанию | Все возможные значения |
+|----|------|-----|----------|
+| `naming` | Именования файлов.|`origin`| `origin`, `two-dashes`|
+| `scheme` | Файловой системы.|`nested`|`nested`, `flat`|
Подробнее:
* [bem-naming](https://ru.bem.info/toolbox/sdk/bem-naming/)
@@ -168,7 +172,7 @@ stream.on('end', () => console.log(files));
#### Входные параметры
-Требования к поиску определяются параметрами `levels` и `config`. Параметры нельзя передавать в любой последовательности.
+Требования к поиску определяются параметрами `levels` и `config`.
| Параметр | Тип | Описание |
|----------|-----|----------|
From ac26adc1e49b746c9f97329a5648c6d0b6825031 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E2=80=9Cgodfreyd=E2=80=9D?= <“sergei-b84@bk.ru”>
Date: Wed, 31 Aug 2016 23:59:52 +0300
Subject: [PATCH 33/38] corrections from blond - part 1
---
README.ru.md | 62 ++++++++++++++++++++++++++++------------------------
1 file changed, 34 insertions(+), 28 deletions(-)
diff --git a/README.ru.md b/README.ru.md
index a638edd..ef6cc57 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -23,10 +23,10 @@
[david]: https://david-dm.org/bem-sdk/bem-walk
[david-img]: http://img.shields.io/david/bem-sdk/bem-walk.svg?style=flat
-Bem-walk позволяет получить следующую информацию о найденных файлах:
+`bem-walk` возвращает следующую информацию о найденных файлах:
-* тип БЭМ-сущности (Блок, Элемент, Модификатор);
-* технология реализации;
+* тип БЭМ-сущности ([Блок](https://ru.bem.info/methodology/key-concepts/#Блок), [Элемент](https://ru.bem.info/methodology/key-concepts/#Элемент) или [Модификатор](https://ru.bem.info/methodology/key-concepts/#Модификатор));
+* [технология реализации](https://ru.bem.info/methodology/key-concepts/#Технология-реализации);
* расположение на файловой системе.
## Быстрый старт
@@ -44,7 +44,7 @@ $ npm install --save bem-walk
Создайте JavaScript-файл с произвольным именем и добавьте строку следующего вида:
```js
-var walk = require('bem-walk');
+const walk = require('bem-walk');
```
### 3. Опишите уровни файловой системы
@@ -52,7 +52,7 @@ var walk = require('bem-walk');
Опишите уровни файловой системы проекта в объекте `config`, созданного на шаге №2 файла.
```js
-var config = {
+const config = {
// уровни проекта
levels: {
'lib/bem-core/common.blocks': {
@@ -71,7 +71,7 @@ var config = {
Описание возможных значений, которые можно задать для каждой из схем, представлено в таблице.
-| Ключ | Схема | Значение по умолчанию | Все возможные значения |
+| Ключ | Схема | Значение по умолчанию | Возможные значения |
|----|------|-----|----------|
| `naming` | Именования файлов.|`origin`| `origin`, `two-dashes`|
| `scheme` | Файловой системы.|`nested`|`nested`, `flat`|
@@ -83,9 +83,9 @@ var config = {
**Примечание** Чтобы не определять уровни проекта вручную, воспользуйтесь инструментом [`bem-config`](https://ru.bem.info/toolbox/sdk/bem-config/).
```js
-var config = require('bem-config')();
-var levelMap = config.levelMapSync();
-var stream = walk(levels, levelMap);
+const config = require('bem-config')();
+const levelMap = config.levelMapSync();
+const stream = walk(levels, levelMap);
```
### 4. Опишите пути обхода
@@ -97,7 +97,7 @@ var stream = walk(levels, levelMap);
* Относительно корневого каталога.
```js
- var levels = [
+ const levels = [
'libs/bem-core/common.blocks',
'common.blocks'
];
@@ -106,7 +106,7 @@ var stream = walk(levels, levelMap);
* Абсолютные.
```js
- var levels = [
+ const levels = [
'/path/to/project/lib/bem-core/common.blocks',
'/path/to/project/common.blocks'
];
@@ -119,9 +119,9 @@ var stream = walk(levels, levelMap);
Для получения данных о найденных файлах используется поток (stream). Когда порция данных получена, генерируется событие `data` и [информация о найденном файле](#Выходные-данные) добавляется в массив `files`. При возникновении ошибки `bem-walk` прекращает обработку запроса и возвращает ответ, содержащий идентификатор ошибки и ее описание. Событие `end` наступает при окончании получения данных из потока.
```js
-var files = [];
+const files = [];
-var stream = walk(levels, config);
+const stream = walk(levels, config);
// добавляем информацию о найденном файле в конец массива files
stream.on('data', file => files.push(file));
@@ -133,7 +133,7 @@ stream.on('end', () => console.log(files));
В результате выполненных действий полный код JavaScript-файла должен иметь следующий вид:
```js
-var walk = require('bem-walk'),
+const walk = require('bem-walk'),
config = {
// уровни проекта
levels: {
@@ -151,7 +151,7 @@ var walk = require('bem-walk'),
],
files = [];
-var stream = walk(levels, config);
+const stream = walk(levels, config);
stream.on('data', file => files.push(file));
@@ -198,8 +198,10 @@ stream.on('end', () => console.log(files));
### Группировка
+> Группируем найденные файлы по имени блока.
+
```js
-var walk = require('bem-walk'),
+const walk = require('bem-walk'),
config = {
// уровни проекта
levels: {
@@ -214,7 +216,7 @@ var walk = require('bem-walk'),
groups = {};
const util = require('util');
-var stream = walk([
+const stream = walk([
'libs/bem-components/common.blocks',
'common.blocks'
], config);
@@ -241,9 +243,11 @@ stream.on('end', () => console.log(util.inspect(groups, {
### Фильтрация
+> Находим файлы блока `popup`.
+
```js
-var walk = require('bem-walk'),
- config = {
+const walk = require('bem-walk'),
+ const config = {
// уровни проекта
levels: {
'lib/bem-components/common.blocks': {
@@ -253,10 +257,10 @@ var walk = require('bem-walk'),
naming: 'origin'
}
}
- },
- files = [];
+ };
+const files = [];
-var stream = walk([
+const stream = walk([
'libs/bem-components/common.blocks',
'common.blocks'
], config);
@@ -283,12 +287,14 @@ stream.on('end', () => console.log(files));
### Трансформация
+> Находим БЭМ-файлы, читаем их содержимое и создаем новое свойство `source`.
+
```js
-var walk = require('bem-walk'),
- stringify = require('JSONStream').stringify,
- through2 = require('through2'),
- fs = require('fs'),
- config = {
+const walk = require('bem-walk'),
+const stringify = require('JSONStream').stringify,
+const through2 = require('through2'),
+const fs = require('fs'),
+const config = {
// уровни проекта
levels: {
'lib/bem-components/common.blocks': {
@@ -300,7 +306,7 @@ var walk = require('bem-walk'),
}
};
-var stream = walk([
+const stream = walk([
'libs/bem-components/common.blocks',
'common.blocks'
], config);
From 3ce532fe678ec413079f4c982a9005c588ea1b7c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E2=80=9Cgodfreyd=E2=80=9D?= <“sergei-b84@bk.ru”>
Date: Fri, 2 Sep 2016 11:58:08 +0300
Subject: [PATCH 34/38] corrections from blond - part 2
---
README.ru.md | 159 ++++++++++++++++++++++-----------------------------
1 file changed, 67 insertions(+), 92 deletions(-)
diff --git a/README.ru.md b/README.ru.md
index ef6cc57..e97b705 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -133,33 +133,24 @@ stream.on('end', () => console.log(files));
В результате выполненных действий полный код JavaScript-файла должен иметь следующий вид:
```js
-const walk = require('bem-walk'),
- config = {
- // уровни проекта
- levels: {
- 'lib/bem-core/common.blocks': {
- naming: 'origin'
- },
- 'common.blocks': {
- naming: 'origin'
- }
- }
- },
- levels = [
- 'libs/bem-core/common.blocks',
- 'common.blocks'
- ],
- files = [];
-
-const stream = walk(levels, config);
-
-stream.on('data', file => files.push(file));
-
-stream.on('error', console.error);
+const walk = require('bem-walk');
+const config = require('bem-config')();
+const levels = [
+ 'libs/bem-components/common.blocks',
+ 'common.blocks'
+];
+const files = [];
-stream.on('end', () => console.log(files));
+const stream = walk(levels, {
+ levels: config.levelMapSync()
+ })
+ .on('data', file => files.push(file))
+ .on('error', console.error)
+ .on('end', () => console.log(files));
```
+**Примечание** В примере используется пакет `bem-config`.
+
## API
### Метод walk
@@ -201,33 +192,29 @@ stream.on('end', () => console.log(files));
> Группируем найденные файлы по имени блока.
```js
-const walk = require('bem-walk'),
- config = {
- // уровни проекта
- levels: {
- 'lib/bem-components/common.blocks': {
- naming: 'origin'
- },
- 'common.blocks': {
- naming: 'origin'
- }
- }
- },
- groups = {};
+const walk = require('bem-walk');
+const config = require('bem-config')();
const util = require('util');
-
-const stream = walk([
+const levels = [
'libs/bem-components/common.blocks',
'common.blocks'
-], config);
-
-stream.on('data', file => (groups[file.entity.block] = []).push(file));
-
-stream.on('error', console.error);
-
-stream.on('end', () => console.log(util.inspect(groups, {
- depth: null
-})));
+];
+const groups = {};
+
+const stream = walk(levels, {
+ levels: config.levelMapSync()
+ })
+ .on('data', file => {
+ // Получаем имя блока для найденного файла.
+ const block = file.entity.block;
+
+ // Добавляем информацию о найденном файле.
+ (groups[block] = []).push(file);
+ })
+ .on('error', console.error)
+ .on('end', () => console.log(util.inspect(groups, {
+ depth: null
+ })));
/*
{ button:
@@ -246,34 +233,28 @@ stream.on('end', () => console.log(util.inspect(groups, {
> Находим файлы блока `popup`.
```js
-const walk = require('bem-walk'),
- const config = {
- // уровни проекта
- levels: {
- 'lib/bem-components/common.blocks': {
- naming: 'origin'
- },
- 'common.blocks': {
- naming: 'origin'
- }
- }
- };
-const files = [];
-
-const stream = walk([
+const walk = require('bem-walk');
+const config = require('bem-config')();
+const levels = [
'libs/bem-components/common.blocks',
'common.blocks'
-], config);
+];
+const files = [];
-stream.on('data', function(file) {
- if (file.entity.block == 'popup') {
- files.push(file);
- }
-});
+const stream = walk(levels, {
+ levels: config.levelMapSync()
+ })
+ .on('data', file => {
+ // Получаем имя блока для найденного файла.
+ const block = file.entity.block;
-stream.on('error', console.error);
-
-stream.on('end', () => console.log(files));
+ // Добавляем информацию о найденном файле.
+ if (block == 'popup') {
+ files.push(file);
+ }
+ })
+ .on('error', console.error)
+ .on('end', () => console.log(files));
/*
[{ entity: { block: 'popup', modName: 'target', modVal: true },
@@ -290,32 +271,26 @@ stream.on('end', () => console.log(files));
> Находим БЭМ-файлы, читаем их содержимое и создаем новое свойство `source`.
```js
-const walk = require('bem-walk'),
-const stringify = require('JSONStream').stringify,
-const through2 = require('through2'),
-const fs = require('fs'),
-const config = {
- // уровни проекта
- levels: {
- 'lib/bem-components/common.blocks': {
- naming: 'origin'
- },
- 'common.blocks': {
- naming: 'origin'
- }
- }
- };
-
-const stream = walk([
+const fs = require('fs');
+const walk = require('bem-walk');
+const config = require('bem-config')();
+const stringify = require('JSONStream').stringify;
+const through2 = require('through2');
+const levels = [
'libs/bem-components/common.blocks',
'common.blocks'
-], config);
+];
+
+const stream = walk(levels, {
+ levels: config.levelMapSync()
+ })
+ .pipe(through2.obj(function(file, enc, callback) {
-stream.pipe(through2.obj(function(file, enc, callback) {
if (fs.statSync(file.path).isFile()) {
- // Создание свойства source объекта file
+ // Записываем содержимое файла в поле `source`.
file.source = fs.readFileSync(file.path, 'utf-8');
}
+
this.push(file);
callback();
}))
From 627b9eb1bbadfc35806954d2d90060d448019986 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E2=80=9Cgodfreyd=E2=80=9D?= <“sergei-b84@bk.ru”>
Date: Fri, 2 Sep 2016 12:46:14 +0300
Subject: [PATCH 35/38] changed sentence on 26 line
---
README.ru.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.ru.md b/README.ru.md
index e97b705..5192492 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -23,7 +23,7 @@
[david]: https://david-dm.org/bem-sdk/bem-walk
[david-img]: http://img.shields.io/david/bem-sdk/bem-walk.svg?style=flat
-`bem-walk` возвращает следующую информацию о найденных файлах:
+Возвращает следующую информацию о найденных файлах:
* тип БЭМ-сущности ([Блок](https://ru.bem.info/methodology/key-concepts/#Блок), [Элемент](https://ru.bem.info/methodology/key-concepts/#Элемент) или [Модификатор](https://ru.bem.info/methodology/key-concepts/#Модификатор));
* [технология реализации](https://ru.bem.info/methodology/key-concepts/#Технология-реализации);
From b68ee1f44586cd6195ddd5cbba09321d76309d71 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E2=80=9Cgodfreyd=E2=80=9D?= <“sergei-b84@bk.ru”>
Date: Fri, 2 Sep 2016 12:58:32 +0300
Subject: [PATCH 36/38] added note
---
README.ru.md | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/README.ru.md b/README.ru.md
index 5192492..4770fb3 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -47,9 +47,11 @@ $ npm install --save bem-walk
const walk = require('bem-walk');
```
+**Примечание** Созданный JavaScript-файл будет использоваться для всех последующих шагов.
+
### 3. Опишите уровни файловой системы
-Опишите уровни файловой системы проекта в объекте `config`, созданного на шаге №2 файла.
+Опишите уровни файловой системы проекта в объекте `config`.
```js
const config = {
From 387e909cebdb0995f0fd2755991ec0579d88438a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E2=80=9Cgodfreyd=E2=80=9D?= <“sergei-b84@bk.ru”>
Date: Fri, 2 Sep 2016 13:00:20 +0300
Subject: [PATCH 37/38] deleted note
---
README.ru.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.ru.md b/README.ru.md
index 4770fb3..c48f416 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -69,7 +69,7 @@ const config = {
};
```
-**Примечание** Для каждого уровня указывается схема именования файлов либо организации файловой системы. Это позволяет при обходе получать информацию о БЭМ-сущностях [по их именам](https://ru.bem.info/toolbox/sdk/bem-naming/#Строковое-представление) или по именам файлов и директорий.
+Для каждого уровня указывается схема именования файлов либо организации файловой системы. Это позволяет при обходе получать информацию о БЭМ-сущностях [по их именам](https://ru.bem.info/toolbox/sdk/bem-naming/#Строковое-представление) или по именам файлов и директорий.
Описание возможных значений, которые можно задать для каждой из схем, представлено в таблице.
From f3110c0ad4669dbcf010fb8b3084ad7b6ef339f8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E2=80=9Cgodfreyd=E2=80=9D?= <“sergei-b84@bk.ru”>
Date: Thu, 15 Sep 2016 15:19:38 +0300
Subject: [PATCH 38/38] added try/catch
---
README.ru.md | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/README.ru.md b/README.ru.md
index c48f416..d7f95b0 100644
--- a/README.ru.md
+++ b/README.ru.md
@@ -131,6 +131,7 @@ stream.on('error', console.error);
stream.on('end', () => console.log(files));
```
+### Полный код примера
В результате выполненных действий полный код JavaScript-файла должен иметь следующий вид:
@@ -287,14 +288,17 @@ const stream = walk(levels, {
levels: config.levelMapSync()
})
.pipe(through2.obj(function(file, enc, callback) {
-
- if (fs.statSync(file.path).isFile()) {
- // Записываем содержимое файла в поле `source`.
- file.source = fs.readFileSync(file.path, 'utf-8');
+ try {
+ // Некоторые технологии (например, `i18n`) могут быть директориями, а не файлами.
+ if (fs.statSync(file.path).isFile()) {
+ // Записываем содержимое файла в поле `source`.
+ file.source = fs.readFileSync(file.path, 'utf-8');
+ this.push(file);
+ }
+
+ } catch (err) {
+ callback(err);
}
-
- this.push(file);
- callback();
}))
.pipe(stringify())
.pipe(process.stdout);