bemer 0.4.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8d14fafeea2e51e9af1a6302e7b2c2615442c329edf9d02710363d760fa9b81c
4
- data.tar.gz: 486f4bca3457d1b287f4dfe3b88a2d6443f025a6a7aa2e141e2c71f9a5732622
3
+ metadata.gz: 8c61ceea37aaaf31ca46dfc01af60ddade3b934962e5fdfbc87b8cb3be867b29
4
+ data.tar.gz: 1f56488269559e0ee07b52da4369b8a57fb33fced4204ff0ab5209e2e60a35c8
5
5
  SHA512:
6
- metadata.gz: 4734a3841499b7c912640b62cc73bfb912b649d3aa283e2b98d6800c311d2b51e93e1a08296994b9db47c6b57dc4e4064db8a2fd12ee4b693cf59dfad9c95200
7
- data.tar.gz: e75023ee5ced51f2063f4b022e6d932a4841396390556b15318677ab1e3b3fbd1d415de8cfd087891cd06d76ae83f246960c0eac872a7a528e9535da012e98a0
6
+ metadata.gz: 5d18f1a45d3ea28fbdc17ab7f854fa99ca6b2468dff970855a942eba28674cc4fb09ff8b9403aaa8da76a8b24d99480579dcd0ae78be53dfdd0fba33cca6d914
7
+ data.tar.gz: 6d9c2c5effef10213f13638cb8b19c1a4bfa5fd88d3774e2be3c12f91d8bc757836fbb8c5f435d4e6a132db1896f8178c33ddaaae079dab211c34b99d4d54373
data/LICENSE-RU.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  Лицензия MIT
2
2
 
3
- Copyright (c) 2017-2020 Александр Григорьев
3
+ Copyright (c) 2017-2023 Александр Григорьев
4
4
 
5
5
  Данная лицензия разрешает лицам, получившим копию данного программного
6
6
  обеспечения и сопутствующей документации (в дальнейшем именуемыми
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2017-2020 Alexander Grigorev
3
+ Copyright (c) 2017-2023 Alexander Grigorev
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -1,34 +1,32 @@
1
1
  # Bemer
2
2
 
3
- **ВАЖНО**. *Для работы с UI компонентами не обязательно использовать методологию БЭМ.*
3
+ 1. Build reusable UI components for Ruby on Rails applications.
4
+ 1. Develop Ruby on Rails applications using the `BEM` methodology.
4
5
 
5
- 1. Позволяет создавать переиспользуемые UI компоненты для приложений на Ruby on Rails.
6
- 1. Предоставляет функционал для разработки приложений на Ruby on Rails с использованием методологии БЭМ.
6
+ **IMPORTANT**. *Using the `BEM` methodology is optional.*
7
7
 
8
- ## Дополнительно
8
+ Additional resources:
9
9
 
10
- 1. Статья на Хабре - [Переиспользуемые UI компоненты в приложениях на Ruby on Rails](https://habrahabr.ru/post/352938/).
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).
10
+ 1. Habr article in Russian - [Переиспользуемые UI компоненты в приложениях на Ruby on Rails](https://habrahabr.ru/post/352938/).
11
+ 1. [`bemer-simple_form`](https://github.com/vill/bemer-simple_form) - Add the `BEM` methodology to your `SimpleForm` forms.
12
+ 1. [`bemer-bootstrap`](https://github.com/vill/bemer-bootstrap) - Reusable UI components of `Bootstrap`.
13
+ 1. [Ruby on Rails application](https://github.com/vill/bemer-example) using `bemer` and [`bemer-bootstrap`](https://github.com/vill/bemer-bootstrap).
14
14
 
15
- ## Установка
15
+ ## Installation
16
16
 
17
- Добавить в `Gemfile`:
17
+ Add it to your Gemfile:
18
18
 
19
19
  ```ruby
20
20
  gem 'bemer'
21
21
  ```
22
22
 
23
- Выполнить в терминале команду:
23
+ Run the following command to install it:
24
24
 
25
25
  $ bundle
26
26
 
27
- ## Использование
27
+ ## Configuration
28
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`:
29
+ See [configuration documentation](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) for details.
32
30
 
33
31
  ```ruby
34
32
  # config/initializers/bemer.rb
@@ -36,14 +34,15 @@ gem 'bemer'
36
34
  Bemer.setup do |config|
37
35
  config.bem = true
38
36
  config.modifier_name_separator = '--'
39
- config.path = 'app/frontend/components' # или Webpacker.config.source_path
37
+ config.path = 'app/frontend/components' # or Webpacker.config.source_path
40
38
  # config.default_path_prefix = lambda { |path, view|
41
39
  # view.controller.class.name.split('::')[0].underscore
42
40
  # }
43
41
  end
44
42
  ```
45
43
 
46
- Если используется [`Webpacker`](https://github.com/rails/webpacker):
44
+ ## Integrations
45
+ ### Webpacker
47
46
 
48
47
  ```yml
49
48
  # config/webpacker.yml
@@ -66,42 +65,17 @@ production:
66
65
  <<: *default
67
66
  # ...
68
67
  ```
68
+ #### File naming and folder structure
69
+ See [file naming and folder structure documentation](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) for details.
69
70
 
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
71
  ```
74
72
  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
73
  ├── frontend/
100
74
  | ├── components/
101
75
  | | ├── common/
102
76
  | | | ├── carousel/
103
77
  | | | | ├── index.slim
104
- | | | | ├── index.bemhtml.slim
78
+ | | | | ├── bemhtml.slim
105
79
  | | | | ├── index.js
106
80
  | | | | ├── index.scss
107
81
  | | | | └── ...
@@ -127,18 +101,68 @@ app/
127
101
  | | ├── user_panel/
128
102
  | | | └── ...
129
103
  | | └── ...
104
+ | ├── packs/
105
+ | | ├── admin_panel/
106
+ | | | ├── application.js
107
+ | | | └── ...
108
+ | | ├── landing/
109
+ | | | ├── application.js
110
+ | | | └── ...
111
+ | | ├── user_panel/
112
+ | | | ├── application.js
113
+ | | | └── ...
114
+ | | └── ...
130
115
  | └── ...
131
116
  └── ...
132
117
  ```
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):
118
+
119
+ ### Sprockets
120
+
121
+ You do not need to do anything, but add additional assets to the asset load path if necessary:
122
+
123
+ ```ruby
124
+ # config/initializers/bemer.rb
125
+
126
+ Bemer.setup do |config|
127
+ config.asset_paths << Rails.root.join('some/asset/path')
128
+ end
129
+ ```
130
+
131
+ ### File naming and folder structure
132
+ See [file naming and folder structure documentation](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) for details.
133
+
134
134
  ```
135
135
  app/
136
+ ├── assets/
137
+ | ├── javascripts/
138
+ | | ├── admin_panel/
139
+ | | | ├── application.js
140
+ | | | └── ...
141
+ | | ├── landing/
142
+ | | | ├── application.js
143
+ | | | └── ...
144
+ | | ├── user_panel/
145
+ | | | ├── application.js
146
+ | | | └── ...
147
+ | | └── ...
148
+ | ├── stylesheets/
149
+ | | ├── admin_panel/
150
+ | | | ├── application.scss
151
+ | | | └── ...
152
+ | | ├── landing/
153
+ | | | ├── application.scss
154
+ | | | └── ...
155
+ | | ├── user_panel/
156
+ | | | ├── application.scss
157
+ | | | └── ...
158
+ | | └── ...
159
+ | └── ...
136
160
  ├── frontend/
137
161
  | ├── components/
138
162
  | | ├── common/
139
163
  | | | ├── carousel/
140
164
  | | | | ├── index.slim
141
- | | | | ├── index.bemhtml.slim
165
+ | | | | ├── bemhtml.slim
142
166
  | | | | ├── index.js
143
167
  | | | | ├── index.scss
144
168
  | | | | └── ...
@@ -164,24 +188,15 @@ app/
164
188
  | | ├── user_panel/
165
189
  | | | └── ...
166
190
  | | └── ...
167
- | ├── packs/
168
- | | ├── admin_panel/
169
- | | | ├── application.js
170
- | | | └── ...
171
- | | ├── landing/
172
- | | | ├── application.js
173
- | | | └── ...
174
- | | ├── user_panel/
175
- | | | ├── application.js
176
- | | | └── ...
177
- | | └── ...
178
191
  | └── ...
179
192
  └── ...
180
193
  ```
181
- ### Создание `HTML` структуры компонента
182
194
 
183
- #### Простой компонент
184
- Структура компонента [Сarousel из Bootstrap](https://getbootstrap.com/docs/4.3/components/carousel/#with-indicators):
195
+ ## Usage
196
+
197
+ ### Component to which `BEMHTML` templates cannot be applied
198
+
199
+ HTML structure of the [Carousel component from Bootstrap](https://getbootstrap.com/docs/4.3/components/carousel/#with-indicators):
185
200
 
186
201
  ```slim
187
202
  / app/frontend/components/common/carousel/index.slim
@@ -196,19 +211,19 @@ app/
196
211
  = image_tag image_url, class: 'd-block w-100'
197
212
  a.carousel-control-prev data-slide="prev" data-target='.carousel' role="button"
198
213
  span.carousel-control-prev-icon aria-hidden="true"
199
- span.sr-only Предыдущий
214
+ span.sr-only Previous
200
215
  a.carousel-control-next data-slide="next" data-target='.carousel' role="button"
201
216
  span.carousel-control-next-icon aria-hidden="true"
202
- span.sr-only Следующий
217
+ span.sr-only Next
203
218
  ```
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):
219
+ [Rendering](docs/%D0%A5%D0%B5%D0%BB%D0%BF%D0%B5%D1%80-render_component.md) the `carousel` component in any view or [other UI components](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
220
  ```slim
206
221
  = render_component :carousel, prefix: :common, image_urls: image_urls, cls: 'carousel-fade'
207
222
  ```
208
223
 
209
- #### Компонент к которому можно применять `BEMHTML` шаблоны
224
+ ### Component to which `BEMHTML` templates can be applied
210
225
 
211
- Структура компонента [Сarousel из Bootstrap](https://getbootstrap.com/docs/4.3/components/carousel/#with-indicators):
226
+ Tree structure of the [Carousel component from Bootstrap](https://getbootstrap.com/docs/4.3/components/carousel/#with-indicators):
212
227
 
213
228
  ```slim
214
229
  / app/frontend/components/common/carousel/index.slim
@@ -224,32 +239,32 @@ app/
224
239
  = carousel.elem :image, tag: :img, cls: 'd-block w-100', src: image_url
225
240
  = carousel.elem :control_prev, tag: :a, cls: 'carousel-control-prev', 'data-slide': :prev, role: :button, 'data-target': '.carousel'
226
241
  span.carousel-control-prev-icon aria-hidden="true"
227
- span.sr-only Предыдущий
242
+ span.sr-only Previous
228
243
  = carousel.elem :control_next, tag: :a, cls: 'carousel-control-next', 'data-slide': :next, role: :button, 'data-target': '.carousel'
229
244
  span.carousel-control-next-icon aria-hidden="true"
230
- span.sr-only Следующий
245
+ span.sr-only Next
231
246
  ```
232
247
 
233
- [Шаблон по умолчанию](docs/%D0%A5%D0%B5%D0%BB%D0%BF%D0%B5%D1%80-define_templates.md):
248
+ [Default template](docs/%D0%A5%D0%B5%D0%BB%D0%BF%D0%B5%D1%80-define_templates.md):
234
249
  ```slim
235
- / app/frontend/components/common/carousel/index.bemhtml.slim
250
+ / app/frontend/components/common/carousel/bemhtml.slim
236
251
 
237
252
  = define_templates do |template|
238
253
  = template.elem(mods: :active).add_cls :active
239
254
  ```
240
255
 
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):
256
+ [Rendering](docs/%D0%A5%D0%B5%D0%BB%D0%BF%D0%B5%D1%80-render_component.md) the `carousel` component in any view or [other UI components](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) using [`BEMHTML`](docs/BEMHTML.md) [templates](docs/%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B.md):
242
257
  ```slim
243
258
  = render_component :carousel, prefix: :common, image_urls: image_urls do |template|
244
259
  = template.block(:carousel).add_mix :carousel_fade
245
260
  ```
246
261
 
247
- ## Документация
262
+ ## Documentation in Russian
248
263
 
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)
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)
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)
252
- 1. Хелперы для работы с компонентами
264
+ 1. [File naming and folder structure](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)
265
+ 1. [Configuration](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)
266
+ 1. [Creating and using UI components](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)
267
+ 1. Helpers for UI components
253
268
  1. [`define_component`](docs/%D0%A5%D0%B5%D0%BB%D0%BF%D0%B5%D1%80-define_component.md)
254
269
  1. [`define_templates`](docs/%D0%A5%D0%B5%D0%BB%D0%BF%D0%B5%D1%80-define_templates.md)
255
270
  1. [`render_component`](docs/%D0%A5%D0%B5%D0%BB%D0%BF%D0%B5%D1%80-render_component.md)
@@ -257,25 +272,25 @@ app/
257
272
  1. [`component_pack`](docs/%D0%A5%D0%B5%D0%BB%D0%BF%D0%B5%D1%80-component_pack.md)
258
273
  1. [`component_asset_path`](docs/%D0%A5%D0%B5%D0%BB%D0%BF%D0%B5%D1%80-component_asset_path.md)
259
274
  1. [`component_partial_path`](docs/%D0%A5%D0%B5%D0%BB%D0%BF%D0%B5%D1%80-component_partial_path.md)
260
- 1. Дополнительные хелперы для БЭМ методологии
275
+ 1. Additional helpers for the BEM methodology
261
276
  1. [`bem_attrs_for`](docs/%D0%A5%D0%B5%D0%BB%D0%BF%D0%B5%D1%80-bem_attrs_for.md)
262
277
  1. [`bem_mix`](docs/%D0%A5%D0%B5%D0%BB%D0%BF%D0%B5%D1%80-bem_mix.md)
263
278
  1. [`bem_mods`](docs/%D0%A5%D0%B5%D0%BB%D0%BF%D0%B5%D1%80-bem_mods.md)
264
279
  1. [`block_tag`](docs/%D0%A5%D0%B5%D0%BB%D0%BF%D0%B5%D1%80-block_tag.md)
265
280
  1. [`elem_tag`](docs/%D0%A5%D0%B5%D0%BB%D0%BF%D0%B5%D1%80-elem_tag.md)
266
281
  1. [BEMHTML](docs/BEMHTML.md)
267
- 1. [Шаблоны](docs/%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B.md)
268
- 1. [Контекст узла](docs/%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%BA%D1%81%D1%82-%D1%83%D0%B7%D0%BB%D0%B0.md)
269
- 1. [Предикаты](docs/%D0%9F%D1%80%D0%B5%D0%B4%D0%B8%D0%BA%D0%B0%D1%82%D1%8B.md)
270
- 1. [Режимы](docs/%D0%A0%D0%B5%D0%B6%D0%B8%D0%BC%D1%8B.md)
282
+ 1. [Templates](docs/%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B.md)
283
+ 1. [Node](docs/%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%BA%D1%81%D1%82-%D1%83%D0%B7%D0%BB%D0%B0.md)
284
+ 1. [Predicates](docs/%D0%9F%D1%80%D0%B5%D0%B4%D0%B8%D0%BA%D0%B0%D1%82%D1%8B.md)
285
+ 1. [Modes](docs/%D0%A0%D0%B5%D0%B6%D0%B8%D0%BC%D1%8B.md)
271
286
 
272
- ## Ссылки
287
+ ## Links
273
288
 
274
289
  1. BEM methodology - https://bem.info/methodology/
275
290
  1. Minimal stack for coding client-side JavaScript and templating - https://github.com/bem/bem-core
276
291
  1. Declarative template engine for the browser and server with regular JS syntax - https://github.com/bem/bem-xjst
277
292
  1. BEM Forum - https://bem.info/forum/
278
293
 
279
- ## Лицензия
294
+ ## License
280
295
 
281
- Copyright (c) 2017 - 2020 Александр Григорьев. Более подробную информацию о лицензии можно получить в файле [LICENSE.txt](LICENSE.txt).
296
+ Copyright (c) 2017-2023 Alexander Grigorev. See [LICENSE.txt](LICENSE.txt) for further details.
@@ -178,7 +178,7 @@ HTML тег изменить на `small` если текущая сущност
178
178
  Позволяет вызвать любой основной режим (`Symbol`) в контексте текущего узла, дополнительно можно передать параметры которые будут доступны в `params`.
179
179
 
180
180
  ```slim
181
- / Содержимое файла index.bemhtml.slim компонента alert
181
+ / Содержимое файла bemhtml.slim компонента alert
182
182
  = define_templates do |template|
183
183
  = template.block(:alert).add_cls ->(node) { "alert-#{node.params.fetch(:type, :info)}" }
184
184
  ```
@@ -195,7 +195,7 @@ HTML тег изменить на `small` если текущая сущност
195
195
  Позволяет вызвать следующий по очередности шаблон для текущего режима, дополнительно можно передать параметры которые будут доступны в `params`.
196
196
 
197
197
  ```slim
198
- / Содержимое файла index.bemhtml.slim компонента alert
198
+ / Содержимое файла bemhtml.slim компонента alert
199
199
  = define_templates do |template|
200
200
  = template.block(:alert).add_cls ->(node) { "alert-#{node.params.fetch(:type, :info)}" }
201
201
  ```
@@ -20,7 +20,7 @@ app/
20
20
  | ├── common/
21
21
  | | ├── alert/
22
22
  | | | ├── index.html.slim
23
- | | | ├── index.bemhtml.slim
23
+ | | | ├── bemhtml.slim
24
24
  | | | ├── index.js
25
25
  | | | └── index.css
26
26
  | | └── ...
@@ -63,7 +63,7 @@ app/
63
63
  ```
64
64
  Возможный вариант шаблонов по умолчанию для компонента `alert`:
65
65
  ```slim
66
- / Содержимое файла index.bemhtml.slim компонента alert
66
+ / Содержимое файла bemhtml.slim компонента alert
67
67
  = define_templates do |template|
68
68
  = template.block(:alert).add_cls :alert_info
69
69
  ```
@@ -12,7 +12,7 @@ app/
12
12
  | | └── ...
13
13
  | ├── top_navbar/
14
14
  | | ├── index.html.slim
15
- | | ├── index.bemhtml.slim
15
+ | | ├── bemhtml.slim
16
16
  | | ├── index.js
17
17
  | | ├── index.scss
18
18
  | | └── ...
@@ -26,7 +26,7 @@ app/
26
26
 
27
27
  1. Каталог **обязательно** должен содержать индексный файл для технологии HTML (это может быть: `index.html`, `index.html.slim`, `index.html.erb` и т.д.), который [описывает структуру компонента](Создание-и-использование-UI-компонент.md), используя для этого любой шаблонизатор (`ERB`, `Slim`, `HAML` и др.) или только HTML код.
28
28
 
29
- 1. Если индексный файл технологии HTML для создания структуры (дерева) компонента [использует хелпер `define_component`](Хелпер-define_component.md), тогда каталог может содержать индексный файл для [шаблонов по умолчанию](Хелпер-define_templates.md) (технология `bemhtml`), он должен называться `index.bemhtml` с обязательным указанием шаблонизатора например: `index.bemhtml.erb`, `index.bemhtml.slim` и т.д.
29
+ 1. Если индексный файл технологии HTML для создания структуры (дерева) компонента [использует хелпер `define_component`](Хелпер-define_component.md), тогда каталог может содержать индексный файл для [шаблонов по умолчанию](Хелпер-define_templates.md) (технология `bemhtml`), он должен называться `bemhtml` с обязательным указанием шаблонизатора например: `bemhtml.erb`, `bemhtml.slim` и т.д.
30
30
 
31
31
  1. Все остальные технологии (`js`, `css`, `md` и т.д.) считаются дополнительными и их можно добавлять по мере необходимости, имена файлов могут быть любыми но для единообразия и удобства лучше использовать `index` в качестве имени:
32
32
 
@@ -67,13 +67,13 @@ app/
67
67
  | ├── common/
68
68
  | | ├── modal/
69
69
  | | | ├── index.html.slim
70
- | | | ├── index.bemhtml.slim
70
+ | | | ├── bemhtml.slim
71
71
  | | | ├── index.js
72
72
  | | | ├── index.scss
73
73
  | | | └── ...
74
74
  | | ├── top_navbar/
75
75
  | | | ├── index.html.slim
76
- | | | ├── index.bemhtml.slim
76
+ | | | ├── bemhtml.slim
77
77
  | | | ├── index.js
78
78
  | | | ├── index.scss
79
79
  | | | └── ...
@@ -81,7 +81,7 @@ app/
81
81
  | ├── admin/
82
82
  | | ├── top_navbar/
83
83
  | | | ├── index.html.slim
84
- | | | ├── index.bemhtml.slim
84
+ | | | ├── bemhtml.slim
85
85
  | | | ├── index.js
86
86
  | | | ├── index.scss
87
87
  | | | └── ...
@@ -89,7 +89,7 @@ app/
89
89
  | ├── user/
90
90
  | | ├── top_navbar/
91
91
  | | | ├── index.html.slim
92
- | | | ├── index.bemhtml.slim
92
+ | | | ├── bemhtml.slim
93
93
  | | | ├── index.js
94
94
  | | | ├── index.scss
95
95
  | | | └── ...
@@ -108,13 +108,13 @@ app/
108
108
  | ├── common/
109
109
  | | ├── modal/
110
110
  | | | ├── index.html.slim
111
- | | | ├── index.bemhtml.slim
111
+ | | | ├── bemhtml.slim
112
112
  | | | ├── index.js
113
113
  | | | ├── index.scss
114
114
  | | | └── ...
115
115
  | | ├── top_navbar/
116
116
  | | | ├── index.html.slim
117
- | | | ├── index.bemhtml.slim
117
+ | | | ├── bemhtml.slim
118
118
  | | | ├── index.js
119
119
  | | | ├── index.scss
120
120
  | | | └── ...
@@ -122,7 +122,7 @@ app/
122
122
  | ├── desktop/
123
123
  | | ├── top_navbar/
124
124
  | | | ├── index.html.slim
125
- | | | ├── index.bemhtml.slim
125
+ | | | ├── bemhtml.slim
126
126
  | | | ├── index.js
127
127
  | | | ├── index.scss
128
128
  | | | └── ...
@@ -130,7 +130,7 @@ app/
130
130
  | ├── touch_pad/
131
131
  | | ├── top_navbar/
132
132
  | | | ├── index.html.slim
133
- | | | ├── index.bemhtml.slim
133
+ | | | ├── bemhtml.slim
134
134
  | | | ├── index.js
135
135
  | | | ├── index.scss
136
136
  | | | └── ...
@@ -150,7 +150,7 @@ app/
150
150
  | | ├── index.html.slim
151
151
  | | ├── index.html+phone.slim
152
152
  | | ├── index.html+tablet.slim
153
- | | ├── index.bemhtml.slim
153
+ | | ├── bemhtml.slim
154
154
  | | ├── index.js
155
155
  | | ├── index.scss
156
156
  | | └── ...
@@ -158,7 +158,7 @@ app/
158
158
  | | ├── index.html.slim
159
159
  | | ├── index.html+phone.slim
160
160
  | | ├── index.html+tablet.slim
161
- | | ├── index.bemhtml.slim
161
+ | | ├── bemhtml.slim
162
162
  | | ├── index.js
163
163
  | | ├── index.scss
164
164
  | | └── ...
@@ -17,7 +17,7 @@ app/
17
17
  ├── bemer_components/
18
18
  | ├── panel/
19
19
  | | ├── index.html.slim
20
- | | ├── index.bemhtml.slim
20
+ | | ├── bemhtml.slim
21
21
  | | ├── index.js
22
22
  | | └── index.css
23
23
  | └── ...
@@ -71,11 +71,11 @@ app/
71
71
  / <div class="panel-footer">Panel footer</div>
72
72
  / </div>
73
73
  ```
74
- С помощью файла `index.bemhtml.slim` можно задать дефолтные шаблоны для компонента, которые можно будет переопределить при вызове `render_component` или `refine_component`.
74
+ С помощью файла `bemhtml.slim` можно задать дефолтные шаблоны для компонента, которые можно будет переопределить при вызове `render_component` или `refine_component`.
75
75
 
76
76
  Возможный вариант шаблонов по умолчанию для компонента `panel`:
77
77
  ```slim
78
- / Содержимое файла index.bemhtml.slim компонента panel
78
+ / Содержимое файла bemhtml.slim компонента panel
79
79
  = define_templates do |template|
80
80
  = template.block(:panel).add_cls :panel_default
81
81
  ```
@@ -15,7 +15,7 @@
15
15
 
16
16
  ## Примеры шаблонов
17
17
 
18
- ### Шаблоны по умолчанию для компонента из файла `index.bemhtml.slim`
18
+ ### Шаблоны по умолчанию для компонента из файла `bemhtml.slim`
19
19
 
20
20
  ```slim
21
21
  = define_templates do |template|
@@ -44,7 +44,7 @@ module Bemer
44
44
  block = @block.eql?('*') ? block : @block
45
45
  elem = @element.nil? || @element.eql?('*') ? elem : @element
46
46
  params = { **new_options, **options, condition: condition, block: block, elem: elem }
47
- builder = Builders::Template.new(templates, params)
47
+ builder = Builders::Template.new(templates, **params)
48
48
 
49
49
  block_given? ? yield(builder) : builder
50
50
  end
@@ -10,7 +10,7 @@ module Bemer
10
10
  def block(name = '*', condition = true, **options)
11
11
  params = { **options, condition: condition, block: name, elem: nil }
12
12
 
13
- builder = Builders::Template.new(templates, params)
13
+ builder = Builders::Template.new(templates, **params)
14
14
 
15
15
  block_given? ? yield(builder) : builder
16
16
  end
@@ -18,7 +18,7 @@ module Bemer
18
18
  def elem(name = '*', condition = true, block: '*', **options)
19
19
  params = { **options, condition: condition, block: block || '*', elem: name }
20
20
 
21
- builder = Builders::Template.new(templates, params)
21
+ builder = Builders::Template.new(templates, **params)
22
22
 
23
23
  block_given? ? yield(builder) : builder
24
24
  end
@@ -10,7 +10,7 @@ module Bemer
10
10
  end
11
11
 
12
12
  def elem(name = '', **options, &content)
13
- tree.add_node(block, name, options, &content)
13
+ tree.add_node(block, name, **options, &content)
14
14
  end
15
15
 
16
16
  protected
@@ -8,11 +8,11 @@ module Bemer
8
8
  end
9
9
 
10
10
  def block(name = '', **options, &content)
11
- tree.add_node(name, options, &content)
11
+ tree.add_node(name, **options, &content)
12
12
  end
13
13
 
14
14
  def elem(block = '', name = '', **options, &content)
15
- tree.add_node(block, name, options, &content)
15
+ tree.add_node(block, name, **options, &content)
16
16
  end
17
17
 
18
18
  def text(content = nil, &callback)
@@ -9,7 +9,7 @@ module Bemer
9
9
  def render(**options, &block)
10
10
  return if !block_given? || template_catalog.nil?
11
11
 
12
- Tree.new(template_catalog, options).render(&block)
12
+ Tree.new(template_catalog, **options).render(&block)
13
13
  end
14
14
 
15
15
  protected
@@ -18,6 +18,7 @@ module Bemer
18
18
  def initialize # rubocop:disable Metrics/MethodLength
19
19
  @asset_paths = []
20
20
  @bem = false
21
+ # https://github.com/brainspec/enumerize/blob/9dd68ca36d1efed6bc4cec8557a359f34f408d47/lib/enumerize/activerecord.rb#L24
21
22
  # https://github.com/heartcombo/devise/blob/b52e642c0131f7b0d9f2dd24d8607a186f18223e/lib/devise.rb#L301
22
23
  # Gem::Version.new('0.4.1') > Gem::Version.new('0.10.1')
23
24
  # Здесь вроде также используют https://github.com/rspec/rspec-rails/blob/9b7ab39c027a8cb25e2ebe9e0e985756025b0549/Gemfile#L45
@@ -4,11 +4,11 @@ module Bemer
4
4
  module ContextExtentions
5
5
  module Template
6
6
  def apply_next(**options)
7
- node.apply_next(template, options)
7
+ node.apply_next(template, **options)
8
8
  end
9
9
 
10
10
  def apply(mode, **options)
11
- node.apply(mode, template, options)
11
+ node.apply(mode, template, **options)
12
12
  end
13
13
  end
14
14
  end
data/lib/bemer/helpers.rb CHANGED
@@ -3,11 +3,11 @@
3
3
  module Bemer
4
4
  module Helpers
5
5
  def block_tag(name = '', **options, &content)
6
- Bemer::Tag.new(name, options, &content).render
6
+ Bemer::Tag.new(name, **options, &content).render
7
7
  end
8
8
 
9
9
  def elem_tag(block = '', element = '', **options, &content)
10
- Bemer::Tag.new(block, element, options, &content).render
10
+ Bemer::Tag.new(block, element, **options, &content).render
11
11
  end
12
12
 
13
13
  # Использовать mix
@@ -30,7 +30,7 @@ module Bemer
30
30
  end
31
31
 
32
32
  def render_component(path, **options, &block)
33
- Bemer::TemplateList.new(self, path, options).compile(&block)
33
+ Bemer::TemplateList.new(self, path, **options).compile(&block)
34
34
  end
35
35
 
36
36
  alias refine_component render_component
@@ -40,7 +40,7 @@ module Bemer
40
40
  end
41
41
 
42
42
  def define_component(**options, &block)
43
- Bemer::Component.new(self).render(options, &block)
43
+ Bemer::Component.new(self).render(**options, &block)
44
44
  end
45
45
 
46
46
  def component_pack(&block)
@@ -58,7 +58,7 @@ module Bemer
58
58
  def bem_attrs_for(block = '', element = nil, **options)
59
59
  js = options[:js].nil? ? true : options.delete(:js)
60
60
 
61
- Bemer::EntityBuilder.new(block, element, options.merge(bem: true, js: js)).attrs
61
+ Bemer::EntityBuilder.new(block, element, **options.merge(bem: true, js: js)).attrs
62
62
  end
63
63
  end
64
64
  end
@@ -6,14 +6,18 @@ module Bemer
6
6
  @view = view
7
7
  end
8
8
 
9
- def resolve(name, partial = false)
10
- virtual_path = view.instance_variable_get(:@virtual_path)
11
- directory = [File.dirname(virtual_path)]
12
- file_name = name.to_s
9
+ def resolve(name, partial = false) # rubocop:disable Metrics/AbcSize
10
+ name = name.to_s
11
+ virtual_dir = File.dirname(view.instance_variable_get(:@virtual_path))
12
+ dirs = [virtual_dir, File.dirname(name).delete('.')].reject(&:blank?)
13
+ prefixes = [File.join(*dirs).to_s]
14
+ format = File.extname(name).delete('.') unless partial
15
+ basename = File.basename(name, '.*')
16
+ options = { formats: [format.to_sym] } if format
13
17
 
14
- return file_name unless view.lookup_context.exists?(file_name, directory, partial)
18
+ return name unless view.lookup_context.exists?(basename, prefixes, partial, **options.to_h)
15
19
 
16
- File.join(directory, file_name).to_s
20
+ File.join(virtual_dir, name).to_s
17
21
  end
18
22
 
19
23
  protected
@@ -21,16 +21,16 @@ module Bemer
21
21
  def apply_next(current_template, node, **params)
22
22
  position = priorities[current_template.mode][current_template.object_id] + 1
23
23
 
24
- apply_template(current_template.mode, node, position, params)
24
+ apply_template(current_template.mode, node, position, **params)
25
25
  end
26
26
 
27
27
  def apply(mode, current_template, node, **params)
28
28
  return unless allowable_mode?(mode) && compatible_modes?(mode, current_template.mode)
29
29
 
30
30
  if current_template.mode.eql?(mode)
31
- apply_next(current_template, node, params)
31
+ apply_next(current_template, node, **params)
32
32
  else
33
- apply_template(mode, node, params)
33
+ apply_template(mode, node, **params)
34
34
  end
35
35
  end
36
36
 
@@ -48,11 +48,11 @@ module Bemer
48
48
  end
49
49
 
50
50
  def apply_next(template, node, **params)
51
- handler_by(node.name).apply_next(template, node, params)
51
+ handler_by(node.name).apply_next(template, node, **params)
52
52
  end
53
53
 
54
54
  def apply(mode, template, node, **params)
55
- handler_by(node.name).apply(mode, template, node, params)
55
+ handler_by(node.name).apply(mode, template, node, **params)
56
56
  end
57
57
 
58
58
  protected
data/lib/bemer/railtie.rb CHANGED
@@ -9,10 +9,7 @@ module Bemer
9
9
  class Railtie < ::Rails::Railtie
10
10
  class << self
11
11
  def assets_path_initializer
12
- case ::Rails::VERSION::MAJOR
13
- when 5..6 then :append_assets_path
14
- when 3..4 then :load_config_initializers
15
- end
12
+ ::Rails::VERSION::MAJOR < 5 ? :load_config_initializers : :append_assets_path
16
13
  end
17
14
  end
18
15
 
data/lib/bemer/tag.rb CHANGED
@@ -8,7 +8,7 @@ module Bemer
8
8
 
9
9
  def initialize(block = '', element = nil, **options, &content)
10
10
  @bem_cascade = options[:bem_cascade]
11
- @tag_builder = TagBuilder.new(block, element, options, &content)
11
+ @tag_builder = TagBuilder.new(block, element, **options, &content)
12
12
  @renderer = Renderer.new
13
13
  end
14
14
 
@@ -26,7 +26,7 @@ module Bemer
26
26
  attr_reader :options, :path
27
27
 
28
28
  def add_default_templates
29
- default_template = template('index.bemhtml')
29
+ default_template = template(:bemhtml)
30
30
 
31
31
  return unless view.lookup_context.exists?(default_template)
32
32
 
@@ -13,8 +13,8 @@ module Bemer
13
13
  :content, :elem, :elem?, :element?, :js, :mix, :mods, :name, :tag
14
14
 
15
15
  def initialize(tree, block = '', element = nil, **options, &content)
16
- @entity = Entity.new(block, element, options, &content)
17
- @entity_builder = EntityBuilder.new(block, element, options, &content)
16
+ @entity = Entity.new(block, element, **options, &content)
17
+ @entity_builder = EntityBuilder.new(block, element, **options, &content)
18
18
  @renderer = Renderer.new
19
19
  @tree = tree
20
20
  end
@@ -12,7 +12,7 @@ module Bemer
12
12
  alias need_replace? need_replace
13
13
 
14
14
  def initialize(tree, block = '', element = nil, **options, &content)
15
- super(tree, block, element, options, &content)
15
+ super(tree, block, element, **options, &content)
16
16
 
17
17
  @applied_modes = Pipeline::MODES.map { |mode| [mode, false] }.to_h
18
18
  @children = []
@@ -62,11 +62,11 @@ module Bemer
62
62
  end
63
63
 
64
64
  def apply_next(template, **params)
65
- tree.pipeline.apply_next(template, self, params)
65
+ tree.pipeline.apply_next(template, self, **params)
66
66
  end
67
67
 
68
68
  def apply(mode, template, **params)
69
- tree.pipeline.apply(mode, template, self, params)
69
+ tree.pipeline.apply(mode, template, self, **params)
70
70
  end
71
71
 
72
72
  protected
data/lib/bemer/tree.rb CHANGED
@@ -66,7 +66,7 @@ module Bemer
66
66
  bem_cascade = inherited_bem_cascade if bem_cascade.nil?
67
67
  new_options = { **params, bem_cascade: bem_cascade, **options }
68
68
 
69
- add Node.new(self, block, element, new_options, &content)
69
+ add Node.new(self, block, element, **new_options, &content)
70
70
  end
71
71
 
72
72
  def add_text_node(content = nil, &callback)
data/lib/bemer/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bemer
4
- VERSION = '0.4.0'.freeze
4
+ VERSION = '0.6.0'.freeze
5
5
  end
@@ -38,7 +38,7 @@ RSpec.describe Bemer::Railtie do
38
38
  describe 'bemer.helpers initializer' do
39
39
  subject(:initializer) { find_initializer('bemer.helpers') }
40
40
 
41
- let(:action_view) { ActionView::Base.new }
41
+ let(:action_view) { ActionView::Base.respond_to?(:empty) ? ActionView::Base.empty : ActionView::Base.new }
42
42
 
43
43
  helper_methods = %i[
44
44
  block_tag elem_tag bem_mix bem_mods render_component
metadata CHANGED
@@ -1,197 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bemer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Grigorev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-10 00:00:00.000000000 Z
11
+ date: 2023-05-01 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: appraisal
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: 2.2.0
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: 2.2.0
27
- - !ruby/object:Gem::Dependency
28
- name: bundler-audit
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: 0.6.1
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: 0.6.1
41
- - !ruby/object:Gem::Dependency
42
- name: fasterer
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: 0.7.1
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: 0.7.1
55
- - !ruby/object:Gem::Dependency
56
- name: fuubar
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: 2.5.0
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: 2.5.0
69
- - !ruby/object:Gem::Dependency
70
- name: overcommit
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: 0.47.0
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: 0.47.0
83
- - !ruby/object:Gem::Dependency
84
- name: rake
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: 12.3.3
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: 12.3.3
97
- - !ruby/object:Gem::Dependency
98
- name: rspec
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: 3.9.0
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: 3.9.0
111
- - !ruby/object:Gem::Dependency
112
- name: rspec-html-matchers
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: 0.9.2
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: 0.9.2
125
- - !ruby/object:Gem::Dependency
126
- name: rspec-rails
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: 3.9.0
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: 3.9.0
139
- - !ruby/object:Gem::Dependency
140
- name: rubocop
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: 0.68.1
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: 0.68.1
153
- - !ruby/object:Gem::Dependency
154
- name: rubocop-performance
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - "~>"
158
- - !ruby/object:Gem::Version
159
- version: 1.3.0
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - "~>"
165
- - !ruby/object:Gem::Version
166
- version: 1.3.0
167
- - !ruby/object:Gem::Dependency
168
- name: rubocop-rspec
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - "~>"
172
- - !ruby/object:Gem::Version
173
- version: 1.38.1
174
- type: :development
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - "~>"
179
- - !ruby/object:Gem::Version
180
- version: 1.38.1
181
- - !ruby/object:Gem::Dependency
182
- name: wwtd
183
- requirement: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - "~>"
186
- - !ruby/object:Gem::Version
187
- version: 1.4.0
188
- type: :development
189
- prerelease: false
190
- version_requirements: !ruby/object:Gem::Requirement
191
- requirements:
192
- - - "~>"
193
- - !ruby/object:Gem::Version
194
- version: 1.4.0
195
13
  - !ruby/object:Gem::Dependency
196
14
  name: railties
197
15
  requirement: !ruby/object:Gem::Requirement
@@ -342,7 +160,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
342
160
  - !ruby/object:Gem::Version
343
161
  version: 2.2.0
344
162
  requirements: []
345
- rubygems_version: 3.0.3
163
+ rubygems_version: 3.4.12
346
164
  signing_key:
347
165
  specification_version: 4
348
166
  summary: Build reusable UI components for Rails applications with the ability to use