ruby2html 1.5.0 → 1.5.1

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: b2bea9aba310afffa16b447b62ff3de51cfa14357520b687b048e58af727e766
4
- data.tar.gz: f139b135af3c215ec2709b1b30fd8f8a7cd7dc941709dfcd5f5d1ef1d21fe63d
3
+ metadata.gz: f23a95af48405360717b40b2da95c55592066f6ac054e95bc07974d90fefd205
4
+ data.tar.gz: a2ee6ccafaeb77d085ee8227b51315ebed73a5a1a46eef7eb885f8b1a1b88ed6
5
5
  SHA512:
6
- metadata.gz: ef60077fcf16bf1e046368280d9a96222c412cbc1f8369350293cdf2149ff6d7cc3f1184c5a6c2acecf93ce2b10406f45bcb6000e70cfa3ba9fc2987e7d64e30
7
- data.tar.gz: a71ef6f89836cf773cb4c7de7f9c01ec13081ba1a13cc35a569d2ef90436403ce7b4811862883c16b5002f137a993d88bc5144ee0b1e9f7204683324e0707235
6
+ metadata.gz: a09d5f0288ca174e8348620f62b1ac11331fb53f34ea9790f16b81c27fae218aa4c22076512c5716b41b1c4ddc3376f77d5f593ac8359f65be71c9a002fcd280
7
+ data.tar.gz: 64e555a4b2cb1f4470f00a967b310cd7a23cdc79bdf2b2650af5ee044aef1049bd37677e771e6d65f84f6e15234c9cd39fadf45af3086481e30a83c9d3b7b8a4
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ div do
4
+ h1 'form'
5
+
6
+ form_with url: '/form', method: 'post' do |f|
7
+ f.label :name
8
+ f.text_field :name
9
+ f.submit 'submit'
10
+ end
11
+
12
+ link_to 'Home', root_path
13
+ # button_to 'home', '/'
14
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ruby2html
4
+ module RailsComponents
5
+ class BaseComponent
6
+ def initialize(render, context, method, *args, **options)
7
+ @render = render
8
+ @context = context
9
+ @method = method
10
+ @args = args
11
+ @options = options
12
+ end
13
+
14
+ def render(&block)
15
+ raise NotImplementedError
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ruby2html
4
+ module RailsComponents
5
+ class ButtonTo < BaseComponent
6
+ def render(&block)
7
+ @render.plain(@context.button_to(*@args, **@options, &block))
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,93 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ruby2html
4
+ module RailsComponents
5
+ class FormWith < BaseComponent
6
+ include ActionView::Helpers::FormHelper
7
+ def render(&block)
8
+ model = @options[:model]
9
+ scope = @options[:scope]
10
+ url = @options[:url]
11
+ method = @options[:method]
12
+ local = @options[:local]
13
+
14
+ form_options = @options.except(:model, :scope, :url, :method, :local)
15
+ form_options[:action] = determine_url(model, url)
16
+ form_options[:method] = determine_method(model, method)
17
+ form_options['data-remote'] = 'true' unless local
18
+ @model = model
19
+ @scope = determine_scope(model, scope)
20
+
21
+ @render.form(**form_options) do
22
+ authenticity_token_tag
23
+ utf8_enforcer_tag
24
+ block.call(self)
25
+ end
26
+ end
27
+
28
+ def label(method, text = nil, options = {})
29
+ @render.label(**options.merge(for: field_id(method))) do
30
+ text || method.to_s.humanize
31
+ end
32
+ end
33
+
34
+ def text_field(method, options = {})
35
+ @render.input(**options.merge(type: 'text', name: field_name(method), id: field_id(method), value: object_value_for(method)))
36
+ end
37
+
38
+ def hidden_field(method, options = {})
39
+ @render.input(**options.merge(type: 'hidden', name: field_name(method), id: field_id(method), value: object_value_for(method)))
40
+ end
41
+
42
+ def password_field(method, options = {})
43
+ @render.input(**options.merge(type: 'password', name: field_name(method), id: field_id(method)))
44
+ end
45
+
46
+ def file_field(method, options = {})
47
+ @render.input(**options.merge(type: 'file', name: field_name(method), id: field_id(method)))
48
+ end
49
+
50
+ def submit(value = nil, options = {})
51
+ @render.input(**options.merge(type: 'submit', value: value || submit_default_value))
52
+ end
53
+
54
+ private
55
+ def determine_url(model, url)
56
+ return url if url
57
+ return polymorphic_path(model) if model && model.respond_to?(:persisted?)
58
+ nil
59
+ end
60
+
61
+ def determine_method(model, method)
62
+ return method if method
63
+ return 'post' unless model
64
+ model.respond_to?(:persisted?) && model.persisted? ? 'patch' : 'post'
65
+ end
66
+
67
+ def determine_scope(model, scope)
68
+ return scope if scope
69
+ model.model_name.param_key if model.respond_to?(:model_name)
70
+ end
71
+
72
+ def authenticity_token_tag
73
+ @render.input(type: 'hidden', name: 'authenticity_token', value: @context.session[:_csrf_token])
74
+ end
75
+
76
+ def utf8_enforcer_tag
77
+ @render.input(type: 'hidden', name: 'utf8', value: '✓')
78
+ end
79
+
80
+ def field_name(method)
81
+ @scope ? "#{@scope}[#{method}]" : method.to_s
82
+ end
83
+
84
+ def field_id(method)
85
+ @scope ? "#{@scope}_#{method}" : method.to_s
86
+ end
87
+
88
+ def object_value_for(method)
89
+ @model&.public_send(method) if @model
90
+ end
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ruby2html
4
+ module RailsComponents
5
+ class ImageTag < BaseComponent
6
+ def render(&block)
7
+ @render.plain(@context.image_tag(*@args, **@options, &block))
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ruby2html
4
+ module RailsComponents
5
+ class LinkTo < BaseComponent
6
+ def render(&block)
7
+ @render.plain(@context.button_to(*@args, **@options, &block))
8
+ end
9
+ end
10
+ end
11
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ruby2html
4
- VERSION = '1.5.0'
4
+ VERSION = '1.5.1'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby2html
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - sebi
@@ -63,6 +63,7 @@ files:
63
63
  - app/models/concerns/.keep
64
64
  - app/views/benchmark/normal_html.html.erb
65
65
  - app/views/benchmark/ruby_2html.html.rb
66
+ - app/views/home/form.html.rb
66
67
  - app/views/home/index.html.erb
67
68
  - app/views/home/rb_files.html.rb
68
69
  - app/views/layouts/application.html.erb
@@ -97,6 +98,11 @@ files:
97
98
  - lib/gem/ruby2html.rb
98
99
  - lib/gem/ruby2html/component_helper.rb
99
100
  - lib/gem/ruby2html/html_beautifier_middleware.rb
101
+ - lib/gem/ruby2html/rails_components/base_component.rb
102
+ - lib/gem/ruby2html/rails_components/button_to.rb
103
+ - lib/gem/ruby2html/rails_components/form_with.rb
104
+ - lib/gem/ruby2html/rails_components/image_tag.rb
105
+ - lib/gem/ruby2html/rails_components/link_to.rb
100
106
  - lib/gem/ruby2html/rails_helper.rb
101
107
  - lib/gem/ruby2html/railtie.rb
102
108
  - lib/gem/ruby2html/render.rb