html-tag 3.0.0 → 3.0.1

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: 1af81083a15e78d8cecfed801fb466ce389ccae3bd5378528acc1f63aa345e3a
4
- data.tar.gz: 668a8a601339fe419daba93f97c33df6f4d3c1ce391b6df6cb70d3cb5574f719
3
+ metadata.gz: 62429fba4dc4f58b599307927a448ac66ff140053a52f3641188cd9b1c261033
4
+ data.tar.gz: e692ee406a52cdd0d7c4750dd0553768ede5614ea17ca55f9c9c9066d0832c4c
5
5
  SHA512:
6
- metadata.gz: d520970b6bfbeb1738e7dc23110f4c66e3859a98fbeb59876f9d31bd916f1b288bb72743da4b38bc944942880d92c4641cce873e1e8e57f82ac726dafacdacfa
7
- data.tar.gz: fd4750d1cdbfe778a41a02371a3cca980956ec553acf66df3daf5b40a73c3249e22aceab0287e6f0ca3760da46d71befeb7d029d696d847abd786504bf1ada0a
6
+ metadata.gz: 44aba32e3255ac8c7f843ac14919dde2994f42168d5c8594c96d46233964d0f09567f72c34c6301a4b8d6655694a6e36506fe153fbc2c01b9aee2ada2d62d677
7
+ data.tar.gz: f028fe5ee782953b8b6ad78774c2af0307774f069c050e1633c50e6d95886c31feb4d4272bac9cc7f514e12c44da1b913175c12f8824831c1c8575e025211c6b
data/.version CHANGED
@@ -1 +1 @@
1
- 3.0.0
1
+ 3.0.1
@@ -2,7 +2,7 @@
2
2
  unless {}.respond_to?(:tag)
3
3
  class Hash
4
4
  def tag node_name, inner_html=nil
5
- ::HtmlTag::Outbound.build node_name, self, inner_html
5
+ HtmlTag().send node_name, self, inner_html
6
6
  end
7
7
  end
8
8
  end
@@ -10,13 +10,27 @@ end
10
10
  # String
11
11
  unless ''.respond_to?(:tag)
12
12
  class String
13
- def tag node_name, opts={}
14
- ::HtmlTag::Outbound.build node_name, opts, self
13
+ def tag node_name, opts = nil
14
+ HtmlTag().send node_name, self, opts
15
15
  end
16
16
  end
17
17
  end
18
18
 
19
19
  # HtmlTag do ...
20
+ module HtmlTag
21
+ class Proxy
22
+ def initialize
23
+ @pointer = HtmlTag::Inbound.new
24
+ end
25
+
26
+ def method_missing name, *args, &block
27
+ @pointer
28
+ .send(name, *args, &block)
29
+ .join('')
30
+ end
31
+ end
32
+ end
33
+
20
34
  def HtmlTag *args, &block
21
35
  args[0] ||= :div
22
36
 
@@ -25,7 +39,11 @@ def HtmlTag *args, &block
25
39
  args[0] = :div
26
40
  end
27
41
 
28
- out = HtmlTag::Inbound.new self
29
- out.send(*args, &block)
30
- out.render
42
+ if block
43
+ out = HtmlTag::Inbound.new self
44
+ out.send(*args, &block)
45
+ out.render
46
+ else
47
+ HtmlTag::Proxy.new
48
+ end
31
49
  end
@@ -23,6 +23,7 @@ module HtmlTag
23
23
  if block
24
24
  HtmlTag *args, &block
25
25
  else
26
+ # HtmlTag()
26
27
  ::HtmlTag::Outbound
27
28
  end
28
29
  end
@@ -30,6 +31,7 @@ module HtmlTag
30
31
  # forward to class only if
31
32
  def method_missing tag_name, *args, &block
32
33
  if self === HtmlTag
34
+ # Proxy.new.tag(tag_name, args[0], args[1], &block)
33
35
  Outbound.tag(tag_name, args[0], args[1], &block)
34
36
  else
35
37
  super
@@ -27,7 +27,7 @@ module HtmlTag
27
27
 
28
28
  ###
29
29
 
30
- def initialize context
30
+ def initialize context = nil
31
31
  # copy all instance varialbes from context
32
32
  for el in context.instance_variables
33
33
  unless el.to_s.include?('@_')
@@ -66,7 +66,7 @@ module HtmlTag
66
66
 
67
67
  # render single node
68
68
  def tag name, *args, &block
69
- opt_hash, opt_data = _prepare_tag_params args
69
+ name, opt_hash, opt_data = _prepare_tag_params name, args
70
70
 
71
71
  tag_data = "%s%s<%s" % [_depth_new_line, _depth_spaces, name]
72
72
 
@@ -76,15 +76,18 @@ module HtmlTag
76
76
  tag_data += opt_hash.inject([]) do |t, el|
77
77
  key, value = el
78
78
 
79
- case value
80
- when Array
81
- value = value.join(' ')
82
- when Hash
79
+ if value.class == Hash
83
80
  for el in value
84
- t.push '%s-%s="%s"' % [key, el[0], _escape_param(el[1])]
81
+ t.push "%s-%s='%s'" % [key, el[0], _escape_param(el[1])]
85
82
  end
86
83
  else
87
- t.push '%s="%s"' % [key, _escape_param(value)]
84
+ if value.class == Array
85
+ value = value.join(' ')
86
+ end
87
+
88
+ key = key.to_s.sub(/^data_/, 'data-')
89
+
90
+ t.push "%s='%s'" % [key, _escape_param(value)]
88
91
  end
89
92
  t
90
93
  end.join(' ')
@@ -99,8 +102,15 @@ module HtmlTag
99
102
  # nested blocks
100
103
  if block
101
104
  @_iv.depth += 1
102
- instance_exec(@_iv.context, &block)
103
- # block.call(self) # for outbound render
105
+
106
+ if @_iv.context
107
+ # HtmlTag scope
108
+ instance_exec(&block)
109
+ else
110
+ # outbound scope
111
+ block.call(self)
112
+ end
113
+
104
114
  @_iv.depth -= 1
105
115
  end
106
116
 
@@ -123,19 +133,7 @@ module HtmlTag
123
133
  klass = name.to_s
124
134
 
125
135
  if klass.start_with?('_')
126
- # _foo__bar-baz class: 'dux' -> <div class="foo bar-baz dux"></div>
127
- classes = klass
128
- .sub('_', '')
129
- .split('__')
130
- .map{|it| it.gsub('_', '-') }
131
- .join(' ')
132
-
133
- prepared = _prepare_tag_params args
134
-
135
- prepared[0] ||= {}
136
- prepared[0][:class] = "#{classes} #{prepared[0][:class]}".sub(/\s+$/, '')
137
-
138
- tag :div, *prepared, &block
136
+ tag klass, *args, &block
139
137
  else
140
138
  message = [
141
139
  %{HTML tag "#{name}" not found.},
@@ -148,7 +146,7 @@ module HtmlTag
148
146
 
149
147
  private
150
148
 
151
- def _prepare_tag_params args
149
+ def _prepare_tag_params name, args
152
150
  opt_hash, opt_data = args
153
151
 
154
152
  # allow any arragement of vars
@@ -158,7 +156,22 @@ module HtmlTag
158
156
  opt_hash, opt_data = opt_data, opt_hash
159
157
  end
160
158
 
161
- [opt_hash, opt_data]
159
+ # _foo__bar-baz class: 'dux' -> <div class="foo bar-baz dux"></div>
160
+ klass = name.to_s
161
+ if klass.start_with?('_')
162
+ classes = klass
163
+ .sub('_', '')
164
+ .split('__')
165
+ .map{|it| it.gsub('_', '-') }
166
+ .join(' ')
167
+
168
+ klass = :div
169
+
170
+ opt_hash ||= {}
171
+ opt_hash[:class] = "#{classes} #{opt_hash[:class]}".sub(/\s+$/, '')
172
+ end
173
+
174
+ [klass, opt_hash, opt_data]
162
175
  end
163
176
 
164
177
  def _depth_spaces
@@ -174,7 +187,7 @@ module HtmlTag
174
187
  end
175
188
 
176
189
  def _escape_param el
177
- el.to_s.gsub(/"/, '&quot;')
190
+ el.to_s.gsub(/'/, '&apos;')
178
191
  end
179
192
  end
180
193
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: html-tag
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dino Reic