html-tag 1.0.0 → 1.3.2

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: b88800aadc21733d2b0da8e33e274a8b95fd8008a972ebb760864ae29b18fa61
4
- data.tar.gz: f0108dae498ca7302f6e3de9285676aa0cc01903cd95f58742e5e0ae9d415085
3
+ metadata.gz: b43ddb467f75e41732aa8b0e5bc12bbc29c03e383f84686d010b73ae233ada39
4
+ data.tar.gz: 1101fe71fd0db7dda7d1a6780fe055cc33c40a6a264882b34898d738189b87a0
5
5
  SHA512:
6
- metadata.gz: 9fa4dcb68bb10d7b96b63239c44693f7ec92a03fb8ac6de41d5fd344ae5722d79f90f04806a57279ab868666af2a446b8ad4d2e49f951fa27c83517486a44c8e
7
- data.tar.gz: d36b0ed5b1e20b89513e86626fc17e8db0fb8adf9de711649ee43429ea0ff265e7edb75b57e936190601099c4f6f6d4740336bbc0bc56364bb436a6512f81b94
6
+ metadata.gz: baf58e6d0931f7cc1ef5778c69a4a2142eba85799f4f06ca95d690f1a69bd3021d356c2ebe9ed639be86d119c401b13b682fcd72483cd3cdf88d5392612ec443
7
+ data.tar.gz: 92973aeae92e95b45b8f82753cd86b6c2d7a4085e926a9df5d67d149b0680d3d7853eb3a02af4799051b7bf095d60e0907e85f378ea6621e12931f5be9b28cb6
data/.version CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.3.2
@@ -1,33 +1,24 @@
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
 
32
-
33
-
19
+ # All other objects
20
+ class Object
21
+ def tag *args, &block
22
+ args.first ? HtmlTagBuilder.tag(*args, &block) : HtmlTagBuilder
23
+ end
24
+ end
data/lib/html-tag/base.rb CHANGED
@@ -17,11 +17,11 @@ class HtmlTagBuilder
17
17
  data = nil
18
18
  end
19
19
 
20
- # covert n._row to n(class: 'row')
20
+ # covert n._row_foo to n(class: 'row-foo')
21
21
  name = name.to_s
22
22
  if name.to_s[0, 1] == '_'
23
23
  opts ||= {}
24
- opts[:class] = name.to_s.sub('_', '')
24
+ opts[:class] = name.to_s.sub('_', '').gsub('_', '-')
25
25
  name = :div
26
26
  end
27
27
 
@@ -40,11 +40,11 @@ class HtmlTagBuilder
40
40
  data, opts = opts, {} unless opts.class == Hash
41
41
 
42
42
  if block_given?
43
- inline = new
44
- data = yield(inline, opts)
43
+ stack = new
44
+ data = yield(stack, opts)
45
45
 
46
46
  # if data is pushed to passed node, use that data
47
- data = inline.data if inline.data.first
47
+ data = stack.data if stack.data.first
48
48
  end
49
49
 
50
50
  data = data.join('') if data.is_a?(Array)
@@ -69,8 +69,8 @@ class HtmlTagBuilder
69
69
 
70
70
  return opts unless node
71
71
 
72
- text = yield opts if block_given?
73
- text ||= '' unless ['input', 'img', 'meta', 'link', 'hr', 'br'].include?(node.to_s)
72
+ empty_tags = ['input', 'img', 'meta', 'link', 'hr', 'br', 'col', 'frame', 'area']
73
+ text ||= '' unless empty_tags.include?(node.to_s)
74
74
  out = text ? %{<#{node}#{opts}>#{text}</#{node}>} : %{<#{node}#{opts} />}
75
75
  out.respond_to?(:html_safe) ? out.html_safe : out
76
76
  end
@@ -82,10 +82,11 @@ class HtmlTagBuilder
82
82
 
83
83
  def __add_opts opts, key, value
84
84
  unless value.to_s.blank?
85
- opts.push key.to_s.gsub(/_/,'-')+'="'+value.to_s.gsub(/"/,'&quot;')+'"'
85
+ value = value.join(' ') if value.is_a?(Array)
86
+ key = key.to_s.gsub(/data_/,'data-')
87
+ opts.push key+'="'+value.to_s.gsub(/"/,'&quot;')+'"'
86
88
  end
87
89
  end
88
-
89
90
  end
90
91
 
91
92
  ###
@@ -97,15 +98,17 @@ class HtmlTagBuilder
97
98
  end
98
99
 
99
100
  # push data to stack
100
- def push data
101
- @data.push data
101
+ def push data=nil
102
+ @data.push block_given? ? yield : data
102
103
  end
103
104
 
104
- # n.div(class: 'klasa') do -> n.('klasa') do
105
+ # n.('foo') do -> n.div(class: 'foo') do
105
106
  def call class_name, &block
106
107
  @data.push self.class.tag(:div, { class: class_name }, &block)
107
108
  end
108
109
 
110
+ private
111
+
109
112
  # forward to class
110
113
  def method_missing tag_name, *args, &block
111
114
  @data.push self.class.tag(tag_name, args[0], args[1], &block)
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.0.0
4
+ version: 1.3.2
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-23 00:00:00.000000000 Z
11
+ date: 2021-02-12 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
@@ -54,8 +54,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
56
  requirements: []
57
- rubygems_version: 3.0.6
58
- signing_key:
57
+ rubygems_version: 3.1.2
58
+ signing_key:
59
59
  specification_version: 4
60
60
  summary: HTML tag builder
61
61
  test_files: []