b4um_generators 0.1.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.
Files changed (87) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/.rubocop.yml +28 -0
  4. data/CHANGELOG.md +5 -0
  5. data/LICENSE.txt +21 -0
  6. data/README.de.md +821 -0
  7. data/README.md +815 -0
  8. data/Rakefile +12 -0
  9. data/b4um_generators.gemspec +30 -0
  10. data/bin/console +11 -0
  11. data/bin/setup +8 -0
  12. data/lib/b4um_generators/version.rb +5 -0
  13. data/lib/b4um_generators.rb +8 -0
  14. data/lib/generators/b4um/bento/bento_generator.rb +81 -0
  15. data/lib/generators/b4um/bento/templates/_alternating.html.erb.tt +15 -0
  16. data/lib/generators/b4um/bento/templates/_bento.html.erb.tt +26 -0
  17. data/lib/generators/b4um/bento/templates/_grid.html.erb.tt +13 -0
  18. data/lib/generators/b4um/bento/templates/_list.html.erb.tt +15 -0
  19. data/lib/generators/b4um/comments/comments_generator.rb +259 -0
  20. data/lib/generators/b4um/comments/templates/_comments.html.erb.tt +63 -0
  21. data/lib/generators/b4um/comments/templates/comment.rb.tt +5 -0
  22. data/lib/generators/b4um/comments/templates/comments_controller.rb.tt +45 -0
  23. data/lib/generators/b4um/comments/templates/create_comments.rb.tt +14 -0
  24. data/lib/generators/b4um/controller/controller_generator.rb +397 -0
  25. data/lib/generators/b4um/help/help_generator.rb +755 -0
  26. data/lib/generators/b4um/infinite_scroll/infinite_scroll_generator.rb +199 -0
  27. data/lib/generators/b4um/infinite_scroll/templates/infinite_scroll_controller.js +61 -0
  28. data/lib/generators/b4um/install/install_generator.rb +492 -0
  29. data/lib/generators/b4um/install/templates/_cookie_consent.html.erb +27 -0
  30. data/lib/generators/b4um/install/templates/_footer.html.erb +17 -0
  31. data/lib/generators/b4um/install/templates/_hero.html.erb +33 -0
  32. data/lib/generators/b4um/install/templates/_navigation.html.erb +31 -0
  33. data/lib/generators/b4um/install/templates/_sitemap.html.erb +48 -0
  34. data/lib/generators/b4um/install/templates/_theme_switcher.html.erb +57 -0
  35. data/lib/generators/b4um/install/templates/b4um/badges.css +43 -0
  36. data/lib/generators/b4um/install/templates/b4um/base.css +42 -0
  37. data/lib/generators/b4um/install/templates/b4um/callouts.css +58 -0
  38. data/lib/generators/b4um/install/templates/b4um/cards.css +401 -0
  39. data/lib/generators/b4um/install/templates/b4um/comments.css +52 -0
  40. data/lib/generators/b4um/install/templates/b4um/cookie-consent.css +83 -0
  41. data/lib/generators/b4um/install/templates/b4um/empty-state.css +26 -0
  42. data/lib/generators/b4um/install/templates/b4um/flash.css +86 -0
  43. data/lib/generators/b4um/install/templates/b4um/footer.css +338 -0
  44. data/lib/generators/b4um/install/templates/b4um/forms.css +924 -0
  45. data/lib/generators/b4um/install/templates/b4um/hero.css +149 -0
  46. data/lib/generators/b4um/install/templates/b4um/layout.css +166 -0
  47. data/lib/generators/b4um/install/templates/b4um/lightbox.css +268 -0
  48. data/lib/generators/b4um/install/templates/b4um/navigation.css +257 -0
  49. data/lib/generators/b4um/install/templates/b4um/pagination.css +85 -0
  50. data/lib/generators/b4um/install/templates/b4um/resources.css +121 -0
  51. data/lib/generators/b4um/install/templates/b4um/search.css +41 -0
  52. data/lib/generators/b4um/install/templates/b4um/tables.css +67 -0
  53. data/lib/generators/b4um/install/templates/b4um/theme-switcher.css +178 -0
  54. data/lib/generators/b4um/install/templates/b4um/theme.css +132 -0
  55. data/lib/generators/b4um/install/templates/b4um.css +20 -0
  56. data/lib/generators/b4um/install/templates/b4um.yml +12 -0
  57. data/lib/generators/b4um/install/templates/b4um_helper.rb +27 -0
  58. data/lib/generators/b4um/install/templates/cookie_consent_controller.js +76 -0
  59. data/lib/generators/b4um/install/templates/dismissible_controller.js +7 -0
  60. data/lib/generators/b4um/install/templates/image_lightbox_controller.js +414 -0
  61. data/lib/generators/b4um/install/templates/image_preview_controller.js +85 -0
  62. data/lib/generators/b4um/install/templates/navigation_controller.js +25 -0
  63. data/lib/generators/b4um/install/templates/navigation_helper.rb +26 -0
  64. data/lib/generators/b4um/install/templates/sitemap_controller.js +35 -0
  65. data/lib/generators/b4um/install/templates/theme_controller.js +122 -0
  66. data/lib/generators/b4um/pagination/pagination_generator.rb +179 -0
  67. data/lib/generators/b4um/pagination/templates/_pagination.html.erb.tt +48 -0
  68. data/lib/generators/b4um/pagination/templates/pagination.rb +36 -0
  69. data/lib/generators/b4um/scaffold/scaffold_generator.rb +333 -0
  70. data/lib/generators/b4um/scaffold/templates/_bento.html.erb.tt +26 -0
  71. data/lib/generators/b4um/scaffold/templates/_form.html.erb.tt +218 -0
  72. data/lib/generators/b4um/scaffold/templates/_resource.html.erb.tt +144 -0
  73. data/lib/generators/b4um/scaffold/templates/_table.html.erb.tt +40 -0
  74. data/lib/generators/b4um/scaffold/templates/edit.html.erb.tt +21 -0
  75. data/lib/generators/b4um/scaffold/templates/index.html.erb.tt +24 -0
  76. data/lib/generators/b4um/scaffold/templates/new.html.erb.tt +17 -0
  77. data/lib/generators/b4um/scaffold/templates/show.html.erb.tt +31 -0
  78. data/lib/generators/b4um/search/search_generator.rb +165 -0
  79. data/lib/generators/b4um/search/templates/search.rb +34 -0
  80. data/lib/generators/b4um/search/templates/search_form.html.erb.tt +15 -0
  81. data/lib/generators/b4um/table/table_generator.rb +63 -0
  82. data/lib/generators/b4um/table/templates/_table.html.erb.tt +40 -0
  83. data/lib/generators/b4um/trix/templates/b4um_rich_text_helper.rb +58 -0
  84. data/lib/generators/b4um/trix/templates/b4um_trix.js +551 -0
  85. data/lib/generators/b4um/trix/trix_generator.rb +383 -0
  86. data/sig/b4um_generators.rbs +4 -0
  87. metadata +148 -0
@@ -0,0 +1,383 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rails/generators"
4
+
5
+ module B4um
6
+ module Generators
7
+ class TrixGenerator < Rails::Generators::Base
8
+ source_root File.expand_path("templates", __dir__)
9
+
10
+ argument :name,
11
+ type: :string,
12
+ required: true,
13
+ banner: "MODEL"
14
+
15
+ argument :attribute,
16
+ type: :string,
17
+ required: true,
18
+ banner: "ATTRIBUTE"
19
+
20
+ desc "Adds Action Text with Trix to an existing B4UM resource."
21
+
22
+ def validate_model
23
+ return if File.exist?(model_path)
24
+
25
+ raise Thor::Error, "Model #{class_name} does not exist."
26
+ end
27
+
28
+ def validate_form
29
+ return if File.exist?(form_path)
30
+
31
+ raise Thor::Error, "Form for #{class_name} does not exist."
32
+ end
33
+
34
+ def install_action_text
35
+ return if action_text_installed?
36
+
37
+ rails_command "action_text:install"
38
+ end
39
+
40
+ def install_b4um_trix_javascript
41
+ copy_file(
42
+ "b4um_trix.js",
43
+ "app/javascript/b4um/trix.js"
44
+ )
45
+ end
46
+
47
+ def install_b4um_rich_text_helper
48
+ copy_file(
49
+ "b4um_rich_text_helper.rb",
50
+ "app/helpers/b4um_rich_text_helper.rb"
51
+ )
52
+ end
53
+
54
+ def install_b4um_rich_text_preview_styles
55
+ resources_stylesheet_path = File.join(
56
+ destination_root,
57
+ "app/assets/stylesheets/b4um/resources.css"
58
+ )
59
+
60
+ return unless File.exist?(resources_stylesheet_path)
61
+
62
+ stylesheet = File.read(resources_stylesheet_path)
63
+
64
+ return if stylesheet.include?(".b4um-rich-text-preview__heading")
65
+
66
+ styles = <<~CSS
67
+
68
+ .b4um-rich-text-preview {
69
+ display: block;
70
+ }
71
+
72
+ .b4um-rich-text-preview__heading {
73
+ display: block;
74
+ margin-bottom: 0.25rem;
75
+
76
+ font-weight: 700;
77
+ line-height: 1.25;
78
+ }
79
+
80
+ .b4um-rich-text-preview__text {
81
+ display: block;
82
+ }
83
+ CSS
84
+
85
+ append_to_file(
86
+ "app/assets/stylesheets/b4um/resources.css",
87
+ styles
88
+ )
89
+ end
90
+
91
+ def import_b4um_trix_javascript
92
+ application_javascript_path = File.join(
93
+ destination_root,
94
+ "app/javascript/application.js"
95
+ )
96
+
97
+ return unless File.exist?(application_javascript_path)
98
+
99
+ application_javascript = File.read(application_javascript_path)
100
+
101
+ return if application_javascript.include?("import 'b4um/trix'")
102
+
103
+ append_to_file(
104
+ "app/javascript/application.js",
105
+ "\nimport 'b4um/trix'\n"
106
+ )
107
+ end
108
+
109
+ def pin_b4um_trix_javascript
110
+ importmap_path = File.join(
111
+ destination_root,
112
+ "config/importmap.rb"
113
+ )
114
+
115
+ return unless File.exist?(importmap_path)
116
+
117
+ importmap = File.read(importmap_path)
118
+
119
+ return if importmap.include?('pin "b4um/trix"')
120
+
121
+ append_to_file(
122
+ "config/importmap.rb",
123
+ "\npin \"b4um/trix\", to: \"b4um/trix.js\"\n"
124
+ )
125
+ end
126
+
127
+ def add_rich_text_association
128
+ inject_into_class(
129
+ model_path,
130
+ class_name,
131
+ " has_rich_text :#{attribute}\n"
132
+ )
133
+ end
134
+
135
+ def update_form
136
+ gsub_file(
137
+ form_path,
138
+ "form.text_area :#{attribute}",
139
+ "form.rich_text_area :#{attribute}"
140
+ )
141
+
142
+ gsub_file(
143
+ form_path,
144
+ /<div class="form-field form-field--textarea">(?=\s*<%= form\.rich_text_area :#{Regexp.escape(attribute)})/,
145
+ '<div class="form-field form-field--rich-text">'
146
+ )
147
+ end
148
+
149
+ def update_resource_partial
150
+ return unless File.exist?(resource_partial_path)
151
+
152
+ resource_name = name.underscore
153
+
154
+ gsub_file(
155
+ resource_partial_path,
156
+ "truncate(#{resource_name}.#{attribute}, length: 160)",
157
+ "b4um_rich_text_preview(#{resource_name}.#{attribute}, length: 160)"
158
+ )
159
+
160
+ gsub_file(
161
+ resource_partial_path,
162
+ "truncate(#{resource_name}.#{attribute}.to_plain_text, length: 160)",
163
+ "b4um_rich_text_preview(#{resource_name}.#{attribute}, length: 160)"
164
+ )
165
+
166
+ partial = File.read(resource_partial_path)
167
+
168
+ rich_text_expression =
169
+ "<%= #{resource_name}.#{attribute} %>"
170
+
171
+ rich_text_already_wrapped =
172
+ partial.match?(
173
+ /<div class="rich-text-lightbox"[^>]*>\s*.*?#{Regexp.escape(rich_text_expression)}/m
174
+ )
175
+
176
+ return if rich_text_already_wrapped
177
+
178
+ gsub_file(
179
+ resource_partial_path,
180
+ rich_text_expression,
181
+ <<~ERB.chomp
182
+ <div class="rich-text-lightbox"
183
+ data-controller="image-lightbox"
184
+ data-action="keydown->image-lightbox#keydown">
185
+ <%= #{resource_name}.#{attribute} %>
186
+
187
+ <div class="image-lightbox"
188
+ data-image-lightbox-target="overlay"
189
+ data-action="click->image-lightbox#closeOnBackground"
190
+ tabindex="-1"
191
+ role="dialog"
192
+ aria-modal="true"
193
+ aria-label="Image gallery"
194
+ hidden>
195
+
196
+ <div class="image-lightbox__counter"
197
+ data-image-lightbox-target="counter"></div>
198
+
199
+ <button type="button"
200
+ class="image-lightbox__close"
201
+ aria-label="Close gallery"
202
+ data-action="click->image-lightbox#close">
203
+ &times;
204
+ </button>
205
+
206
+ <button type="button"
207
+ class="image-lightbox__navigation image-lightbox__navigation--previous"
208
+ aria-label="Previous image"
209
+ data-image-lightbox-target="previousButton"
210
+ data-action="click->image-lightbox#previous">
211
+ &#8249;
212
+ </button>
213
+
214
+ <div class="image-lightbox__stage"
215
+ data-image-lightbox-target="stage"
216
+ data-action="pointerdown->image-lightbox#pointerDown pointermove->image-lightbox#pointerMove pointerup->image-lightbox#pointerUp pointercancel->image-lightbox#pointerCancel">
217
+ <img class="image-lightbox__image"
218
+ data-image-lightbox-target="image"
219
+ alt="">
220
+ </div>
221
+
222
+ <button type="button"
223
+ class="image-lightbox__navigation image-lightbox__navigation--next"
224
+ aria-label="Next image"
225
+ data-image-lightbox-target="nextButton"
226
+ data-action="click->image-lightbox#next">
227
+ &#8250;
228
+ </button>
229
+
230
+ <div class="image-lightbox__caption"
231
+ data-image-lightbox-target="caption"></div>
232
+ </div>
233
+ </div>
234
+ ERB
235
+ )
236
+ end
237
+
238
+ def update_action_text_blob_partial
239
+ return unless File.exist?(action_text_blob_partial_path)
240
+
241
+ partial = File.read(action_text_blob_partial_path)
242
+
243
+ unless partial.include?("blob.video?")
244
+ gsub_file(
245
+ action_text_blob_partial_path,
246
+ /<% if blob\.representable\? %>\s*(<%= image_tag .+? %>)\s*<% end %>/m,
247
+ <<~ERB.chomp
248
+ <% if blob.video? %>
249
+ <%= video_tag rails_blob_path(blob, disposition: "inline"),
250
+ controls: true,
251
+ playsinline: true,
252
+ preload: "metadata",
253
+ class: "b4um-rich-text-video" %>
254
+ <% elsif blob.representable? %>
255
+ \\1
256
+ <% end %>
257
+ ERB
258
+ )
259
+ end
260
+
261
+ partial = File.read(action_text_blob_partial_path)
262
+
263
+ return if partial.include?('image_lightbox_target: "item"')
264
+
265
+ gsub_file(
266
+ action_text_blob_partial_path,
267
+ /<%= image_tag (.+?) %>/,
268
+ <<~ERB.chomp
269
+ <%= image_tag \\1,
270
+ data: {
271
+ image_lightbox_target: "item",
272
+ image_lightbox_url: rails_blob_path(blob, only_path: true),
273
+ image_lightbox_alt: blob.filename.to_s,
274
+ action: "click->image-lightbox#open"
275
+ } %>
276
+ ERB
277
+ )
278
+ end
279
+
280
+ def create_action_text_initializer
281
+ initializer_path = File.join(
282
+ destination_root,
283
+ "config/initializers/action_text.rb"
284
+ )
285
+
286
+ configuration = <<~RUBY
287
+ Rails.application.config.after_initialize do
288
+ ActionText::ContentHelper.allowed_tags =
289
+ ActionText::ContentHelper.sanitizer.class.allowed_tags +
290
+ [
291
+ ActionText::Attachment.tag_name,
292
+ "figure",
293
+ "figcaption"
294
+ ] +
295
+ %w[
296
+ align-left
297
+ align-center
298
+ align-right
299
+ section
300
+ article
301
+ video
302
+ ]
303
+
304
+ ActionText::ContentHelper.allowed_attributes =
305
+ ActionText::ContentHelper.sanitizer.class.allowed_attributes +
306
+ ActionText::Attachment::ATTRIBUTES +
307
+ %w[
308
+ style
309
+ id
310
+ src
311
+ controls
312
+ playsinline
313
+ preload
314
+ data-image-lightbox-target
315
+ data-image-lightbox-url
316
+ data-image-lightbox-alt
317
+ data-action
318
+ ]
319
+ end
320
+ RUBY
321
+
322
+ if File.exist?(initializer_path)
323
+ append_to_file(
324
+ initializer_path,
325
+ "\n#{configuration}"
326
+ )
327
+ else
328
+ create_file(
329
+ initializer_path,
330
+ <<~RUBY
331
+ # frozen_string_literal: true
332
+
333
+ #{configuration}
334
+ RUBY
335
+ )
336
+ end
337
+ end
338
+
339
+ private
340
+
341
+ def action_text_installed?
342
+ Dir.glob(
343
+ File.join(
344
+ destination_root,
345
+ "db/migrate/*_create_action_text_tables.action_text.rb"
346
+ )
347
+ ).any?
348
+ end
349
+
350
+ def class_name
351
+ name.camelize
352
+ end
353
+
354
+ def model_path
355
+ File.join(
356
+ destination_root,
357
+ "app/models/#{name.underscore}.rb"
358
+ )
359
+ end
360
+
361
+ def form_path
362
+ File.join(
363
+ destination_root,
364
+ "app/views/#{name.underscore.pluralize}/_form.html.erb"
365
+ )
366
+ end
367
+
368
+ def resource_partial_path
369
+ File.join(
370
+ destination_root,
371
+ "app/views/#{name.underscore.pluralize}/_#{name.underscore}.html.erb"
372
+ )
373
+ end
374
+
375
+ def action_text_blob_partial_path
376
+ File.join(
377
+ destination_root,
378
+ "app/views/active_storage/blobs/_blob.html.erb"
379
+ )
380
+ end
381
+ end
382
+ end
383
+ end
@@ -0,0 +1,4 @@
1
+ module B4umGenerators
2
+ VERSION: String
3
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
+ end
metadata ADDED
@@ -0,0 +1,148 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: b4um_generators
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Alexander Baum
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 2026-09-25 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: railties
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '8.0'
19
+ - - "<"
20
+ - !ruby/object:Gem::Version
21
+ version: '9.0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: '8.0'
29
+ - - "<"
30
+ - !ruby/object:Gem::Version
31
+ version: '9.0'
32
+ description: Reusable Rails generators, templates and application defaults for b4um
33
+ projects.
34
+ email:
35
+ - info@b4um.com
36
+ executables: []
37
+ extensions: []
38
+ extra_rdoc_files: []
39
+ files:
40
+ - ".rspec"
41
+ - ".rubocop.yml"
42
+ - CHANGELOG.md
43
+ - LICENSE.txt
44
+ - README.de.md
45
+ - README.md
46
+ - Rakefile
47
+ - b4um_generators.gemspec
48
+ - bin/console
49
+ - bin/setup
50
+ - lib/b4um_generators.rb
51
+ - lib/b4um_generators/version.rb
52
+ - lib/generators/b4um/bento/bento_generator.rb
53
+ - lib/generators/b4um/bento/templates/_alternating.html.erb.tt
54
+ - lib/generators/b4um/bento/templates/_bento.html.erb.tt
55
+ - lib/generators/b4um/bento/templates/_grid.html.erb.tt
56
+ - lib/generators/b4um/bento/templates/_list.html.erb.tt
57
+ - lib/generators/b4um/comments/comments_generator.rb
58
+ - lib/generators/b4um/comments/templates/_comments.html.erb.tt
59
+ - lib/generators/b4um/comments/templates/comment.rb.tt
60
+ - lib/generators/b4um/comments/templates/comments_controller.rb.tt
61
+ - lib/generators/b4um/comments/templates/create_comments.rb.tt
62
+ - lib/generators/b4um/controller/controller_generator.rb
63
+ - lib/generators/b4um/help/help_generator.rb
64
+ - lib/generators/b4um/infinite_scroll/infinite_scroll_generator.rb
65
+ - lib/generators/b4um/infinite_scroll/templates/infinite_scroll_controller.js
66
+ - lib/generators/b4um/install/install_generator.rb
67
+ - lib/generators/b4um/install/templates/_cookie_consent.html.erb
68
+ - lib/generators/b4um/install/templates/_footer.html.erb
69
+ - lib/generators/b4um/install/templates/_hero.html.erb
70
+ - lib/generators/b4um/install/templates/_navigation.html.erb
71
+ - lib/generators/b4um/install/templates/_sitemap.html.erb
72
+ - lib/generators/b4um/install/templates/_theme_switcher.html.erb
73
+ - lib/generators/b4um/install/templates/b4um.css
74
+ - lib/generators/b4um/install/templates/b4um.yml
75
+ - lib/generators/b4um/install/templates/b4um/badges.css
76
+ - lib/generators/b4um/install/templates/b4um/base.css
77
+ - lib/generators/b4um/install/templates/b4um/callouts.css
78
+ - lib/generators/b4um/install/templates/b4um/cards.css
79
+ - lib/generators/b4um/install/templates/b4um/comments.css
80
+ - lib/generators/b4um/install/templates/b4um/cookie-consent.css
81
+ - lib/generators/b4um/install/templates/b4um/empty-state.css
82
+ - lib/generators/b4um/install/templates/b4um/flash.css
83
+ - lib/generators/b4um/install/templates/b4um/footer.css
84
+ - lib/generators/b4um/install/templates/b4um/forms.css
85
+ - lib/generators/b4um/install/templates/b4um/hero.css
86
+ - lib/generators/b4um/install/templates/b4um/layout.css
87
+ - lib/generators/b4um/install/templates/b4um/lightbox.css
88
+ - lib/generators/b4um/install/templates/b4um/navigation.css
89
+ - lib/generators/b4um/install/templates/b4um/pagination.css
90
+ - lib/generators/b4um/install/templates/b4um/resources.css
91
+ - lib/generators/b4um/install/templates/b4um/search.css
92
+ - lib/generators/b4um/install/templates/b4um/tables.css
93
+ - lib/generators/b4um/install/templates/b4um/theme-switcher.css
94
+ - lib/generators/b4um/install/templates/b4um/theme.css
95
+ - lib/generators/b4um/install/templates/b4um_helper.rb
96
+ - lib/generators/b4um/install/templates/cookie_consent_controller.js
97
+ - lib/generators/b4um/install/templates/dismissible_controller.js
98
+ - lib/generators/b4um/install/templates/image_lightbox_controller.js
99
+ - lib/generators/b4um/install/templates/image_preview_controller.js
100
+ - lib/generators/b4um/install/templates/navigation_controller.js
101
+ - lib/generators/b4um/install/templates/navigation_helper.rb
102
+ - lib/generators/b4um/install/templates/sitemap_controller.js
103
+ - lib/generators/b4um/install/templates/theme_controller.js
104
+ - lib/generators/b4um/pagination/pagination_generator.rb
105
+ - lib/generators/b4um/pagination/templates/_pagination.html.erb.tt
106
+ - lib/generators/b4um/pagination/templates/pagination.rb
107
+ - lib/generators/b4um/scaffold/scaffold_generator.rb
108
+ - lib/generators/b4um/scaffold/templates/_bento.html.erb.tt
109
+ - lib/generators/b4um/scaffold/templates/_form.html.erb.tt
110
+ - lib/generators/b4um/scaffold/templates/_resource.html.erb.tt
111
+ - lib/generators/b4um/scaffold/templates/_table.html.erb.tt
112
+ - lib/generators/b4um/scaffold/templates/edit.html.erb.tt
113
+ - lib/generators/b4um/scaffold/templates/index.html.erb.tt
114
+ - lib/generators/b4um/scaffold/templates/new.html.erb.tt
115
+ - lib/generators/b4um/scaffold/templates/show.html.erb.tt
116
+ - lib/generators/b4um/search/search_generator.rb
117
+ - lib/generators/b4um/search/templates/search.rb
118
+ - lib/generators/b4um/search/templates/search_form.html.erb.tt
119
+ - lib/generators/b4um/table/table_generator.rb
120
+ - lib/generators/b4um/table/templates/_table.html.erb.tt
121
+ - lib/generators/b4um/trix/templates/b4um_rich_text_helper.rb
122
+ - lib/generators/b4um/trix/templates/b4um_trix.js
123
+ - lib/generators/b4um/trix/trix_generator.rb
124
+ - sig/b4um_generators.rbs
125
+ homepage: https://www.b4um.com
126
+ licenses:
127
+ - MIT
128
+ metadata:
129
+ homepage_uri: https://www.b4um.com
130
+ rubygems_mfa_required: 'true'
131
+ rdoc_options: []
132
+ require_paths:
133
+ - lib
134
+ required_ruby_version: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: 3.1.0
139
+ required_rubygems_version: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ requirements: []
145
+ rubygems_version: 3.6.2
146
+ specification_version: 4
147
+ summary: Rails generators for b4um applications
148
+ test_files: []