superglue 0.41.0 → 0.50.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/install/web.rb CHANGED
@@ -1,5 +1,3 @@
1
- require "rails/version"
2
-
3
1
  def add_member_methods
4
2
  inject_into_file "app/models/application_record.rb", after: "class ApplicationRecord < ActiveRecord::Base\n" do
5
3
  <<-RUBY
@@ -15,21 +13,23 @@ def add_member_methods
15
13
  end
16
14
 
17
15
  def app_js_path
18
- if Rails.version >= "7"
19
- "app/javascript/"
20
- else
21
- "app/javascript/packs"
22
- end
16
+ "app/javascript/"
23
17
  end
24
18
 
25
19
  say "Copying application.js file to #{app_js_path}"
26
20
  copy_file "#{__dir__}/templates/web/application.js", "#{app_js_path}/application.js"
27
21
 
28
- say "Copying reducer.js file to #{app_js_path}"
29
- copy_file "#{__dir__}/templates/web/reducer.js", "#{app_js_path}/reducer.js"
22
+ say "Copying page_to_page_mapping.js file to #{app_js_path}"
23
+ copy_file "#{__dir__}/templates/web/page_to_page_mapping.js", "#{app_js_path}/page_to_page_mapping.js"
24
+
25
+ say "Copying flash.js file to #{app_js_path}"
26
+ copy_file "#{__dir__}/templates/web/flash.js", "#{app_js_path}/slices/flash.js"
30
27
 
31
- say "Copying action_creators.js file to #{app_js_path}"
32
- copy_file "#{__dir__}/templates/web/action_creators.js", "#{app_js_path}/action_creators.js"
28
+ say "Copying pages.js file to #{app_js_path}"
29
+ copy_file "#{__dir__}/templates/web/pages.js", "#{app_js_path}/slices/pages.js"
30
+
31
+ say "Copying store.js file to #{app_js_path}"
32
+ copy_file "#{__dir__}/templates/web/store.js", "#{app_js_path}/store.js"
33
33
 
34
34
  say "Copying actions.js file to #{app_js_path}"
35
35
  copy_file "#{__dir__}/templates/web/actions.js", "#{app_js_path}/actions.js"
@@ -46,14 +46,10 @@ copy_file "#{__dir__}/templates/web/application.json.props", "app/views/layouts/
46
46
  say "Adding required member methods to ApplicationRecord"
47
47
  add_member_methods
48
48
 
49
- say "Installing React, Redux, and Superglue"
50
- run "yarn add history html-react-parser react-redux redux-thunk redux reduce-reducers immer @thoughtbot/superglue --save"
49
+ say "Installing FormProps"
50
+ run "bundle add form_props"
51
51
 
52
- if Rails.version < "7"
53
- # For newer webpacker
54
- insert_into_file Webpacker.config.config_path, "'app/views', 'app/components'", after: /additional_paths: \[/
55
- # For older webpacker
56
- insert_into_file Webpacker.config.config_path, "'app/views', 'app/components'", after: /resolved_paths: \[/
57
- end
52
+ say "Installing Superglue and friends"
53
+ run "yarn add history react react-dom @reduxjs/toolkit react-redux @thoughtbot/superglue --save"
58
54
 
59
55
  say "Superglue is Installed! 🎉", :green
@@ -1,493 +1,5 @@
1
1
  module Superglue
2
2
  module Helpers
3
- POSSIBLE_STANDARD_NAMES = {
4
- # HTML
5
- accept: 'accept',
6
- acceptcharset: 'acceptCharset',
7
- 'accept-charset': 'acceptCharset',
8
- accesskey: 'accessKey',
9
- action: 'action',
10
- allowfullscreen: 'allowFullScreen',
11
- alt: 'alt',
12
- as: 'as',
13
- async: 'async',
14
- autocapitalize: 'autoCapitalize',
15
- autocomplete: 'autoComplete',
16
- autocorrect: 'autoCorrect',
17
- autofocus: 'autoFocus',
18
- autoplay: 'autoPlay',
19
- autosave: 'autoSave',
20
- capture: 'capture',
21
- cellpadding: 'cellPadding',
22
- cellspacing: 'cellSpacing',
23
- challenge: 'challenge',
24
- charset: 'charSet',
25
- checked: 'checked',
26
- children: 'children',
27
- cite: 'cite',
28
- class: 'className',
29
- classid: 'classID',
30
- classname: 'className',
31
- cols: 'cols',
32
- colspan: 'colSpan',
33
- content: 'content',
34
- contenteditable: 'contentEditable',
35
- contextmenu: 'contextMenu',
36
- controls: 'controls',
37
- controlslist: 'controlsList',
38
- coords: 'coords',
39
- crossorigin: 'crossOrigin',
40
- dangerouslysetinnerhtml: 'dangerouslySetInnerHTML',
41
- data: 'data',
42
- datetime: 'dateTime',
43
- default: 'default',
44
- defaultchecked: 'defaultChecked',
45
- defaultvalue: 'defaultValue',
46
- defer: 'defer',
47
- dir: 'dir',
48
- disabled: 'disabled',
49
- disablepictureinpicture: 'disablePictureInPicture',
50
- disableremoteplayback: 'disableRemotePlayback',
51
- download: 'download',
52
- draggable: 'draggable',
53
- enctype: 'encType',
54
- for: 'htmlFor',
55
- form: 'form',
56
- formmethod: 'formMethod',
57
- formaction: 'formAction',
58
- formenctype: 'formEncType',
59
- formnovalidate: 'formNoValidate',
60
- formtarget: 'formTarget',
61
- frameborder: 'frameBorder',
62
- headers: 'headers',
63
- height: 'height',
64
- hidden: 'hidden',
65
- high: 'high',
66
- href: 'href',
67
- hreflang: 'hrefLang',
68
- htmlfor: 'htmlFor',
69
- httpequiv: 'httpEquiv',
70
- 'http-equiv': 'httpEquiv',
71
- icon: 'icon',
72
- id: 'id',
73
- innerhtml: 'innerHTML',
74
- inputmode: 'inputMode',
75
- integrity: 'integrity',
76
- is: 'is',
77
- itemid: 'itemID',
78
- itemprop: 'itemProp',
79
- itemref: 'itemRef',
80
- itemscope: 'itemScope',
81
- itemtype: 'itemType',
82
- keyparams: 'keyParams',
83
- keytype: 'keyType',
84
- kind: 'kind',
85
- label: 'label',
86
- lang: 'lang',
87
- list: 'list',
88
- loop: 'loop',
89
- low: 'low',
90
- manifest: 'manifest',
91
- marginwidth: 'marginWidth',
92
- marginheight: 'marginHeight',
93
- max: 'max',
94
- maxlength: 'maxLength',
95
- media: 'media',
96
- mediagroup: 'mediaGroup',
97
- method: 'method',
98
- min: 'min',
99
- minlength: 'minLength',
100
- multiple: 'multiple',
101
- muted: 'muted',
102
- name: 'name',
103
- nomodule: 'noModule',
104
- nonce: 'nonce',
105
- novalidate: 'noValidate',
106
- open: 'open',
107
- optimum: 'optimum',
108
- pattern: 'pattern',
109
- placeholder: 'placeholder',
110
- playsinline: 'playsInline',
111
- poster: 'poster',
112
- preload: 'preload',
113
- profile: 'profile',
114
- radiogroup: 'radioGroup',
115
- readonly: 'readOnly',
116
- referrerpolicy: 'referrerPolicy',
117
- rel: 'rel',
118
- required: 'required',
119
- reversed: 'reversed',
120
- role: 'role',
121
- rows: 'rows',
122
- rowspan: 'rowSpan',
123
- sandbox: 'sandbox',
124
- scope: 'scope',
125
- scoped: 'scoped',
126
- scrolling: 'scrolling',
127
- seamless: 'seamless',
128
- selected: 'selected',
129
- shape: 'shape',
130
- size: 'size',
131
- sizes: 'sizes',
132
- span: 'span',
133
- spellcheck: 'spellCheck',
134
- src: 'src',
135
- srcdoc: 'srcDoc',
136
- srclang: 'srcLang',
137
- srcset: 'srcSet',
138
- start: 'start',
139
- step: 'step',
140
- style: 'style',
141
- summary: 'summary',
142
- tabindex: 'tabIndex',
143
- target: 'target',
144
- title: 'title',
145
- type: 'type',
146
- usemap: 'useMap',
147
- value: 'value',
148
- width: 'width',
149
- wmode: 'wmode',
150
- wrap: 'wrap',
151
-
152
- # SVG
153
- about: 'about',
154
- accentheight: 'accentHeight',
155
- 'accent-height': 'accentHeight',
156
- accumulate: 'accumulate',
157
- additive: 'additive',
158
- alignmentbaseline: 'alignmentBaseline',
159
- 'alignment-baseline': 'alignmentBaseline',
160
- allowreorder: 'allowReorder',
161
- alphabetic: 'alphabetic',
162
- amplitude: 'amplitude',
163
- arabicform: 'arabicForm',
164
- 'arabic-form': 'arabicForm',
165
- ascent: 'ascent',
166
- attributename: 'attributeName',
167
- attributetype: 'attributeType',
168
- autoreverse: 'autoReverse',
169
- azimuth: 'azimuth',
170
- basefrequency: 'baseFrequency',
171
- baselineshift: 'baselineShift',
172
- 'baseline-shift': 'baselineShift',
173
- baseprofile: 'baseProfile',
174
- bbox: 'bbox',
175
- begin: 'begin',
176
- bias: 'bias',
177
- by: 'by',
178
- calcmode: 'calcMode',
179
- capheight: 'capHeight',
180
- 'cap-height': 'capHeight',
181
- clip: 'clip',
182
- clippath: 'clipPath',
183
- 'clip-path': 'clipPath',
184
- clippathunits: 'clipPathUnits',
185
- cliprule: 'clipRule',
186
- 'clip-rule': 'clipRule',
187
- color: 'color',
188
- colorinterpolation: 'colorInterpolation',
189
- 'color-interpolation': 'colorInterpolation',
190
- colorinterpolationfilters: 'colorInterpolationFilters',
191
- 'color-interpolation-filters': 'colorInterpolationFilters',
192
- colorprofile: 'colorProfile',
193
- 'color-profile': 'colorProfile',
194
- colorrendering: 'colorRendering',
195
- 'color-rendering': 'colorRendering',
196
- contentscripttype: 'contentScriptType',
197
- contentstyletype: 'contentStyleType',
198
- cursor: 'cursor',
199
- cx: 'cx',
200
- cy: 'cy',
201
- d: 'd',
202
- datatype: 'datatype',
203
- decelerate: 'decelerate',
204
- descent: 'descent',
205
- diffuseconstant: 'diffuseConstant',
206
- direction: 'direction',
207
- display: 'display',
208
- divisor: 'divisor',
209
- dominantbaseline: 'dominantBaseline',
210
- 'dominant-baseline': 'dominantBaseline',
211
- dur: 'dur',
212
- dx: 'dx',
213
- dy: 'dy',
214
- edgemode: 'edgeMode',
215
- elevation: 'elevation',
216
- enablebackground: 'enableBackground',
217
- 'enable-background': 'enableBackground',
218
- end: 'end',
219
- exponent: 'exponent',
220
- externalresourcesrequired: 'externalResourcesRequired',
221
- fill: 'fill',
222
- fillopacity: 'fillOpacity',
223
- 'fill-opacity': 'fillOpacity',
224
- fillrule: 'fillRule',
225
- 'fill-rule': 'fillRule',
226
- filter: 'filter',
227
- filterres: 'filterRes',
228
- filterunits: 'filterUnits',
229
- floodopacity: 'floodOpacity',
230
- 'flood-opacity': 'floodOpacity',
231
- floodcolor: 'floodColor',
232
- 'flood-color': 'floodColor',
233
- focusable: 'focusable',
234
- fontfamily: 'fontFamily',
235
- 'font-family': 'fontFamily',
236
- fontsize: 'fontSize',
237
- 'font-size': 'fontSize',
238
- fontsizeadjust: 'fontSizeAdjust',
239
- 'font-size-adjust': 'fontSizeAdjust',
240
- fontstretch: 'fontStretch',
241
- 'font-stretch': 'fontStretch',
242
- fontstyle: 'fontStyle',
243
- 'font-style': 'fontStyle',
244
- fontvariant: 'fontVariant',
245
- 'font-variant': 'fontVariant',
246
- fontweight: 'fontWeight',
247
- 'font-weight': 'fontWeight',
248
- format: 'format',
249
- from: 'from',
250
- fx: 'fx',
251
- fy: 'fy',
252
- g1: 'g1',
253
- g2: 'g2',
254
- glyphname: 'glyphName',
255
- 'glyph-name': 'glyphName',
256
- glyphorientationhorizontal: 'glyphOrientationHorizontal',
257
- 'glyph-orientation-horizontal': 'glyphOrientationHorizontal',
258
- glyphorientationvertical: 'glyphOrientationVertical',
259
- 'glyph-orientation-vertical': 'glyphOrientationVertical',
260
- glyphref: 'glyphRef',
261
- gradienttransform: 'gradientTransform',
262
- gradientunits: 'gradientUnits',
263
- hanging: 'hanging',
264
- horizadvx: 'horizAdvX',
265
- 'horiz-adv-x': 'horizAdvX',
266
- horizoriginx: 'horizOriginX',
267
- 'horiz-origin-x': 'horizOriginX',
268
- ideographic: 'ideographic',
269
- imagerendering: 'imageRendering',
270
- 'image-rendering': 'imageRendering',
271
- in2: 'in2',
272
- in: 'in',
273
- inlist: 'inlist',
274
- intercept: 'intercept',
275
- k1: 'k1',
276
- k2: 'k2',
277
- k3: 'k3',
278
- k4: 'k4',
279
- k: 'k',
280
- kernelmatrix: 'kernelMatrix',
281
- kernelunitlength: 'kernelUnitLength',
282
- kerning: 'kerning',
283
- keypoints: 'keyPoints',
284
- keysplines: 'keySplines',
285
- keytimes: 'keyTimes',
286
- lengthadjust: 'lengthAdjust',
287
- letterspacing: 'letterSpacing',
288
- 'letter-spacing': 'letterSpacing',
289
- lightingcolor: 'lightingColor',
290
- 'lighting-color': 'lightingColor',
291
- limitingconeangle: 'limitingConeAngle',
292
- local: 'local',
293
- markerend: 'markerEnd',
294
- 'marker-end': 'markerEnd',
295
- markerheight: 'markerHeight',
296
- markermid: 'markerMid',
297
- 'marker-mid': 'markerMid',
298
- markerstart: 'markerStart',
299
- 'marker-start': 'markerStart',
300
- markerunits: 'markerUnits',
301
- markerwidth: 'markerWidth',
302
- mask: 'mask',
303
- maskcontentunits: 'maskContentUnits',
304
- maskunits: 'maskUnits',
305
- mathematical: 'mathematical',
306
- mode: 'mode',
307
- numoctaves: 'numOctaves',
308
- offset: 'offset',
309
- opacity: 'opacity',
310
- operator: 'operator',
311
- order: 'order',
312
- orient: 'orient',
313
- orientation: 'orientation',
314
- origin: 'origin',
315
- overflow: 'overflow',
316
- overlineposition: 'overlinePosition',
317
- 'overline-position': 'overlinePosition',
318
- overlinethickness: 'overlineThickness',
319
- 'overline-thickness': 'overlineThickness',
320
- paintorder: 'paintOrder',
321
- 'paint-order': 'paintOrder',
322
- panose1: 'panose1',
323
- 'panose-1': 'panose1',
324
- pathlength: 'pathLength',
325
- patterncontentunits: 'patternContentUnits',
326
- patterntransform: 'patternTransform',
327
- patternunits: 'patternUnits',
328
- pointerevents: 'pointerEvents',
329
- 'pointer-events': 'pointerEvents',
330
- points: 'points',
331
- pointsatx: 'pointsAtX',
332
- pointsaty: 'pointsAtY',
333
- pointsatz: 'pointsAtZ',
334
- prefix: 'prefix',
335
- preservealpha: 'preserveAlpha',
336
- preserveaspectratio: 'preserveAspectRatio',
337
- primitiveunits: 'primitiveUnits',
338
- property: 'property',
339
- r: 'r',
340
- radius: 'radius',
341
- refx: 'refX',
342
- refy: 'refY',
343
- renderingintent: 'renderingIntent',
344
- 'rendering-intent': 'renderingIntent',
345
- repeatcount: 'repeatCount',
346
- repeatdur: 'repeatDur',
347
- requiredextensions: 'requiredExtensions',
348
- requiredfeatures: 'requiredFeatures',
349
- resource: 'resource',
350
- restart: 'restart',
351
- result: 'result',
352
- results: 'results',
353
- rotate: 'rotate',
354
- rx: 'rx',
355
- ry: 'ry',
356
- scale: 'scale',
357
- security: 'security',
358
- seed: 'seed',
359
- shaperendering: 'shapeRendering',
360
- 'shape-rendering': 'shapeRendering',
361
- slope: 'slope',
362
- spacing: 'spacing',
363
- specularconstant: 'specularConstant',
364
- specularexponent: 'specularExponent',
365
- speed: 'speed',
366
- spreadmethod: 'spreadMethod',
367
- startoffset: 'startOffset',
368
- stddeviation: 'stdDeviation',
369
- stemh: 'stemh',
370
- stemv: 'stemv',
371
- stitchtiles: 'stitchTiles',
372
- stopcolor: 'stopColor',
373
- 'stop-color': 'stopColor',
374
- stopopacity: 'stopOpacity',
375
- 'stop-opacity': 'stopOpacity',
376
- strikethroughposition: 'strikethroughPosition',
377
- 'strikethrough-position': 'strikethroughPosition',
378
- strikethroughthickness: 'strikethroughThickness',
379
- 'strikethrough-thickness': 'strikethroughThickness',
380
- string: 'string',
381
- stroke: 'stroke',
382
- strokedasharray: 'strokeDasharray',
383
- 'stroke-dasharray': 'strokeDasharray',
384
- strokedashoffset: 'strokeDashoffset',
385
- 'stroke-dashoffset': 'strokeDashoffset',
386
- strokelinecap: 'strokeLinecap',
387
- 'stroke-linecap': 'strokeLinecap',
388
- strokelinejoin: 'strokeLinejoin',
389
- 'stroke-linejoin': 'strokeLinejoin',
390
- strokemiterlimit: 'strokeMiterlimit',
391
- 'stroke-miterlimit': 'strokeMiterlimit',
392
- strokewidth: 'strokeWidth',
393
- 'stroke-width': 'strokeWidth',
394
- strokeopacity: 'strokeOpacity',
395
- 'stroke-opacity': 'strokeOpacity',
396
- suppresscontenteditablewarning: 'suppressContentEditableWarning',
397
- suppresshydrationwarning: 'suppressHydrationWarning',
398
- surfacescale: 'surfaceScale',
399
- systemlanguage: 'systemLanguage',
400
- tablevalues: 'tableValues',
401
- targetx: 'targetX',
402
- targety: 'targetY',
403
- textanchor: 'textAnchor',
404
- 'text-anchor': 'textAnchor',
405
- textdecoration: 'textDecoration',
406
- 'text-decoration': 'textDecoration',
407
- textlength: 'textLength',
408
- textrendering: 'textRendering',
409
- 'text-rendering': 'textRendering',
410
- to: 'to',
411
- transform: 'transform',
412
- typeof: 'typeof',
413
- u1: 'u1',
414
- u2: 'u2',
415
- underlineposition: 'underlinePosition',
416
- 'underline-position': 'underlinePosition',
417
- underlinethickness: 'underlineThickness',
418
- 'underline-thickness': 'underlineThickness',
419
- unicode: 'unicode',
420
- unicodebidi: 'unicodeBidi',
421
- 'unicode-bidi': 'unicodeBidi',
422
- unicoderange: 'unicodeRange',
423
- 'unicode-range': 'unicodeRange',
424
- unitsperem: 'unitsPerEm',
425
- 'units-per-em': 'unitsPerEm',
426
- unselectable: 'unselectable',
427
- valphabetic: 'vAlphabetic',
428
- 'v-alphabetic': 'vAlphabetic',
429
- values: 'values',
430
- vectoreffect: 'vectorEffect',
431
- 'vector-effect': 'vectorEffect',
432
- version: 'version',
433
- vertadvy: 'vertAdvY',
434
- 'vert-adv-y': 'vertAdvY',
435
- vertoriginx: 'vertOriginX',
436
- 'vert-origin-x': 'vertOriginX',
437
- vertoriginy: 'vertOriginY',
438
- 'vert-origin-y': 'vertOriginY',
439
- vhanging: 'vHanging',
440
- 'v-hanging': 'vHanging',
441
- videographic: 'vIdeographic',
442
- 'v-ideographic': 'vIdeographic',
443
- viewbox: 'viewBox',
444
- viewtarget: 'viewTarget',
445
- visibility: 'visibility',
446
- vmathematical: 'vMathematical',
447
- 'v-mathematical': 'vMathematical',
448
- vocab: 'vocab',
449
- widths: 'widths',
450
- wordspacing: 'wordSpacing',
451
- 'word-spacing': 'wordSpacing',
452
- writingmode: 'writingMode',
453
- 'writing-mode': 'writingMode',
454
- x1: 'x1',
455
- x2: 'x2',
456
- x: 'x',
457
- xchannelselector: 'xChannelSelector',
458
- xheight: 'xHeight',
459
- 'x-height': 'xHeight',
460
- xlinkactuate: 'xlinkActuate',
461
- 'xlink:actuate': 'xlinkActuate',
462
- xlinkarcrole: 'xlinkArcrole',
463
- 'xlink:arcrole': 'xlinkArcrole',
464
- xlinkhref: 'xlinkHref',
465
- 'xlink:href': 'xlinkHref',
466
- xlinkrole: 'xlinkRole',
467
- 'xlink:role': 'xlinkRole',
468
- xlinkshow: 'xlinkShow',
469
- 'xlink:show': 'xlinkShow',
470
- xlinktitle: 'xlinkTitle',
471
- 'xlink:title': 'xlinkTitle',
472
- xlinktype: 'xlinkType',
473
- 'xlink:type': 'xlinkType',
474
- xmlbase: 'xmlBase',
475
- 'xml:base': 'xmlBase',
476
- xmllang: 'xmlLang',
477
- 'xml:lang': 'xmlLang',
478
- xmlns: 'xmlns',
479
- 'xml:space': 'xmlSpace',
480
- xmlnsxlink: 'xmlnsXlink',
481
- 'xmlns:xlink': 'xmlnsXlink',
482
- xmlspace: 'xmlSpace',
483
- y1: 'y1',
484
- y2: 'y2',
485
- y: 'y',
486
- ychannelselector: 'yChannelSelector',
487
- z: 'z',
488
- zoomandpan: 'zoomAndPan'
489
- }
490
-
491
3
  def redirect_back_with_props_at(opts)
492
4
  if request.referrer && params[:props_at]
493
5
  referrer_url = URI.parse(request.referrer)
@@ -502,34 +14,12 @@ module Superglue
502
14
  end
503
15
  end
504
16
 
505
- def props_from_form_with(model: nil, scope: nil, url: nil, format: nil, **options)
506
- options[:allow_method_names_outside_object] = true
507
- options[:skip_default_ids] = !helpers.send(:form_with_generates_ids)
508
-
509
- if model
510
- url ||= helpers.send(:polymorphic_path, model, format: format)
511
-
512
- model = model.last if model.is_a?(Array)
513
- scope ||= helpers.send(:model_name_from_record_or_class, model).param_key
514
- end
515
-
516
- html_options = helpers.send(:html_options_for_form_with, url, model, options)
517
- html_options.delete("authenticity_token")
518
- html_options.delete("enforce_utf8")
519
-
520
- key_vals = html_options.map { |k, v|
521
- [POSSIBLE_STANDARD_NAMES[k.to_sym] || k.camelize(:lower), v]
522
- }
523
- Hash[key_vals]
524
- end
525
-
526
17
  def param_to_search_path(param)
527
18
  if param
528
- param.gsub(/[^\da-zA-Z\_\=\.]+/, '')
529
- .gsub(/\.+/, '.')
530
- .split('.')
19
+ param.gsub(/[^\da-zA-Z_=.]+/, "").squeeze(".")
20
+ .split(".")
531
21
  .map do |part|
532
- if part =~ /^-?[0-9]+$/
22
+ if /^-?[0-9]+$/.match?(part)
533
23
  part.to_i
534
24
  else
535
25
  part
@@ -540,13 +30,13 @@ module Superglue
540
30
 
541
31
  def search_path_to_camelized_param(path)
542
32
  path.map do |part|
543
- if part.include? '='
544
- key, rest = part.split('=')
545
- [key.camelize(:lower), rest].join('=')
33
+ if part.include? "="
34
+ key, rest = part.split("=")
35
+ [key.camelize(:lower), rest].join("=")
546
36
  else
547
37
  part.camelize(:lower)
548
38
  end
549
- end.join('.')
39
+ end.join(".")
550
40
  end
551
41
  end
552
42
  end
@@ -3,7 +3,7 @@ module Superglue
3
3
  def _compute_redirect_to_location(request, options)
4
4
  computed_location = URI.parse(super)
5
5
  next_param = Rack::Utils
6
- .parse_nested_query(computed_location.query)
6
+ .parse_nested_query(computed_location.query)
7
7
 
8
8
  if request.params[:__] == "0"
9
9
  computed_location.query = next_param.merge({__: "0"}).to_query
@@ -27,4 +27,3 @@ module Superglue
27
27
  end
28
28
  end
29
29
  end
30
-
data/lib/superglue.rb CHANGED
@@ -1,15 +1,15 @@
1
- require 'superglue/helpers'
2
- require 'superglue/redirection'
3
- require 'props_template'
1
+ require "superglue/helpers"
2
+ require "superglue/redirection"
3
+ require "props_template"
4
4
 
5
5
  module Superglue
6
6
  module Controller
7
- include Helpers, Redirection
7
+ include Redirection
8
+ include Helpers
8
9
 
9
10
  def self.included(base)
10
11
  if base.respond_to?(:helper_method)
11
12
  base.helper_method :param_to_search_path
12
- base.helper_method :props_from_form_with
13
13
  base.helper_method :search_path_to_camelized_param
14
14
  end
15
15
  end
@@ -22,7 +22,7 @@ module Superglue
22
22
  generators do |app|
23
23
  Rails::Generators.configure! app.config.generators
24
24
  Rails::Generators.hidden_namespaces.uniq!
25
- require 'generators/rails/scaffold_controller_generator'
25
+ require "generators/rails/scaffold_controller_generator"
26
26
  end
27
27
 
28
28
  initializer :superglue do |app|
@@ -1,20 +1,9 @@
1
1
  namespace :superglue do
2
- desc "Verifies if any version of react is in package.json"
3
- task :verify_react do
4
- package_json = JSON.parse(File.read(Rails.root.join("package.json")))
5
-
6
- if package_json['dependencies']['react'].nil?
7
- $stderr.puts "React not installed. Did you install React? https://github.com/rails/webpacker#react"
8
- $stderr.puts "Exiting!" && exit!
9
- end
10
- end
11
-
12
2
  namespace :install do
13
3
  desc "Install everything needed for superglue web"
14
- task 'web' => ["superglue:verify_react"] do
4
+ task "web" do
15
5
  template = File.expand_path("../install/web.rb", __dir__)
16
6
  exec "#{RbConfig.ruby} ./bin/rails app:template LOCATION=#{template}"
17
7
  end
18
8
  end
19
9
  end
20
-