bullet_train-super_scaffolding 1.0.32 → 1.0.33

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: 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