html-tag 1.1.0 → 1.3.3

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: d7030cc9de11a7bd5172e81e687059c13b402c425b884b2712a0f75128ae21c0
4
- data.tar.gz: '085a7ec6e169b51bae3255471e0c98213fc29fbc9bed605995d1fc3ce1ff676c'
3
+ metadata.gz: 6e059a4d0fc919b9a8c8ea26b5909c24b5519acf7459314b15fb8d7b485f543b
4
+ data.tar.gz: 6a9386662a963454a5235376be4eec0f6170b21f393c069fd008f92fbdf89741
5
5
  SHA512:
6
- metadata.gz: 22a1470ec594bdeb3fdab6d80f42e281d1b074d97afd8a52f0f4c7fde28a89c1f4f6946bf416209d841d458b0b8a918ca852d9f01df77e1a3de15a5351e546cb
7
- data.tar.gz: f98f366e0aba2d17c760c7e433e55a7563deccc4d2803476b475cb53ed95fad2f6081d3d49f829a2b47345c7823c1049d61b647dadf4db14b39ac592f3b5cace
6
+ metadata.gz: b9d7af17a77ce73ca4c3488092b8772e008ee4b1d8848a0058f3ee969c7e3e24523aa6fc81fb8f9e7f903d4deaeafa0608bb7633894ea22af954e43886df72a8
7
+ data.tar.gz: b5e3893b3e76b8fc8744c7fb71a508d327d6f8fea98efd51c9b1b3893955d7c17e6c1260b019333b45c399edf125163040c1903e219d8312dccaa266abb80d4c
data/.version CHANGED
@@ -1 +1 @@
1
- 1.1.0
1
+ 1.3.3
@@ -1,33 +1,30 @@
1
- module HtmlTagBuilderHelper
2
- # tag :div, { 'class'=>'iform' } do
3
- # tag.div(class: :iform) { |n| ... }
4
- def xtag name=nil, opts={}, data=nil
5
- return HtmlTagBuilder unless name
6
- data = yield(opts) if block_given?
7
- HtmlTagBuilder.tag name, opts, data
1
+ # Hash
2
+ unless {}.respond_to?(:tag)
3
+ class Hash
4
+ def tag node_name, inner_html=nil
5
+ HtmlTagBuilder.build self, node_name, inner_html
6
+ end
8
7
  end
9
8
  end
10
9
 
11
- # Rails
12
- if defined?(ActionView::Base)
13
- ActionView::Base.send :include, HtmlTagBuilderHelper
14
-
15
- # Sinatra
16
- elsif defined?(Sinatra::Base)
17
- class Sinatra::Base
18
- include HtmlTagBuilderHelper
19
- alias :tag :xtag
20
- end
21
-
22
- # Lux and other
23
- elsif defined?(ApplicationHelper)
24
- # all other frameworks, including Lux
25
- module ApplicationHelper
26
- include HtmlTagBuilderHelper
27
- alias :tag :xtag
10
+ # String
11
+ unless ''.respond_to?(:tag)
12
+ class String
13
+ def tag node_name, opts={}
14
+ HtmlTagBuilder.build opts, node_name, self
15
+ end
28
16
  end
29
-
30
17
  end
31
18
 
19
+ # All other objects
20
+ class Object
21
+ def tag
22
+ HtmlTagBuilder
23
+ end
32
24
 
33
-
25
+ # Rails has tag methd defeined in views, in ActionView::Helpers::TagHelper
26
+ # Access HtmlTagBuilder via xtag then
27
+ def xtag
28
+ HtmlTagBuilder
29
+ end
30
+ end
data/lib/html-tag/base.rb CHANGED
@@ -17,6 +17,9 @@ class HtmlTagBuilder
17
17
  data = nil
18
18
  end
19
19
 
20
+ # tag.div(:a) { 1 } -> <div class="a">1</div>
21
+ opts = opts.to_s if opts.class == Symbol
22
+
20
23
  # covert n._row_foo to n(class: 'row-foo')
21
24
  name = name.to_s
22
25
  if name.to_s[0, 1] == '_'
@@ -40,11 +43,11 @@ class HtmlTagBuilder
40
43
  data, opts = opts, {} unless opts.class == Hash
41
44
 
42
45
  if block_given?
43
- inline = new
44
- data = yield(inline, opts)
46
+ stack = new
47
+ data = yield(stack, opts)
45
48
 
46
49
  # if data is pushed to passed node, use that data
47
- data = inline.data if inline.data.first
50
+ data = stack.data if stack.data.first
48
51
  end
49
52
 
50
53
  data = data.join('') if data.is_a?(Array)
@@ -69,8 +72,8 @@ class HtmlTagBuilder
69
72
 
70
73
  return opts unless node
71
74
 
72
- text = yield opts if block_given?
73
- text ||= '' unless ['input', 'img', 'meta', 'link', 'hr', 'br'].include?(node.to_s)
75
+ empty_tags = ['input', 'img', 'meta', 'link', 'hr', 'br', 'col', 'frame', 'area']
76
+ text ||= '' unless empty_tags.include?(node.to_s)
74
77
  out = text ? %{<#{node}#{opts}>#{text}</#{node}>} : %{<#{node}#{opts} />}
75
78
  out.respond_to?(:html_safe) ? out.html_safe : out
76
79
  end
@@ -83,10 +86,10 @@ class HtmlTagBuilder
83
86
  def __add_opts opts, key, value
84
87
  unless value.to_s.blank?
85
88
  value = value.join(' ') if value.is_a?(Array)
86
- opts.push key.to_s.gsub(/_/,'-')+'="'+value.to_s.gsub(/"/,'&quot;')+'"'
89
+ key = key.to_s.gsub(/data_/,'data-')
90
+ opts.push key+'="'+value.to_s.gsub(/"/,'&quot;')+'"'
87
91
  end
88
92
  end
89
-
90
93
  end
91
94
 
92
95
  ###
@@ -98,8 +101,8 @@ class HtmlTagBuilder
98
101
  end
99
102
 
100
103
  # push data to stack
101
- def push data
102
- @data.push data
104
+ def push data=nil
105
+ @data.push block_given? ? yield : data
103
106
  end
104
107
 
105
108
  # n.('foo') do -> n.div(class: 'foo') do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: html-tag
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dino Reic
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-26 00:00:00.000000000 Z
11
+ date: 2021-02-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fast_blank
@@ -39,7 +39,7 @@ homepage: https://github.com/dux/html-tag
39
39
  licenses:
40
40
  - MIT
41
41
  metadata: {}
42
- post_install_message:
42
+ post_install_message:
43
43
  rdoc_options: []
44
44
  require_paths:
45
45
  - lib
@@ -55,7 +55,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
55
55
  version: '0'
56
56
  requirements: []
57
57
  rubygems_version: 3.0.6
58
- signing_key:
58
+ signing_key:
59
59
  specification_version: 4
60
60
  summary: HTML tag builder
61
61
  test_files: []