berns 1.3.0 → 2.0.0
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 +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.
|