bemer 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f081d85127046ac29d85d4dcffc832af6fc5c1e4ad49a2248b0502f3d0c17b26
4
- data.tar.gz: f0be9ccbdaf778a2ec2c4f01d533d12da6a687d3f152f007e3659c689bfc3985
3
+ metadata.gz: 8d14fafeea2e51e9af1a6302e7b2c2615442c329edf9d02710363d760fa9b81c
4
+ data.tar.gz: 486f4bca3457d1b287f4dfe3b88a2d6443f025a6a7aa2e141e2c71f9a5732622
5
5
  SHA512:
6
- metadata.gz: c0155b1372465945e5090b8a205e155a26fe6af51291b8a47591dc2a36e697ff73e1943ec3acd1c183a0f320760f159b99e51f524acda1e1920d08e213eb0ebe
7
- data.tar.gz: a5ee0ef203901272ef8df243f9dfd1246451cf742ac98bc05ab73369ec42460de0fbd58dbf33e49ddb7eb255edf398c6885fb8044d5fb71765f61985921549ea
6
+ metadata.gz: 4734a3841499b7c912640b62cc73bfb912b649d3aa283e2b98d6800c311d2b51e93e1a08296994b9db47c6b57dc4e4064db8a2fd12ee4b693cf59dfad9c95200
7
+ data.tar.gz: e75023ee5ced51f2063f4b022e6d932a4841396390556b15318677ab1e3b3fbd1d415de8cfd087891cd06d76ae83f246960c0eac872a7a528e9535da012e98a0
data/README.md CHANGED
@@ -8,15 +8,16 @@
8
8
  ## Дополнительно
9
9
 
10
10
  1. Статья на Хабре - [Переиспользуемые UI компоненты в приложениях на Ruby on Rails](https://habrahabr.ru/post/352938/).
11
- 1. [bemer-bootstrap](https://github.com/vill/bemer-bootstrap) - переиспользуемые компоненты Bootstrap v3.
12
- 1. [Пример приложения](https://github.com/vill/bemer-example) с использованием `bemer` и [bemer-bootstrap](https://github.com/vill/bemer-bootstrap).
11
+ 1. [`bemer-simple_form`](https://github.com/vill/bemer-simple_form) - Использование соглашений из БЭМ методологии в формах `SimpleForm`.
12
+ 1. [`bemer-bootstrap`](https://github.com/vill/bemer-bootstrap) - переиспользуемые компоненты Bootstrap v3.
13
+ 1. [Пример приложения](https://github.com/vill/bemer-example) с использованием `bemer` и [`bemer-bootstrap`](https://github.com/vill/bemer-bootstrap).
13
14
 
14
15
  ## Установка
15
16
 
16
17
  Добавить в `Gemfile`:
17
18
 
18
19
  ```ruby
19
- gem 'bemer', '~> 0.2.0'
20
+ gem 'bemer'
20
21
  ```
21
22
 
22
23
  Выполнить в терминале команду:
@@ -25,6 +26,226 @@ gem 'bemer', '~> 0.2.0'
25
26
 
26
27
  ## Использование
27
28
 
29
+ ### Конфигурация
30
+
31
+ [Конфигурация](docs/%D0%9A%D0%BE%D0%BD%D1%84%D0%B8%D0%B3%D1%83%D1%80%D0%B0%D1%86%D0%B8%D1%8F.md) для `Bemer`:
32
+
33
+ ```ruby
34
+ # config/initializers/bemer.rb
35
+
36
+ Bemer.setup do |config|
37
+ config.bem = true
38
+ config.modifier_name_separator = '--'
39
+ config.path = 'app/frontend/components' # или Webpacker.config.source_path
40
+ # config.default_path_prefix = lambda { |path, view|
41
+ # view.controller.class.name.split('::')[0].underscore
42
+ # }
43
+ end
44
+ ```
45
+
46
+ Если используется [`Webpacker`](https://github.com/rails/webpacker):
47
+
48
+ ```yml
49
+ # config/webpacker.yml
50
+
51
+ default: &default
52
+ source_path: app/frontend/components
53
+ source_entry_path: ../packs
54
+ public_output_path: frontend/assets
55
+ # ...
56
+
57
+ development:
58
+ <<: *default
59
+ # ...
60
+
61
+ test:
62
+ <<: *default
63
+ # ...
64
+
65
+ production:
66
+ <<: *default
67
+ # ...
68
+ ```
69
+
70
+ ### Файловая структура
71
+
72
+ Пример [файловой структуры](docs/%D0%A4%D0%B0%D0%B8%CC%86%D0%BB%D0%BE%D0%B2%D0%B0%D1%8F-%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0.md) при использовании [`Sprockets`](https://github.com/rails/sprockets-rails):
73
+ ```
74
+ app/
75
+ ├── assets/
76
+ | ├── javascripts/
77
+ | | ├── admin_panel/
78
+ | | | ├── application.js
79
+ | | | └── ...
80
+ | | ├── landing/
81
+ | | | ├── application.js
82
+ | | | └── ...
83
+ | | ├── user_panel/
84
+ | | | ├── application.js
85
+ | | | └── ...
86
+ | | └── ...
87
+ | ├── stylesheets/
88
+ | | ├── admin_panel/
89
+ | | | ├── application.scss
90
+ | | | └── ...
91
+ | | ├── landing/
92
+ | | | ├── application.scss
93
+ | | | └── ...
94
+ | | ├── user_panel/
95
+ | | | ├── application.scss
96
+ | | | └── ...
97
+ | | └── ...
98
+ | └── ...
99
+ ├── frontend/
100
+ | ├── components/
101
+ | | ├── common/
102
+ | | | ├── carousel/
103
+ | | | | ├── index.slim
104
+ | | | | ├── index.bemhtml.slim
105
+ | | | | ├── index.js
106
+ | | | | ├── index.scss
107
+ | | | | └── ...
108
+ | | | ├── form/
109
+ | | | | ├── error_messages_elem/
110
+ | | | | | ├── index.slim
111
+ | | | | | ├── index.js
112
+ | | | | | ├── index.scss
113
+ | | | | | └── ...
114
+ | | | | ├── locales/
115
+ | | | | | ├── en.yml
116
+ | | | | | └── ...
117
+ | | | | ├── index.slim
118
+ | | | | ├── base.rb
119
+ | | | | ├── index.js
120
+ | | | | ├── index.scss
121
+ | | | | └── ...
122
+ | | | └── ...
123
+ | | ├── admin_panel/
124
+ | | | └── ...
125
+ | | ├── landing/
126
+ | | | └── ...
127
+ | | ├── user_panel/
128
+ | | | └── ...
129
+ | | └── ...
130
+ | └── ...
131
+ └── ...
132
+ ```
133
+ Пример [файловой структуры](docs/%D0%A4%D0%B0%D0%B8%CC%86%D0%BB%D0%BE%D0%B2%D0%B0%D1%8F-%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0.md) при использовании [`Webpacker`](https://github.com/rails/webpacker):
134
+ ```
135
+ app/
136
+ ├── frontend/
137
+ | ├── components/
138
+ | | ├── common/
139
+ | | | ├── carousel/
140
+ | | | | ├── index.slim
141
+ | | | | ├── index.bemhtml.slim
142
+ | | | | ├── index.js
143
+ | | | | ├── index.scss
144
+ | | | | └── ...
145
+ | | | ├── form/
146
+ | | | | ├── error_messages_elem/
147
+ | | | | | ├── index.slim
148
+ | | | | | ├── index.js
149
+ | | | | | ├── index.scss
150
+ | | | | | └── ...
151
+ | | | | ├── locales/
152
+ | | | | | ├── en.yml
153
+ | | | | | └── ...
154
+ | | | | ├── index.slim
155
+ | | | | ├── base.rb
156
+ | | | | ├── index.js
157
+ | | | | ├── index.scss
158
+ | | | | └── ...
159
+ | | | └── ...
160
+ | | ├── admin_panel/
161
+ | | | └── ...
162
+ | | ├── landing/
163
+ | | | └── ...
164
+ | | ├── user_panel/
165
+ | | | └── ...
166
+ | | └── ...
167
+ | ├── packs/
168
+ | | ├── admin_panel/
169
+ | | | ├── application.js
170
+ | | | └── ...
171
+ | | ├── landing/
172
+ | | | ├── application.js
173
+ | | | └── ...
174
+ | | ├── user_panel/
175
+ | | | ├── application.js
176
+ | | | └── ...
177
+ | | └── ...
178
+ | └── ...
179
+ └── ...
180
+ ```
181
+ ### Создание `HTML` структуры компонента
182
+
183
+ #### Простой компонент
184
+ Структура компонента [Сarousel из Bootstrap](https://getbootstrap.com/docs/4.3/components/carousel/#with-indicators):
185
+
186
+ ```slim
187
+ / app/frontend/components/common/carousel/index.slim
188
+
189
+ .carousel.slide data-ride="carousel" class=local_assigns[:cls]
190
+ ol.carousel-indicators
191
+ - image_urls.size.times do |i|
192
+ li data-target=".carousel" class=(:active if i.zero?) data-slide-to=i
193
+ .carousel-inner
194
+ - image_urls.each_with_index do |image_url, i|
195
+ .carousel-item class=(:active if i.zero?)
196
+ = image_tag image_url, class: 'd-block w-100'
197
+ a.carousel-control-prev data-slide="prev" data-target='.carousel' role="button"
198
+ span.carousel-control-prev-icon aria-hidden="true"
199
+ span.sr-only Предыдущий
200
+ a.carousel-control-next data-slide="next" data-target='.carousel' role="button"
201
+ span.carousel-control-next-icon aria-hidden="true"
202
+ span.sr-only Следующий
203
+ ```
204
+ [Вызов компонента](docs/%D0%A5%D0%B5%D0%BB%D0%BF%D0%B5%D1%80-render_component.md) `carousel` в любом представлении или в [других компонентах](docs/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B8-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-UI-%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82.md):
205
+ ```slim
206
+ = render_component :carousel, prefix: :common, image_urls: image_urls, cls: 'carousel-fade'
207
+ ```
208
+
209
+ #### Компонент к которому можно применять `BEMHTML` шаблоны
210
+
211
+ Структура компонента [Сarousel из Bootstrap](https://getbootstrap.com/docs/4.3/components/carousel/#with-indicators):
212
+
213
+ ```slim
214
+ / app/frontend/components/common/carousel/index.slim
215
+
216
+ = define_component do |component|
217
+ = component.block :carousel, 'data-ride': :carousel, 'data-interval': false, cls: :slide do |carousel|
218
+ = carousel.elem :indicators, tag: :ol, cls: 'carousel-indicators'
219
+ - image_urls.size.times do |i|
220
+ = carousel.elem :indicator, tag: :li, 'data-slide-to': i, mods: (:active if i.zero?), 'data-target': '.carousel'
221
+ = carousel.elem :inner, cls: 'carousel-inner'
222
+ - image_urls.each_with_index do |image_url, i|
223
+ = carousel.elem :item, cls: 'carousel-item', mods: (:active if i.zero?)
224
+ = carousel.elem :image, tag: :img, cls: 'd-block w-100', src: image_url
225
+ = carousel.elem :control_prev, tag: :a, cls: 'carousel-control-prev', 'data-slide': :prev, role: :button, 'data-target': '.carousel'
226
+ span.carousel-control-prev-icon aria-hidden="true"
227
+ span.sr-only Предыдущий
228
+ = carousel.elem :control_next, tag: :a, cls: 'carousel-control-next', 'data-slide': :next, role: :button, 'data-target': '.carousel'
229
+ span.carousel-control-next-icon aria-hidden="true"
230
+ span.sr-only Следующий
231
+ ```
232
+
233
+ [Шаблон по умолчанию](docs/%D0%A5%D0%B5%D0%BB%D0%BF%D0%B5%D1%80-define_templates.md):
234
+ ```slim
235
+ / app/frontend/components/common/carousel/index.bemhtml.slim
236
+
237
+ = define_templates do |template|
238
+ = template.elem(mods: :active).add_cls :active
239
+ ```
240
+
241
+ [Вызов компонента](docs/%D0%A5%D0%B5%D0%BB%D0%BF%D0%B5%D1%80-render_component.md) `carousel` в любом представлении или в [других компонентах](docs/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B8-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-UI-%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82.md) с применением [`BEMHTML`](docs/BEMHTML.md) [шаблонов](docs/%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B.md):
242
+ ```slim
243
+ = render_component :carousel, prefix: :common, image_urls: image_urls do |template|
244
+ = template.block(:carousel).add_mix :carousel_fade
245
+ ```
246
+
247
+ ## Документация
248
+
28
249
  1. [Файловая структура](docs/%D0%A4%D0%B0%D0%B8%CC%86%D0%BB%D0%BE%D0%B2%D0%B0%D1%8F-%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0.md)
29
250
  1. [Конфигурация](docs/%D0%9A%D0%BE%D0%BD%D1%84%D0%B8%D0%B3%D1%83%D1%80%D0%B0%D1%86%D0%B8%D1%8F.md)
30
251
  1. [Создание и использование UI компонент](docs/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B8-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-UI-%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82.md)
@@ -37,6 +258,7 @@ gem 'bemer', '~> 0.2.0'
37
258
  1. [`component_asset_path`](docs/%D0%A5%D0%B5%D0%BB%D0%BF%D0%B5%D1%80-component_asset_path.md)
38
259
  1. [`component_partial_path`](docs/%D0%A5%D0%B5%D0%BB%D0%BF%D0%B5%D1%80-component_partial_path.md)
39
260
  1. Дополнительные хелперы для БЭМ методологии
261
+ 1. [`bem_attrs_for`](docs/%D0%A5%D0%B5%D0%BB%D0%BF%D0%B5%D1%80-bem_attrs_for.md)
40
262
  1. [`bem_mix`](docs/%D0%A5%D0%B5%D0%BB%D0%BF%D0%B5%D1%80-bem_mix.md)
41
263
  1. [`bem_mods`](docs/%D0%A5%D0%B5%D0%BB%D0%BF%D0%B5%D1%80-bem_mods.md)
42
264
  1. [`block_tag`](docs/%D0%A5%D0%B5%D0%BB%D0%BF%D0%B5%D1%80-block_tag.md)
@@ -49,9 +271,10 @@ gem 'bemer', '~> 0.2.0'
49
271
 
50
272
  ## Ссылки
51
273
 
52
- 1. https://ru.bem.info/methodology/
53
- 1. https://github.com/bem/bem-xjst
54
- 1. https://github.com/bem-site/bem-forum-content-ru/issues
274
+ 1. BEM methodology - https://bem.info/methodology/
275
+ 1. Minimal stack for coding client-side JavaScript and templating - https://github.com/bem/bem-core
276
+ 1. Declarative template engine for the browser and server with regular JS syntax - https://github.com/bem/bem-xjst
277
+ 1. BEM Forum - https://bem.info/forum/
55
278
 
56
279
  ## Лицензия
57
280
 
@@ -125,7 +125,7 @@ HTML тег изменить на `small` если текущая сущност
125
125
 
126
126
  ### Метод `name`
127
127
 
128
- **ВАЖНО**. *При формирование названия сущности, действуют [правила преобразования знаков нижнего подчеркивания `_` в тире `-` для `Symbol` и `String`](%D0%A5%D0%B5%D0%BB%D0%BF%D0%B5%D1%80-block_tag.md#%D0%9D%D0%B0%D0%B7%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D1%81%D1%83%D1%89%D0%BD%D0%BE%D1%81%D1%82%D0%B8)*
128
+ **ВАЖНО**. *При формировании названия сущности, действуют [правила преобразования знаков нижнего подчеркивания `_` в тире `-` для `Symbol` и `String`](%D0%A5%D0%B5%D0%BB%D0%BF%D0%B5%D1%80-block_tag.md#%D0%9D%D0%B0%D0%B7%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D1%81%D1%83%D1%89%D0%BD%D0%BE%D1%81%D1%82%D0%B8)*
129
129
 
130
130
  Возвращает название сущности.
131
131
 
@@ -0,0 +1,58 @@
1
+ # Хелпер bem_attrs_for
2
+
3
+ Хелпер `bem_attrs_for` генерирует `class` и `data-bem` атрибуты для указанной сущности.
4
+
5
+ ## Допустимые параметры
6
+
7
+ `cls` (синоним `class`), `js`, `mix` и `mods`, все остальные переданные параметры с названиями не из этого списка будут считаться атрибутами, за исключением: `bem`, `bem_cascade`, `content` и `tag`.
8
+
9
+
10
+ ## Использование
11
+
12
+ ```slim
13
+ = bem_attrs_for :block, :element
14
+ / => { class: "block__element i-bem", "data-bem": "{\"block__element\":{}}" }
15
+ ```
16
+
17
+ ```slim
18
+ = bem_attrs_for :block, :element, js: { some: :value }
19
+ / => { class: "block__element i-bem", "data-bem": "{\"block__element\":{\"some\":\"value\"}}" }
20
+ ```
21
+
22
+ ```slim
23
+ = simple_form_for :form, url: '#' do |f|
24
+ = f.input :numbers, collection: (1..5).map { |n| [n, n, bem_attrs_for(:form, :number, js: { value: n })] }
25
+ = f.button :submit
26
+ / =>
27
+ / <form novalidate="novalidate" class="form" action="#" accept-charset="UTF-8" method="post">
28
+ / <!-- ... -->
29
+ / <select class="form__numbers form__numbers--select form__numbers--required" name="form[numbers]" id="form_numbers">
30
+ / <option value=""></option>
31
+ / <option class="form__number i-bem" data-bem="{&quot;form__number&quot;:{&quot;value&quot;:1}}" value="1">1</option>
32
+ / <option class="form__number i-bem" data-bem="{&quot;form__number&quot;:{&quot;value&quot;:2}}" value="2">2</option>
33
+ / <option class="form__number i-bem" data-bem="{&quot;form__number&quot;:{&quot;value&quot;:3}}" value="3">3</option>
34
+ / <option class="form__number i-bem" data-bem="{&quot;form__number&quot;:{&quot;value&quot;:4}}" value="4">4</option>
35
+ / <option class="form__number i-bem" data-bem="{&quot;form__number&quot;:{&quot;value&quot;:5}}" value="5">5</option>
36
+ / </select>
37
+ / <!-- ... -->
38
+ / </form>
39
+ ```
40
+
41
+ ```slim
42
+ = simple_form_for :form, url: '#' do |f|
43
+ = f.input :numbers, collection: (1..5).map { |n| [n, n, bem_attrs_for(:form, :number, js: false)] }
44
+ = f.button :submit
45
+ / =>
46
+ / <form novalidate="novalidate" class="form" action="#" accept-charset="UTF-8" method="post">
47
+ / <!-- ... -->
48
+ / <select class="form__numbers form__numbers--select form__numbers--required" name="form[numbers]" id="form_numbers">
49
+ / <option value=""></option>
50
+ / <option class="form__number" value="1">1</option>
51
+ / <option class="form__number" value="2">2</option>
52
+ / <option class="form__number" value="3">3</option>
53
+ / <option class="form__number" value="4">4</option>
54
+ / <option class="form__number" value="5">5</option>
55
+ / </select>
56
+ / <!-- ... -->
57
+ / </form>
58
+ ```
@@ -50,12 +50,6 @@ bem_mix 'block_name' => 'elem_name' # => 'block_name__elem_name'
50
50
  bem_mix 'block_name', 'block_name__elem' # => 'block_name block_name__elem'
51
51
  ```
52
52
 
53
- эквивалентная запись:
54
-
55
- ```ruby
56
- bem_mix 'block_name block_name__elem' # => 'block_name block_name__elem'
57
- ```
58
-
59
53
  Пустые аргументы возвращают пустую строку
60
54
  ```ruby
61
55
  bem_mix nil, '', {} # => ''
@@ -16,7 +16,7 @@ block_tag js: true, bem: true # => <div></div>
16
16
  ## Название сущности
17
17
 
18
18
  При вызове `block_tag` первым аргументом передается название блока (указывать не обязательно) допустимые типы:
19
- 1. `Symbol` ВСЕ символы нижнего подчеркивания будут преобразованы в тире, при формирование css классов по методологии БЭМ
19
+ 1. `Symbol` ВСЕ символы нижнего подчеркивания будут преобразованы в тире, при формировании css классов по методологии БЭМ
20
20
  1. `String` возвращается без изменений
21
21
 
22
22
  ```ruby
@@ -81,7 +81,7 @@ block_tag :block, cls: ['cls_1', :cls_2], bem: false # => <div class="cls_1 cls-
81
81
  Добавляет содержимое для блока.
82
82
 
83
83
  ```ruby
84
- block_tag :block, content: 'Block content' # => <div>Block content</div>
84
+ block_tag :block, content: 'Block content' # => <div class="block">Block content</div>
85
85
  ```
86
86
  Если передан `Ruby &block`, тогда параметр `content` игнорируется:
87
87
 
@@ -169,6 +169,12 @@ block_tag :block, mix: [:mix_1, block_1: :elem], bem: true
169
169
 
170
170
  block_tag :block, mix: { block_1: :elem }, bem: true
171
171
  # => <div class="block block-1__elem"></div>
172
+
173
+ block_tag :block, mix: { block_1: :elem, mods: :enabled }
174
+ # => <div class="block block-1__elem block-1__elem--enabled"></div>
175
+
176
+ block_tag :block, js: true, mix: { block_1: :elem, js: { key: :value } }
177
+ # => <div class="block block-1__elem i-bem" data-bem="{"block":{},"block-1__elem":{"key":"value"}}"></div>
172
178
  ```
173
179
 
174
180
  ### Параметр `mods`
@@ -192,7 +198,7 @@ block_tag :block, mods: { size: :small }, bem: true
192
198
 
193
199
  ```ruby
194
200
  block_tag :block, tag: :span, content: 'Block content'
195
- # => <span>Block content</span>
201
+ # => <span class="block">Block content</span>
196
202
 
197
203
  block_tag :block, tag: '', content: 'Block content'
198
204
  # => 'Block content'
@@ -202,7 +208,7 @@ block_tag :block, tag: false, content: 'Block content'
202
208
 
203
209
  # Будет использован default_block_tag из конфига
204
210
  block_tag :block, tag: nil, content: 'Block content'
205
- # => <div>Block content</div>
211
+ # => <div class="block">Block content</div>
206
212
  ```
207
213
 
208
214
  ### Атрибуты
@@ -19,7 +19,7 @@ elem_tag '', :elem, js: true, bem: true # => <div></div>
19
19
  ## Название сущности
20
20
 
21
21
  При вызове `elem_tag` первым аргументом передается название блока (указывать не обязательно), вторым название элемента (указывать не обязательно) допустимые типы:
22
- 1. `Symbol` ВСЕ символы нижнего подчеркивания будут преобразованы в тире, при формирование css классов по БЭМ методологии
22
+ 1. `Symbol` ВСЕ символы нижнего подчеркивания будут преобразованы в тире, при формировании css классов по БЭМ методологии
23
23
  1. `String` возвращается без изменений
24
24
 
25
25
  ```ruby
@@ -20,7 +20,7 @@ module Bemer
20
20
  autoload :DefaultTemplateList
21
21
  autoload :Entity
22
22
  autoload :EntityBuilder
23
- autoload :MixinList
23
+ autoload :Mixes
24
24
  autoload :ModifierList
25
25
  autoload :PathResolver
26
26
  autoload :Pipeline
@@ -44,7 +44,7 @@ module Bemer
44
44
  class << self
45
45
  extend Forwardable
46
46
 
47
- # rubocop:disable Layout/AlignParameters
47
+ # rubocop:disable Layout/AlignArguments
48
48
  def_delegators :config, :asset_paths,
49
49
  :bem,
50
50
  :can_use_new_matcher?,
@@ -57,7 +57,7 @@ module Bemer
57
57
  :path,
58
58
  :paths,
59
59
  :prepend_asset_paths
60
- # rubocop:enable Layout/AlignParameters
60
+ # rubocop:enable Layout/AlignArguments
61
61
 
62
62
  alias prepend_asset_paths? prepend_asset_paths
63
63
 
@@ -76,6 +76,7 @@ module Bemer
76
76
  end
77
77
 
78
78
  # entity_class??
79
+ # bem
79
80
  # Добавить в хелперы
80
81
  def bem_class(block, element = nil)
81
82
  return '' if block.blank? || (!element.nil? && element.blank?)