bullet_train-super_scaffolding 1.0.32 → 1.0.33

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: f51f2db556dd32be5a81cd6fcf0fc54cca58cd662e61da38289a95a8aecb6d64
4
- data.tar.gz: '03957b2a34172dabb98a2ef32fdcb16d3be71eb65963546b746826915e74d4be'
3
+ metadata.gz: ee19e6fc0bb1ffec6e2d8b6f23ddf3ed1726c8aec64d07cdfa76f9a74e39f05e
4
+ data.tar.gz: a631eeed51759f3ec6590ed6e6b76ff598415a17376e44dc7229757cff73fcc9
5
5
  SHA512:
6
- metadata.gz: 8f692ccec6f4cebec181c086562d5b1c5bf59a6e2106cd12fff70df47addf7043157de95d89c5c637068826068e90349a5a5f07acac79c85b8a3ed4f1c63c2bc
7
- data.tar.gz: ce76ef0471d6f6f7721c70bcf4645a99ecd8866ece6d48ab3809601a162579f5df90cf5042cce74b9f7ba6dc9e3c3dada590013ee9b614132035ef6fc2108479
6
+ metadata.gz: 4ca5dfe3b131cea16d618966715bf85cdd954904d8651ef9496e783927950b799c7fd5673d5eb26c180b67cc14cf6593c8b19e9997d1b72594cde5311380968b
7
+ data.tar.gz: 6b5d0ec8f81e1f5e5b94abc01229543e1bd6bbeefc56723ddcf74709040c18d1109f8798597ed4b5c65478b8bd2336783088df8dd1b2ec64919631ef77f4007c
@@ -17,7 +17,7 @@
17
17
  </div>
18
18
  </div>
19
19
 
20
- <%= render 'shared/fields/color_picker', method: :color_picker_value, options: t('scaffolding/completely_concrete/tangible_things.fields.color_picker_value.options') %>
20
+ <%= render 'shared/fields/color_picker', method: :color_picker_value, options: {color_picker_options: t('scaffolding/completely_concrete/tangible_things.fields.color_picker_value.options')} %>
21
21
  <%= render 'shared/fields/cloudinary_image', method: :cloudinary_image_value %>
22
22
  <%= render 'shared/fields/date_field', method: :date_field_value %>
23
23
  <%= render 'shared/fields/date_and_time_field', method: :date_and_time_field_value %>
@@ -1,5 +1,5 @@
1
1
  module BulletTrain
2
2
  module SuperScaffolding
3
- VERSION = "1.0.32"
3
+ VERSION = "1.0.33"
4
4
  end
5
5
  end
@@ -7,16 +7,16 @@ class Scaffolding::BlockManipulator
7
7
  end
8
8
 
9
9
  #
10
- # Wrap a block of ruby code inside another block
10
+ # Wrap a block of ruby code with another block on the outside.
11
11
  #
12
- # @param [String] starting A string to search for at the start of the block. Eg "<%= updates_for context, collection do"
13
- # @param [Array] with An array with two String elements. The text that should wrap the block. Eg ["<%= action_model_select_controller do %>", "<% end %>"]
12
+ # @param [String] `starting` A string to search for at the start of the block. Eg "<%= updates_for context, collection do"
13
+ # @param [Array] `with` An array with two String elements. The text that should wrap the block. Eg ["<%= action_model_select_controller do %>", "<% end %>"]
14
14
  #
15
15
  def wrap_block(starting:, with:)
16
16
  with[0] += "\n" unless with[0].match?(/\n$/)
17
17
  with[1] += "\n" unless with[1].match?(/\n$/)
18
18
  starting_line = find_block_start(starting)
19
- end_line = find_block_end(starting_from: starting_line)
19
+ end_line = find_block_end(starting_from: starting_line, lines: @lines)
20
20
 
21
21
  final = []
22
22
  block_indent = ""
@@ -55,13 +55,13 @@ class Scaffolding::BlockManipulator
55
55
  end_line = @lines.count - 1
56
56
  if within.present?
57
57
  start_line = find_block_start(within)
58
- end_line = find_block_end(starting_from: start_line)
58
+ end_line = find_block_end(starting_from: start_line, lines: @lines)
59
59
  # start_line += 1 # ensure we actually insert the content _within_ the given block
60
60
  # end_line += 1 if end_line == start_line
61
61
  end
62
62
  if after_block.present?
63
63
  block_start = find_block_start(after_block)
64
- block_end = find_block_end(starting_from: block_start)
64
+ block_end = find_block_end(starting_from: block_start, lines: @lines)
65
65
  start_line = block_end
66
66
  end_line = @lines.count - 1
67
67
  end
@@ -102,7 +102,7 @@ class Scaffolding::BlockManipulator
102
102
 
103
103
  def insert_block(block_content, after_block:)
104
104
  block_start = find_block_start(after_block)
105
- block_end = find_block_end(starting_from: block_start)
105
+ block_end = find_block_end(starting_from: block_start, lines: @lines)
106
106
  insert_line(block_content[0], block_end)
107
107
  insert_line(block_content[1], block_end + 1)
108
108
  end
@@ -111,6 +111,18 @@ class Scaffolding::BlockManipulator
111
111
  File.write(@filepath, @lines.join)
112
112
  end
113
113
 
114
+ def find_block_parent(starting_line_number, lines)
115
+ return nil unless indentation_of(starting_line_number, lines)
116
+ cursor = starting_line_number
117
+ while cursor >= 0
118
+ unless lines[cursor].match?(/^#{indentation_of(starting_line_number, lines)}/) || !lines[cursor].present?
119
+ return cursor
120
+ end
121
+ cursor -= 1
122
+ end
123
+ nil
124
+ end
125
+
114
126
  def find_block_start(starting_string)
115
127
  matcher = Regexp.escape(starting_string)
116
128
  starting_line = 0
@@ -124,7 +136,15 @@ class Scaffolding::BlockManipulator
124
136
  starting_line
125
137
  end
126
138
 
127
- def find_block_end(starting_from:)
139
+ def find_block_end(starting_from:, lines:)
140
+ # This loop was previously in the RoutesFileManipulator.
141
+ lines.each_with_index do |line, line_number|
142
+ next unless line_number > starting_from
143
+ if /^#{indentation_of(starting_from, lines)}end\s+/.match?(line)
144
+ return line_number
145
+ end
146
+ end
147
+
128
148
  depth = 0
129
149
  current_line = starting_from
130
150
  @lines[starting_from..@lines.count].each_with_index do |line, index|
@@ -138,7 +158,12 @@ class Scaffolding::BlockManipulator
138
158
  current_line
139
159
  end
140
160
 
141
- def block_indentation_size(line_number)
142
- lines[line_number].scan(/^\s+/).first.size
161
+ # TODO: We shouldn't need this second argument, but since
162
+ # we have `lines` here and in the RoutesFileManipulator,
163
+ # the lines diverge from one another when we edit them individually.
164
+ def indentation_of(line_number, lines)
165
+ lines[line_number].match(/^( +)/)[1]
166
+ rescue
167
+ nil
143
168
  end
144
169
  end
@@ -1,3 +1,5 @@
1
+ require "scaffolding/block_manipulator"
2
+
1
3
  class Scaffolding::RoutesFileManipulator
2
4
  attr_accessor :child, :parent, :lines, :transformer_options, :block_manipulator
3
5
 
@@ -66,7 +68,7 @@ class Scaffolding::RoutesFileManipulator
66
68
  def find_namespaces(namespaces, within = nil)
67
69
  namespaces = namespaces.dup
68
70
  results = {}
69
- block_end = find_block_end(within) if within
71
+ block_end = block_manipulator.find_block_end(starting_from: within, lines: lines) if within
70
72
  lines.each_with_index do |line, line_number|
71
73
  if within
72
74
  next unless line_number > within
@@ -80,39 +82,10 @@ class Scaffolding::RoutesFileManipulator
80
82
  results
81
83
  end
82
84
 
83
- def indentation_of(line_number)
84
- lines[line_number].match(/^( +)/)[1]
85
- rescue
86
- nil
87
- end
88
-
89
- def find_block_parent(starting_line_number)
90
- return nil unless indentation_of(starting_line_number)
91
- cursor = starting_line_number
92
- while cursor >= 0
93
- unless lines[cursor].match?(/^#{indentation_of(starting_line_number)}/) || !lines[cursor].present?
94
- return cursor
95
- end
96
- cursor -= 1
97
- end
98
- nil
99
- end
100
-
101
- def find_block_end(starting_line_number)
102
- return nil unless indentation_of(starting_line_number)
103
- lines.each_with_index do |line, line_number|
104
- next unless line_number > starting_line_number
105
- if /^#{indentation_of(starting_line_number)}end\s+/.match?(line)
106
- return line_number
107
- end
108
- end
109
- nil
110
- end
111
-
112
85
  def insert_before(new_lines, line_number, options = {})
113
86
  options[:indent] ||= false
114
87
  before = lines[0..(line_number - 1)]
115
- new_lines = new_lines.map { |line| (indentation_of(line_number) + (options[:indent] ? " " : "") + line).gsub(/\s+$/, "") + "\n" }
88
+ new_lines = new_lines.map { |line| (block_manipulator.indentation_of(line_number, lines) + (options[:indent] ? " " : "") + line).gsub(/\s+$/, "") + "\n" }
116
89
  after = lines[line_number..]
117
90
  self.lines = before + (options[:prepend_newline] ? ["\n"] : []) + new_lines + after
118
91
  end
@@ -120,7 +93,7 @@ class Scaffolding::RoutesFileManipulator
120
93
  def insert_after(new_lines, line_number, options = {})
121
94
  options[:indent] ||= false
122
95
  before = lines[0..line_number]
123
- new_lines = new_lines.map { |line| (indentation_of(line_number) + (options[:indent] ? " " : "") + line).gsub(/\s+$/, "") + "\n" }
96
+ new_lines = new_lines.map { |line| (block_manipulator.indentation_of(line_number, lines) + (options[:indent] ? " " : "") + line).gsub(/\s+$/, "") + "\n" }
124
97
  after = lines[(line_number + 1)..]
125
98
  self.lines = before + new_lines + (options[:append_newline] ? ["\n"] : []) + after
126
99
  end
@@ -129,7 +102,7 @@ class Scaffolding::RoutesFileManipulator
129
102
  namespace_lines = find_namespaces(namespaces, within)
130
103
  if namespace_lines[namespaces.last]
131
104
  block_start = namespace_lines[namespaces.last]
132
- insertion_point = find_block_end(block_start)
105
+ insertion_point = block_manipulator.find_block_end(starting_from: block_start, lines: lines)
133
106
  insert_before(new_lines, insertion_point, indent: true, prepend_newline: (insertion_point > block_start + 1))
134
107
  else
135
108
  raise "we weren't able to insert the following lines into the namespace block for #{namespaces.join(" -> ")}:\n\n#{new_lines.join("\n")}"
@@ -269,7 +242,7 @@ class Scaffolding::RoutesFileManipulator
269
242
  namespace_name = match_data[2]
270
243
  local_namespace = find_namespaces([namespace_name], within)
271
244
  starting_line_number = local_namespace[namespace_name]
272
- local_namespace_block = ((starting_line_number + 1)..(find_block_end(starting_line_number) + 1))
245
+ local_namespace_block = ((starting_line_number + 1)..(block_manipulator.find_block_end(starting_from: starting_line_number, lines: lines) + 1))
273
246
 
274
247
  if local_namespace_blocks.empty?
275
248
  local_namespace_blocks << local_namespace_block
@@ -296,11 +269,11 @@ class Scaffolding::RoutesFileManipulator
296
269
  def namespace_blocks_directly_under_parent(within)
297
270
  blocks = []
298
271
  if lines[within].match?(/do$/)
299
- parent_indentation_size = block_manipulator.block_indentation_size(within)
300
- within_block_end = find_block_end(within)
272
+ parent_indentation_size = block_manipulator.indentation_of(within, lines).length
273
+ within_block_end = block_manipulator.find_block_end(starting_from: within, lines: lines)
301
274
  within.upto(within_block_end) do |line_number|
302
275
  if lines[line_number].match?(/^#{" " * (parent_indentation_size + 2)}namespace/)
303
- namespace_block_lines = line_number..find_block_end(line_number)
276
+ namespace_block_lines = line_number..block_manipulator.find_block_end(starting_from: line_number, lines: lines)
304
277
  blocks << namespace_block_lines
305
278
  end
306
279
  end
@@ -315,7 +288,7 @@ class Scaffolding::RoutesFileManipulator
315
288
 
316
289
  def lines_within(within)
317
290
  return lines unless within
318
- lines[(within + 1)..(find_block_end(within) + 1)]
291
+ lines[(within + 1)..(block_manipulator.find_block_end(starting_from: within, lines: lines) + 1)]
319
292
  end
320
293
 
321
294
  def find_or_convert_resource_block(parent_resource, options = {})
@@ -338,7 +311,7 @@ class Scaffolding::RoutesFileManipulator
338
311
  end
339
312
 
340
313
  def insert(lines_to_add, within)
341
- insertion_line = find_block_end(within)
314
+ insertion_line = block_manipulator.find_block_end(starting_from: within, lines: lines)
342
315
  result_line = insertion_line
343
316
  unless insertion_line == within + 1
344
317
  # only put the extra space if we're adding this line after a block
@@ -382,7 +355,7 @@ class Scaffolding::RoutesFileManipulator
382
355
 
383
356
  # We want to see if there are any namespaces one level above the parent itself,
384
357
  # because namespaces with the same name as the resource can exist on the same level.
385
- parent_block_start = find_block_parent(parent_within)
358
+ parent_block_start = block_manipulator.find_block_parent(parent_within, lines)
386
359
  namespace_line_within = find_or_create_namespaces(child_namespaces, parent_block_start)
387
360
  find_or_create_resource([child_resource], options: "except: collection_actions", within: namespace_line_within)
388
361
  unless find_namespaces(child_namespaces, within)[child_namespaces.last]
@@ -401,7 +374,7 @@ class Scaffolding::RoutesFileManipulator
401
374
  # resources :projects_deliverables, path: 'projects/deliverables' do
402
375
  # resources :objectives
403
376
  # end
404
- block_parent_within = find_block_parent(top_parent_namespace)
377
+ block_parent_within = block_manipulator.find_block_parent(top_parent_namespace, lines)
405
378
  parent_namespaces_and_resource = (parent_namespaces + [parent_resource]).join("_")
406
379
  parent_within = find_or_create_resource_block([parent_namespaces_and_resource], options: "path: '#{parent_namespaces_and_resource.tr("_", "/")}'", within: block_parent_within)
407
380
  find_or_create_resource(child_namespaces + [child_resource], within: parent_within)
@@ -775,6 +775,10 @@ class Scaffolding::Transformer
775
775
  # add_additional_step :yellow, transform_string("We've added a reference to a `placeholder` to the form for the select or super_select field, but unfortunately earlier versions of the scaffolded locales Yaml don't include a reference to `fields: *fields` under `form`. Please add it, otherwise your form won't be able to locate the appropriate placeholder label.")
776
776
  end
777
777
 
778
+ if type == "color_picker"
779
+ field_options[:color_picker_options] = "t('#{child.pluralize.underscore}.fields.color_picker_value.options')"
780
+ end
781
+
778
782
  # TODO: This feels incorrect.
779
783
  # Should we adjust the partials to only use `{multiple: true}` or `html_options: {multiple_true}`?
780
784
  if is_multiple
@@ -1347,7 +1351,7 @@ class Scaffolding::Transformer
1347
1351
  end
1348
1352
 
1349
1353
  unless cli_options["skip-table"]
1350
- scaffold_replace_line_in_file("./app/views/account/scaffolding/completely_concrete/tangible_things/_index.html.erb", transform_string("<tbody data-reorder=\"<%= url_for [:reorder, :account, context, collection] %>\">"), "<tbody>")
1354
+ scaffold_replace_line_in_file("./app/views/account/scaffolding/completely_concrete/tangible_things/_index.html.erb", transform_string("<tbody data-controller=\"sortable\" data-sortable-reorder-path-value=\"<%= url_for [:reorder, :account, context, collection] %>\">"), "<tbody>")
1351
1355
  end
1352
1356
 
1353
1357
  unless cli_options["skip-controller"]
data/lib/scaffolding.rb CHANGED
@@ -2,7 +2,7 @@ module Scaffolding
2
2
  def self.valid_attribute_type?(type)
3
3
  [
4
4
  "boolean",
5
- "button",
5
+ "buttons",
6
6
  "cloudinary_image",
7
7
  "color_picker",
8
8
  "date_and_time_field",
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bullet_train-super_scaffolding
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.32
4
+ version: 1.0.33
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Culver
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-02 00:00:00.000000000 Z
11
+ date: 2022-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: standard
@@ -192,7 +192,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
192
192
  - !ruby/object:Gem::Version
193
193
  version: '0'
194
194
  requirements: []
195
- rubygems_version: 3.3.7
195
+ rubygems_version: 3.2.22
196
196
  signing_key:
197
197
  specification_version: 4
198
198
  summary: Bullet Train Super Scaffolding