berns 1.3.0 → 3.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+ require 'mkmf'
3
+
4
+ create_header
5
+ create_makefile 'berns/berns'
data/lib/berns.rb CHANGED
@@ -1,34 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
  require 'cgi/escape'
3
3
 
4
- # A utility library for generating HTML strings
5
- module Berns
6
- SPACE = ' '
4
+ require 'berns/berns'
5
+ require 'berns/version'
6
+
7
+ module Berns # :nodoc:
8
+ class Error < StandardError; end
9
+
7
10
  EMPTY = ''
8
11
 
9
12
  # Regular expression for basic HTML tag sanitizing.
10
13
  SANITIZE_REGEX = /<[^>]+>/.freeze
11
14
 
12
- # Full list of void elements - http://xahlee.info/js/html5_non-closing_tag.html
13
- VOID = %i[area base br col embed hr img input link menuitem meta param source track wbr].freeze
14
-
15
- # Full list of standard HTML5 elements - https://www.w3schools.com/TAgs/default.asp
16
- STANDARD = %i[a abbr address article aside audio b bdi bdo blockquote body button canvas caption cite code colgroup datalist dd del details dfn dialog div dl dt em fieldset figcaption figure footer form h1 h2 h3 h4 h5 h6 head header html i iframe ins kbd label legend li main map mark menu meter nav noscript object ol optgroup option output p picture pre progress q rp rt ruby s samp script section select small span strong style sub summary table tbody td template textarea tfoot th thead time title tr u ul var video].freeze
17
-
18
- # Dynamically defined methods that are simple proxies to {#element}.
19
- STANDARD.each do |elm|
20
- define_singleton_method(elm) do |arguments = {}, &block|
21
- element(elm, arguments, &block)
22
- end
23
- end
24
-
25
- # Dynamically defined methods that are simple proxies to {#void}.
26
- VOID.each do |elm|
27
- define_singleton_method(elm) do |arguments = {}|
28
- void(elm, arguments)
29
- end
30
- end
31
-
32
15
  # Sanitize text input by stripping HTML tags.
33
16
  #
34
17
  # @example Sanitize some text, removing HTML elements.
@@ -41,86 +24,4 @@ module Berns
41
24
  def self.sanitize(string)
42
25
  string&.gsub(SANITIZE_REGEX, EMPTY)
43
26
  end
44
-
45
- # Generate a simple HTML element.
46
- #
47
- # @example Create an element with simple attributes.
48
- # element(:a, href: '#nerds') { 'Nerds!'} # => "<a href='#nerds'>Nerds!</a>"
49
- #
50
- # @param tag [Symbol, String]
51
- # The tag type to generate e.g. <a> or <script>.
52
- # @param attributes [Hash]
53
- # A hash of attributes to add to the generated element.
54
- # @yieldreturn [String]
55
- # The textual content of the element. May be HTML or plain text.
56
- # @return [String]
57
- def self.element(tag, attributes = {})
58
- content = yield if block_given?
59
-
60
- # Move stuff around unless the attributes are empty.
61
- attrs = to_attributes(attributes)
62
- attrs = " #{ attrs }" unless attrs.empty?
63
-
64
- "<#{ tag }#{ attrs }>#{ content }</#{ tag }>"
65
- end
66
-
67
- # Same as above, but generates void elements i.e. ones without any textual
68
- # content.
69
- #
70
- # @example Create a self-closing element.
71
- # void(:br) # => "<br>"
72
- #
73
- # @return [String]
74
- def self.void(tag, attributes = {})
75
- # Move stuff around unless the attributes are empty.
76
- attrs = to_attributes(attributes)
77
- attrs = " #{ attrs }" unless attrs.empty?
78
-
79
- "<#{ tag }#{ attrs }>"
80
- end
81
-
82
- # Converts a hash into HTML attributes by mapping each key/value combination
83
- # to {#to_attribute} which actually does the hard work.
84
- #
85
- # @example A simple, single-level hash.
86
- # to_attributes({ href: '#link' }) # => "href='#link'"
87
- #
88
- # @example A nested hash.
89
- # to_attributes(href: '#nerds', some: { stuff: 'foobar' }) # => "href='#nerds' some-stuff='foobar'"
90
- #
91
- # @param attributes [Hash]
92
- # The hash to convert to HTML attributes.
93
- # @return [String]
94
- # The space-joined string containing HTML attributes.
95
- def self.to_attributes(attributes)
96
- attributes.map do |attribute, value|
97
- to_attribute(attribute, value)
98
- end.join(SPACE).chomp(SPACE)
99
- end
100
-
101
- # Converts a single attribute and value into an HTML attribute string.
102
- #
103
- # @example Obtain a boolean attribute string.
104
- # to_attribute('nerf', true) # => 'nerf'
105
- #
106
- # @param attribute [#to_s]
107
- # The attribute key.
108
- # @param value [String, Boolean, Hash]
109
- # The value to assign to the attribute.
110
- # @return [String]
111
- # A single HTML attribute.
112
- def self.to_attribute(attribute, value)
113
- case value
114
- when TrueClass
115
- attribute.to_s
116
- when Hash
117
- value.map do |subattribute, subvalue|
118
- to_attribute(subattribute ? "#{ attribute }-#{ subattribute }" : attribute, subvalue)
119
- end.join(SPACE)
120
- when FalseClass
121
- EMPTY
122
- else
123
- %(#{ attribute }="#{ CGI.escapeHTML(value.to_s) }")
124
- end
125
- end
126
27
  end
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+ module Berns
3
+ VERSION = '3.0.3'
4
+ 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: 1.3.0
4
+ version: 3.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Taylor Beck
@@ -9,8 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-01-08 00:00:00.000000000 Z
12
+ date: 2021-04-15 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: cgi
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
14
28
  - !ruby/object:Gem::Dependency
15
29
  name: bundler
16
30
  requirement: !ruby/object:Gem::Requirement
@@ -53,15 +67,99 @@ dependencies:
53
67
  - - ">="
54
68
  - !ruby/object:Gem::Version
55
69
  version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: rake-compiler
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'
84
+ - !ruby/object:Gem::Dependency
85
+ name: rubocop
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: rubocop-minitest
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: rubocop-performance
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: rubocop-rake
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
56
140
  description: A utility library for generating HTML strings.
57
141
  email:
58
142
  - beck.taylorg@gmail.com
59
143
  - evan@lecklider.com
60
144
  executables: []
61
- extensions: []
145
+ extensions:
146
+ - ext/berns/extconf.rb
62
147
  extra_rdoc_files: []
63
148
  files:
149
+ - ".editorconfig"
150
+ - ".github/workflows/main.yml"
151
+ - ".gitignore"
152
+ - ".rubocop.yml"
153
+ - CHANGELOG.org
154
+ - Gemfile
155
+ - LICENSE.txt
156
+ - README.org
157
+ - Rakefile
158
+ - berns.gemspec
159
+ - ext/berns/berns.c
160
+ - ext/berns/extconf.rb
64
161
  - lib/berns.rb
162
+ - lib/berns/version.rb
65
163
  homepage: https://github.com/evanleck/berns
66
164
  licenses:
67
165
  - MIT
@@ -76,14 +174,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
76
174
  requirements:
77
175
  - - ">="
78
176
  - !ruby/object:Gem::Version
79
- version: 2.3.0
177
+ version: 2.5.0
80
178
  required_rubygems_version: !ruby/object:Gem::Requirement
81
179
  requirements:
82
180
  - - ">="
83
181
  - !ruby/object:Gem::Version
84
182
  version: '0'
85
183
  requirements: []
86
- rubygems_version: 3.1.2
184
+ rubygems_version: 3.2.15
87
185
  signing_key:
88
186
  specification_version: 4
89
187
  summary: A utility library for generating HTML strings.