berns 1.3.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/berns.rb +43 -30
- metadata +32 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1f544945cd9c43afe1ce6d3bdf6e7a3c026b6386925cbe7ac9a6ba36ba228b76
|
4
|
+
data.tar.gz: 21add20e6f88c5c56ba48a5b60d48c80e4f4be0b9b351540345479f2a5f94896
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 40ac56793d022c1191c775aba8020221e6251b9c9be9f61485bd4e0ad3b90e3b46e2e1f4aa1070a3fadce6026b2f48f4b31da156bdba89930fe7c3d557fff06f
|
7
|
+
data.tar.gz: 1af75731f2ce07e6978653b45f077ff20784d950cecbfce74970185c3c2a487c306187d821fed30edba3f4e920a5a7741c9bd009c584f86c7e1c6a0a3d9272fe
|
data/lib/berns.rb
CHANGED
@@ -3,6 +3,7 @@ require 'cgi/escape'
|
|
3
3
|
|
4
4
|
# A utility library for generating HTML strings
|
5
5
|
module Berns
|
6
|
+
HASH = {}.freeze
|
6
7
|
SPACE = ' '
|
7
8
|
EMPTY = ''
|
8
9
|
|
@@ -17,15 +18,15 @@ module Berns
|
|
17
18
|
|
18
19
|
# Dynamically defined methods that are simple proxies to {#element}.
|
19
20
|
STANDARD.each do |elm|
|
20
|
-
define_singleton_method(elm) do |
|
21
|
-
element(elm,
|
21
|
+
define_singleton_method(elm) do |attributes = HASH, &block|
|
22
|
+
element(elm, attributes, &block)
|
22
23
|
end
|
23
24
|
end
|
24
25
|
|
25
26
|
# Dynamically defined methods that are simple proxies to {#void}.
|
26
27
|
VOID.each do |elm|
|
27
|
-
define_singleton_method(elm) do |
|
28
|
-
void(elm,
|
28
|
+
define_singleton_method(elm) do |attributes = HASH|
|
29
|
+
void(elm, attributes)
|
29
30
|
end
|
30
31
|
end
|
31
32
|
|
@@ -54,14 +55,10 @@ module Berns
|
|
54
55
|
# @yieldreturn [String]
|
55
56
|
# The textual content of the element. May be HTML or plain text.
|
56
57
|
# @return [String]
|
57
|
-
def self.element(tag, attributes =
|
58
|
-
|
58
|
+
def self.element(tag, attributes = HASH)
|
59
|
+
return "<#{ tag }>#{ yield if block_given? }</#{ tag }>" if attributes.empty?
|
59
60
|
|
60
|
-
#
|
61
|
-
attrs = to_attributes(attributes)
|
62
|
-
attrs = " #{ attrs }" unless attrs.empty?
|
63
|
-
|
64
|
-
"<#{ tag }#{ attrs }>#{ content }</#{ tag }>"
|
61
|
+
"<#{ tag } #{ to_attributes(attributes) }>#{ yield if block_given? }</#{ tag }>"
|
65
62
|
end
|
66
63
|
|
67
64
|
# Same as above, but generates void elements i.e. ones without any textual
|
@@ -71,12 +68,10 @@ module Berns
|
|
71
68
|
# void(:br) # => "<br>"
|
72
69
|
#
|
73
70
|
# @return [String]
|
74
|
-
def self.void(tag, attributes =
|
75
|
-
|
76
|
-
attrs = to_attributes(attributes)
|
77
|
-
attrs = " #{ attrs }" unless attrs.empty?
|
71
|
+
def self.void(tag, attributes = HASH)
|
72
|
+
return "<#{ tag }>" if attributes.empty?
|
78
73
|
|
79
|
-
"<#{ tag }#{
|
74
|
+
"<#{ tag } #{ to_attributes(attributes) }>"
|
80
75
|
end
|
81
76
|
|
82
77
|
# Converts a hash into HTML attributes by mapping each key/value combination
|
@@ -90,12 +85,22 @@ module Berns
|
|
90
85
|
#
|
91
86
|
# @param attributes [Hash]
|
92
87
|
# The hash to convert to HTML attributes.
|
88
|
+
#
|
93
89
|
# @return [String]
|
94
90
|
# The space-joined string containing HTML attributes.
|
95
91
|
def self.to_attributes(attributes)
|
96
|
-
|
97
|
-
|
98
|
-
|
92
|
+
return EMPTY if attributes.empty?
|
93
|
+
|
94
|
+
string = +''
|
95
|
+
|
96
|
+
attributes.each do |attr, value|
|
97
|
+
string << SPACE
|
98
|
+
|
99
|
+
to_attribute(attr, value, string)
|
100
|
+
end
|
101
|
+
|
102
|
+
string.strip!
|
103
|
+
string
|
99
104
|
end
|
100
105
|
|
101
106
|
# Converts a single attribute and value into an HTML attribute string.
|
@@ -107,20 +112,28 @@ module Berns
|
|
107
112
|
# The attribute key.
|
108
113
|
# @param value [String, Boolean, Hash]
|
109
114
|
# The value to assign to the attribute.
|
115
|
+
# @param string [String, nil]
|
116
|
+
# The string modify in place with attributes and values.
|
117
|
+
#
|
110
118
|
# @return [String]
|
111
119
|
# A single HTML attribute.
|
112
|
-
def self.to_attribute(attribute, value)
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
120
|
+
def self.to_attribute(attribute, value, string = +'')
|
121
|
+
if value.is_a?(FalseClass) # rubocop:disable Style/CaseLikeIf
|
122
|
+
# noop
|
123
|
+
elsif value.is_a?(TrueClass)
|
124
|
+
string << attribute.to_s
|
125
|
+
elsif value.is_a?(Hash)
|
126
|
+
value.each do |attr, subval|
|
127
|
+
string << SPACE
|
128
|
+
|
129
|
+
to_attribute(attr.nil? ? attribute : "#{ attribute }-#{ attr }", subval, string)
|
130
|
+
end
|
131
|
+
|
132
|
+
string.strip!
|
122
133
|
else
|
123
|
-
%(#{ attribute }="#{ CGI.escapeHTML(value.to_s) }")
|
134
|
+
string << %(#{ attribute }="#{ CGI.escapeHTML(value.to_s) }")
|
124
135
|
end
|
136
|
+
|
137
|
+
string
|
125
138
|
end
|
126
139
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: berns
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Taylor Beck
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2020-01
|
12
|
+
date: 2020-10-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -53,6 +53,34 @@ dependencies:
|
|
53
53
|
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: rubocop
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: rubocop-performance
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
56
84
|
description: A utility library for generating HTML strings.
|
57
85
|
email:
|
58
86
|
- beck.taylorg@gmail.com
|
@@ -76,14 +104,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
76
104
|
requirements:
|
77
105
|
- - ">="
|
78
106
|
- !ruby/object:Gem::Version
|
79
|
-
version: 2.
|
107
|
+
version: 2.5.0
|
80
108
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
109
|
requirements:
|
82
110
|
- - ">="
|
83
111
|
- !ruby/object:Gem::Version
|
84
112
|
version: '0'
|
85
113
|
requirements: []
|
86
|
-
rubygems_version: 3.1.
|
114
|
+
rubygems_version: 3.1.4
|
87
115
|
signing_key:
|
88
116
|
specification_version: 4
|
89
117
|
summary: A utility library for generating HTML strings.
|