ruby2html 1.2.0 → 1.3.0

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: 8e43d3eb304652b48e727067ce4361d654936cc0258589efd82adf55136a687d
4
- data.tar.gz: 25900c6ed9f1a441f3f5a2b6d457e13caa5bfca3db99a7573daa89af92351544
3
+ metadata.gz: 006b9857270b4ad9ebc613ca84e1e00327285e4e52f371417a42d2823e6b3099
4
+ data.tar.gz: f78b3b0d8929174dde445502d0c90051ff6ac95a8b37f7e05e7722ff91d96aaf
5
5
  SHA512:
6
- metadata.gz: 214487bc59cf8ebc35698f7c16ffca8add3d59dfb52142ef1273e5c1dc67d8351fad286f1b417bfd6e9913ae3c06be8e3bba06c81b9670a5a5561cb47e1ba683
7
- data.tar.gz: 430e623e958a739a33cdfd16d9d0039ff3354f1461cfe8d7db0a2418ce6fbff4a0352e37a67227e36058088c9c26fac0ffd2aaad50c3842a1ea71a536133610f
6
+ metadata.gz: aa9a480274cbe132f1053010d218b5f1e3e56be27dd224fc0d41867ea85e2d0afb763b121fb8179f2426d4bcbb5f17a0c70b0c361aff7b722afada0ea7b7a046
7
+ data.tar.gz: 49c3f7a01bfd9cc058ce68a672b8e2c159a41895a7af6b2352a8d150b192e1da445ea124640807d0d291da8cc53b528e25f9a960bf1e21f0103db7e48463abf0
data/README.md CHANGED
@@ -138,7 +138,7 @@ class GreetingComponent < ApplicationComponent
138
138
  end
139
139
 
140
140
  def call
141
- html(self) do
141
+ html do
142
142
  h1 class: 'greeting', 'data-user': @name do
143
143
  "Hello, #{@name}! 👋"
144
144
  end
@@ -164,19 +164,17 @@ class FarewellComponent < ApplicationComponent
164
164
  end
165
165
  ```
166
166
 
167
- File: `app/components/farewell_component.html.erb`
168
-
169
- ```erb
170
- <div class="farewell">
171
- <h2>Goodbye, <%= @name %>! 👋</h2>
172
- <p>We hope you enjoyed using Ruby2html!</p>
167
+ File: `app/components/farewell_component.html.rb`
173
168
 
174
- <%=
175
- html do
176
- link_to 'Home', root_path, class: 'btn btn-primary', 'data-turbo': false
177
- end
178
- %>
179
- </div>
169
+ ```rb
170
+ div class: 'farewell' do
171
+ h1 class: 'farewell-message' do
172
+ "Goodbye, #{@name}! 👋"
173
+ end
174
+ p class: 'farewell-text' do
175
+ 'We hope to see you again soon!'
176
+ end
177
+ end
180
178
  ```
181
179
 
182
180
  This flexibility allows you to:
@@ -197,7 +195,7 @@ class FirstComponent < ApplicationComponent
197
195
  end
198
196
 
199
197
  def call
200
- html(self) do
198
+ html do
201
199
  h1 id: 'first-component-title' do
202
200
  'first component'
203
201
  end
@@ -219,7 +217,7 @@ File: `app/components/second_component.rb`
219
217
 
220
218
  class SecondComponent < ApplicationComponent
221
219
  def call
222
- html(self) do
220
+ html do
223
221
  h1 class: 'my-class', id: 'second-component-title', 'data-controller': 'second' do
224
222
  'second component'
225
223
  end
@@ -6,4 +6,6 @@ div do
6
6
  h2 'A subheading'
7
7
  end
8
8
 
9
+ another_div
10
+
9
11
  p @item
@@ -4,4 +4,12 @@ class FirstComponent < ApplicationComponent
4
4
  def initialize
5
5
  @item = 'Hello, World!'
6
6
  end
7
+
8
+ def another_div
9
+ div do
10
+ h2 'Another subheading from component'
11
+ end
12
+
13
+ h1 'Yet Another heading from component'
14
+ end
7
15
  end
@@ -3,7 +3,25 @@
3
3
  module Ruby2html
4
4
  module ComponentHelper
5
5
  def html(&block)
6
- Ruby2html::Render.new(self, &block).render.html_safe
6
+ previous_renderer = __ruby2html_renderer__
7
+ Ruby2html::Render.new(self, &block).yield_self do |component_renderer|
8
+ Thread.current[:__ruby2html_renderer__] = component_renderer
9
+ component_renderer.render.html_safe
10
+ end
11
+ ensure
12
+ Thread.current[:__ruby2html_renderer__] = previous_renderer
13
+ end
14
+
15
+ def method_missing(method, *args, &block)
16
+ if __ruby2html_renderer__.respond_to?(method)
17
+ __ruby2html_renderer__.send(method, *args, &block)
18
+ else
19
+ super
20
+ end
21
+ end
22
+
23
+ def __ruby2html_renderer__
24
+ Thread.current[:__ruby2html_renderer__]
7
25
  end
8
26
  end
9
27
  end
@@ -11,9 +11,16 @@ module Ruby2html
11
11
 
12
12
  def call(_template, source)
13
13
  <<-RUBY
14
- Ruby2html::Render.new(self) do
14
+ begin
15
+ previous_renderer = Thread.current[:__ruby2html_renderer__]
16
+ renderer = Ruby2html::Render.new(self) do
15
17
  #{source}
16
- end.render
18
+ end
19
+ Thread.current[:__ruby2html_renderer__] = renderer
20
+ renderer.render
21
+ ensure
22
+ Thread.current[:__ruby2html_renderer__] = previous_renderer
23
+ end
17
24
  RUBY
18
25
  end
19
26
  end
@@ -6,14 +6,14 @@ require 'stringio'
6
6
  module Ruby2html
7
7
  class Render
8
8
  HTML5_TAGS = %w[
9
- a abbr address area article aside audio b base bdi bdo blockquote body br button canvas caption
10
- cite code col colgroup data datalist dd del details dfn dialog div dl dt em embed fieldset
11
- figcaption figure footer form h1 h2 h3 h4 h5 h6 head header hr html i iframe img input ins
12
- kbd label legend li link main map mark meta meter nav noscript object ol optgroup option
13
- output p param picture pre progress q rp rt ruby s samp script section select small source
14
- span strong style sub summary sup table tbody td template textarea tfoot th thead time title
15
- tr track u ul var video wbr
16
- ].freeze
9
+ a abbr address area article aside audio b base bdi bdo blockquote body br button canvas caption
10
+ cite code col colgroup data datalist dd del details dfn dialog div dl dt em embed fieldset
11
+ figcaption figure footer form h1 h2 h3 h4 h5 h6 head header hr html i iframe img input ins
12
+ kbd label legend li link main map mark meta meter nav noscript object ol optgroup option
13
+ output p param picture pre progress q rp rt ruby s samp script section select small source
14
+ span strong style sub summary sup table tbody td template textarea tfoot th thead time title
15
+ tr track u ul var video wbr
16
+ ].freeze
17
17
 
18
18
  VOID_ELEMENTS = %w[area base br col embed hr img input link meta param source track wbr].freeze
19
19
 
@@ -49,6 +49,10 @@ module Ruby2html
49
49
  end
50
50
  end
51
51
 
52
+ def respond_to?(method_name, include_private = false)
53
+ HTML5_TAGS.include?(method_name) || super
54
+ end
55
+
52
56
  def html!(name, *args, **options, &block)
53
57
  content = args.first.is_a?(String) ? args.shift : nil
54
58
  attributes = options
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ruby2html
4
- VERSION = '1.2.0'
4
+ VERSION = '1.3.0'
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.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - sebi