html-tag 1.0.0 → 1.3.2

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: 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: []