loofah 2.6.0 → 2.10.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of loofah might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '0378734abbcf1f374d8d501038180ff4d9492e4282ffe4d6134322dd213fc80b'
4
- data.tar.gz: 54955254f4179bf55adfc5bdaf3464c8a8f921f6e8e7fc92d9d2588b4fea02b1
3
+ metadata.gz: c72ce5ed9c2a65db0a32b4bcdc141b9bf30caded7ee60d180c7872691246cafd
4
+ data.tar.gz: 953c1316bd83c03ded6eae4ca754a0b3d9dd1cc1f1f22a6e4c4fc2762de6aed7
5
5
  SHA512:
6
- metadata.gz: e80d9e87682cbfd18b6f86a10f9928c3b94fb7f123792d8284344cf65a878a1ee8258b408dac8df87791ca5beda99858dfbac6515334d87bc2d98b45cdf17802
7
- data.tar.gz: da7fd4181e8f829837f0d1458e856b8ace6ed94fa13cdc227bc9432baaff0ec514f894b04b9d00157c6edddcff6a714284bc42a1c878a2ddb90d08b68931dba9
6
+ metadata.gz: e0c876928b0ec84a84e38e66f5318a1d0539996d75ef96c07b7cceb953565e2d1f9409b1bbae7e10b94e5dc1e98959cd9d67397c1a83c4f622a9f3d5b5d61f09
7
+ data.tar.gz: 507b03b508b1725f8c2a67397e4b3b9e7c337e92b519c93cd8687bf371df844dfe3f15fdb3efd5e4f9bfd70b19842b7eec48cf27d888c1552a084f33fab37db0
data/CHANGELOG.md CHANGED
@@ -1,5 +1,45 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.10.0 / 2021-06-06
4
+
5
+ ### Features
6
+
7
+ * Allow CSS properties `overflow-x` and `overflow-y`. [[#206](https://github.com/flavorjones/loofah/issues/206)] (Thanks, [@sampokuokkanen](https://github.com/sampokuokkanen)!)
8
+
9
+
10
+ ## 2.9.1 / 2021-04-07
11
+
12
+ ### Bug fixes
13
+
14
+ * Fix a regression in v2.9.0 which inappropriately removed CSS properties with quoted string values. [[#202](https://github.com/flavorjones/loofah/issues/202)]
15
+
16
+
17
+ ## 2.9.0 / 2021-01-14
18
+
19
+ ### Features
20
+
21
+ * Handle CSS functions in a CSS shorthand property (like `background`). [[#199](https://github.com/flavorjones/loofah/issues/199), [#200](https://github.com/flavorjones/loofah/issues/200)]
22
+
23
+
24
+ ## 2.8.0 / 2020-11-25
25
+
26
+ ### Features
27
+
28
+ * Allow CSS properties `order`, `flex-direction`, `flex-grow`, `flex-wrap`, `flex-shrink`, `flex-flow`, `flex-basis`, `flex`, `justify-content`, `align-self`, `align-items`, and `align-content`. [[#197](https://github.com/flavorjones/loofah/issues/197)] (Thanks, [@miguelperez](https://github.com/miguelperez)!)
29
+
30
+
31
+ ## 2.7.0 / 2020-08-26
32
+
33
+ ### Features
34
+
35
+ * Allow CSS properties `page-break-before`, `page-break-inside`, and `page-break-after`. [[#190](https://github.com/flavorjones/loofah/issues/190)] (Thanks, [@ahorek](https://github.com/ahorek)!)
36
+
37
+
38
+ ### Fixes
39
+
40
+ * Don't drop the `!important` rule from some CSS properties. [[#191](https://github.com/flavorjones/loofah/issues/191)] (Thanks, [@b7kich](https://github.com/b7kich)!)
41
+
42
+
3
43
  ## 2.6.0 / 2020-06-16
4
44
 
5
45
  ### Features
data/README.md CHANGED
@@ -1,15 +1,14 @@
1
1
  # Loofah
2
2
 
3
3
  * https://github.com/flavorjones/loofah
4
- * Docs: http://rubydoc.info/github/flavorjones/loofah/master/frames
4
+ * Docs: http://rubydoc.info/github/flavorjones/loofah/main/frames
5
5
  * Mailing list: [loofah-talk@googlegroups.com](https://groups.google.com/forum/#!forum/loofah-talk)
6
6
 
7
7
  ## Status
8
8
 
9
- |System|Status|
10
- |--|--|
11
- | Concourse CI | [![Concourse CI](https://ci.nokogiri.org/api/v1/teams/nokogiri-core/pipelines/loofah/jobs/ruby-2.5/badge)](https://ci.nokogiri.org/teams/nokogiri-core/pipelines/loofah?groups=master) |
12
- | Code Climate | [![Code Climate](https://codeclimate.com/github/flavorjones/loofah.svg)](https://codeclimate.com/github/flavorjones/loofah) |
9
+ [![Concourse CI](https://ci.nokogiri.org/api/v1/teams/nokogiri-core/pipelines/loofah/jobs/ruby-3.0/badge)](https://ci.nokogiri.org/teams/nokogiri-core/pipelines/loofah)
10
+ [![Code Climate](https://codeclimate.com/github/flavorjones/loofah.svg)](https://codeclimate.com/github/flavorjones/loofah)
11
+ [![Tidelift dependencies](https://tidelift.com/badges/package/rubygems/loofah)](https://tidelift.com/subscription/pkg/rubygems-loofah?utm_source=rubygems-loofah&utm_medium=referral&utm_campaign=readme)
13
12
 
14
13
 
15
14
  ## Description
@@ -212,7 +211,7 @@ end
212
211
  Loofah.xml_document(File.read('plague.xml')).scrub!(bring_out_your_dead)
213
212
  ```
214
213
 
215
- === Built-In HTML Scrubbers
214
+ ### Built-In HTML Scrubbers
216
215
 
217
216
  Loofah comes with a set of sanitizing scrubbers that use HTML5lib's
218
217
  safelist algorithm:
@@ -301,6 +300,10 @@ And the mailing list is on Google Groups:
301
300
 
302
301
  And the IRC channel is \#loofah on freenode.
303
302
 
303
+ Consider subscribing to [Tidelift][tidelift] which provides license assurances and timely security notifications for your open source dependencies, including Loofah. [Tidelift][tidelift] subscriptions also help the Loofah maintainers fund our [automated testing](https://ci.nokogiri.org) which in turn allows us to ship releases, bugfixes, and security updates more often.
304
+
305
+ [tidelift]: https://tidelift.com/subscription/pkg/rubygems-loofah?utm_source=undefined&utm_medium=referral&utm_campaign=enterprise
306
+
304
307
 
305
308
  ## Security
306
309
 
data/lib/loofah.rb CHANGED
@@ -3,21 +3,22 @@ $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__))) unless $LOAD_PATH.i
3
3
 
4
4
  require "nokogiri"
5
5
 
6
- require "loofah/metahelpers"
7
- require "loofah/elements"
6
+ require_relative "loofah/version"
7
+ require_relative "loofah/metahelpers"
8
+ require_relative "loofah/elements"
8
9
 
9
- require "loofah/html5/safelist"
10
- require "loofah/html5/libxml2_workarounds"
11
- require "loofah/html5/scrub"
10
+ require_relative "loofah/html5/safelist"
11
+ require_relative "loofah/html5/libxml2_workarounds"
12
+ require_relative "loofah/html5/scrub"
12
13
 
13
- require "loofah/scrubber"
14
- require "loofah/scrubbers"
14
+ require_relative "loofah/scrubber"
15
+ require_relative "loofah/scrubbers"
15
16
 
16
- require "loofah/instance_methods"
17
- require "loofah/xml/document"
18
- require "loofah/xml/document_fragment"
19
- require "loofah/html/document"
20
- require "loofah/html/document_fragment"
17
+ require_relative "loofah/instance_methods"
18
+ require_relative "loofah/xml/document"
19
+ require_relative "loofah/xml/document_fragment"
20
+ require_relative "loofah/html/document"
21
+ require_relative "loofah/html/document_fragment"
21
22
 
22
23
  # == Strings and IO Objects as Input
23
24
  #
@@ -28,9 +29,6 @@ require "loofah/html/document_fragment"
28
29
  # quantities of docs.
29
30
  #
30
31
  module Loofah
31
- # The version of Loofah you are using
32
- VERSION = "2.6.0"
33
-
34
32
  class << self
35
33
  # Shortcut for Loofah::HTML::Document.parse
36
34
  # This method accepts the same parameters as Nokogiri::HTML::Document.parse
@@ -549,6 +549,9 @@ module Loofah
549
549
 
550
550
  ACCEPTABLE_CSS_PROPERTIES = Set.new([
551
551
  "azimuth",
552
+ "align-content",
553
+ "align-items",
554
+ "align-self",
552
555
  "background-color",
553
556
  "border-bottom-color",
554
557
  "border-collapse",
@@ -562,6 +565,13 @@ module Loofah
562
565
  "direction",
563
566
  "display",
564
567
  "elevation",
568
+ "flex",
569
+ "flex-basis",
570
+ "flex-direction",
571
+ "flex-flow",
572
+ "flex-grow",
573
+ "flex-shrink",
574
+ "flex-wrap",
565
575
  "float",
566
576
  "font",
567
577
  "font-family",
@@ -570,12 +580,19 @@ module Loofah
570
580
  "font-variant",
571
581
  "font-weight",
572
582
  "height",
583
+ "justify-content",
573
584
  "letter-spacing",
574
585
  "line-height",
575
586
  "list-style",
576
587
  "list-style-type",
577
588
  "max-width",
589
+ "order",
578
590
  "overflow",
591
+ "overflow-x",
592
+ "overflow-y",
593
+ "page-break-after",
594
+ "page-break-before",
595
+ "page-break-inside",
579
596
  "pause",
580
597
  "pause-after",
581
598
  "pause-before",
@@ -7,21 +7,23 @@ module Loofah
7
7
  module Scrub
8
8
  CONTROL_CHARACTERS = /[`\u0000-\u0020\u007f\u0080-\u0101]/
9
9
  CSS_KEYWORDISH = /\A(#[0-9a-fA-F]+|rgb\(\d+%?,\d*%?,?\d*%?\)?|-?\d{0,3}\.?\d{0,10}(ch|cm|r?em|ex|in|lh|mm|pc|pt|px|Q|vmax|vmin|vw|vh|%|,|\))?)\z/
10
- CRASS_SEMICOLON = { :node => :semicolon, :raw => ";" }
10
+ CRASS_SEMICOLON = { node: :semicolon, raw: ";" }
11
+ CSS_IMPORTANT = '!important'
12
+ CSS_PROPERTY_STRING_WITHOUT_EMBEDDED_QUOTES = /\A(["'])?[^"']+\1\z/
11
13
 
12
14
  class << self
13
15
  def allowed_element?(element_name)
14
- ::Loofah::HTML5::SafeList::ALLOWED_ELEMENTS_WITH_LIBXML2.include? element_name
16
+ ::Loofah::HTML5::SafeList::ALLOWED_ELEMENTS_WITH_LIBXML2.include?(element_name)
15
17
  end
16
18
 
17
19
  # alternative implementation of the html5lib attribute scrubbing algorithm
18
20
  def scrub_attributes(node)
19
21
  node.attribute_nodes.each do |attr_node|
20
22
  attr_name = if attr_node.namespace
21
- "#{attr_node.namespace.prefix}:#{attr_node.node_name}"
22
- else
23
- attr_node.node_name
24
- end
23
+ "#{attr_node.namespace.prefix}:#{attr_node.node_name}"
24
+ else
25
+ attr_node.node_name
26
+ end
25
27
 
26
28
  if attr_name =~ /\Adata-[\w-]+\z/
27
29
  next
@@ -57,13 +59,13 @@ module Loofah
57
59
  end
58
60
  end
59
61
 
60
- scrub_css_attribute node
62
+ scrub_css_attribute(node)
61
63
 
62
64
  node.attribute_nodes.each do |attr_node|
63
65
  node.remove_attribute(attr_node.name) if attr_node.value !~ /[^[:space:]]/
64
66
  end
65
67
 
66
- force_correct_attribute_escaping! node
68
+ force_correct_attribute_escaping!(node)
67
69
  end
68
70
 
69
71
  def scrub_css_attribute(node)
@@ -72,32 +74,54 @@ module Loofah
72
74
  end
73
75
 
74
76
  def scrub_css(style)
75
- style_tree = Crass.parse_properties style
77
+ style_tree = Crass.parse_properties(style)
76
78
  sanitized_tree = []
77
79
 
78
80
  style_tree.each do |node|
79
81
  next unless node[:node] == :property
80
82
  next if node[:children].any? do |child|
81
- [:url, :bad_url].include?(child[:node]) || (child[:node] == :function && !SafeList::ALLOWED_CSS_FUNCTIONS.include?(child[:name].downcase))
83
+ [:url, :bad_url].include?(child[:node])
82
84
  end
85
+
83
86
  name = node[:name].downcase
84
- if SafeList::ALLOWED_CSS_PROPERTIES.include?(name) || SafeList::ALLOWED_SVG_PROPERTIES.include?(name)
85
- sanitized_tree << node << CRASS_SEMICOLON
86
- elsif SafeList::SHORTHAND_CSS_PROPERTIES.include?(name.split("-").first)
87
- value = node[:value].split.map do |keyword|
88
- if SafeList::ALLOWED_CSS_KEYWORDS.include?(keyword) || keyword =~ CSS_KEYWORDISH
87
+ next unless SafeList::ALLOWED_CSS_PROPERTIES.include?(name) ||
88
+ SafeList::ALLOWED_SVG_PROPERTIES.include?(name) ||
89
+ SafeList::SHORTHAND_CSS_PROPERTIES.include?(name.split("-").first)
90
+
91
+ value = node[:children].map do |child|
92
+ case child[:node]
93
+ when :whitespace
94
+ nil
95
+ when :string
96
+ if child[:raw] =~ CSS_PROPERTY_STRING_WITHOUT_EMBEDDED_QUOTES
97
+ Crass::Parser.stringify(child)
98
+ else
99
+ nil
100
+ end
101
+ when :function
102
+ if SafeList::ALLOWED_CSS_FUNCTIONS.include?(child[:name].downcase)
103
+ Crass::Parser.stringify(child)
104
+ end
105
+ when :ident
106
+ keyword = child[:value]
107
+ if !SafeList::SHORTHAND_CSS_PROPERTIES.include?(name.split("-").first) ||
108
+ SafeList::ALLOWED_CSS_KEYWORDS.include?(keyword) ||
109
+ (keyword =~ CSS_KEYWORDISH)
89
110
  keyword
90
111
  end
91
- end.compact
92
- unless value.empty?
93
- propstring = sprintf "%s:%s", name, value.join(" ")
94
- sanitized_node = Crass.parse_properties(propstring).first
95
- sanitized_tree << sanitized_node << CRASS_SEMICOLON
112
+ else
113
+ child[:raw]
96
114
  end
97
- end
115
+ end.compact
116
+
117
+ next if value.empty?
118
+ value << CSS_IMPORTANT if node[:important]
119
+ propstring = format("%s:%s", name, value.join(" "))
120
+ sanitized_node = Crass.parse_properties(propstring).first
121
+ sanitized_tree << sanitized_node << CRASS_SEMICOLON
98
122
  end
99
123
 
100
- Crass::Parser.stringify sanitized_tree
124
+ Crass::Parser.stringify(sanitized_tree)
101
125
  end
102
126
 
103
127
  #
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+ module Loofah
3
+ # The version of Loofah you are using
4
+ VERSION = "2.10.0"
5
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: loofah
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.0
4
+ version: 2.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Dalessio
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-06-16 00:00:00.000000000 Z
12
+ date: 2021-06-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -45,28 +45,28 @@ dependencies:
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: '12.3'
48
+ version: '13.0'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: '12.3'
55
+ version: '13.0'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: minitest
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: '2.2'
62
+ version: '5.14'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: '2.2'
69
+ version: '5.14'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rr
72
72
  requirement: !ruby/object:Gem::Requirement
@@ -87,112 +87,42 @@ dependencies:
87
87
  requirements:
88
88
  - - "~>"
89
89
  - !ruby/object:Gem::Version
90
- version: 2.2.0
91
- type: :development
92
- prerelease: false
93
- version_requirements: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - "~>"
96
- - !ruby/object:Gem::Version
97
- version: 2.2.0
98
- - !ruby/object:Gem::Dependency
99
- name: hoe-gemspec
100
- requirement: !ruby/object:Gem::Requirement
101
- requirements:
102
- - - "~>"
103
- - !ruby/object:Gem::Version
104
- version: '1.0'
105
- type: :development
106
- prerelease: false
107
- version_requirements: !ruby/object:Gem::Requirement
108
- requirements:
109
- - - "~>"
110
- - !ruby/object:Gem::Version
111
- version: '1.0'
112
- - !ruby/object:Gem::Dependency
113
- name: hoe-debugging
114
- requirement: !ruby/object:Gem::Requirement
115
- requirements:
116
- - - "~>"
117
- - !ruby/object:Gem::Version
118
- version: '2.0'
119
- type: :development
120
- prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - "~>"
124
- - !ruby/object:Gem::Version
125
- version: '2.0'
126
- - !ruby/object:Gem::Dependency
127
- name: hoe-bundler
128
- requirement: !ruby/object:Gem::Requirement
129
- requirements:
130
- - - "~>"
131
- - !ruby/object:Gem::Version
132
- version: '1.5'
90
+ version: '2.2'
133
91
  type: :development
134
92
  prerelease: false
135
93
  version_requirements: !ruby/object:Gem::Requirement
136
94
  requirements:
137
95
  - - "~>"
138
96
  - !ruby/object:Gem::Version
139
- version: '1.5'
97
+ version: '2.2'
140
98
  - !ruby/object:Gem::Dependency
141
- name: hoe-git
99
+ name: concourse
142
100
  requirement: !ruby/object:Gem::Requirement
143
101
  requirements:
144
102
  - - "~>"
145
103
  - !ruby/object:Gem::Version
146
- version: '1.6'
104
+ version: '0.33'
147
105
  type: :development
148
106
  prerelease: false
149
107
  version_requirements: !ruby/object:Gem::Requirement
150
108
  requirements:
151
109
  - - "~>"
152
110
  - !ruby/object:Gem::Version
153
- version: '1.6'
111
+ version: '0.33'
154
112
  - !ruby/object:Gem::Dependency
155
- name: hoe-markdown
113
+ name: rubocop
156
114
  requirement: !ruby/object:Gem::Requirement
157
115
  requirements:
158
116
  - - "~>"
159
117
  - !ruby/object:Gem::Version
160
- version: '1.2'
118
+ version: '1.1'
161
119
  type: :development
162
120
  prerelease: false
163
121
  version_requirements: !ruby/object:Gem::Requirement
164
122
  requirements:
165
123
  - - "~>"
166
124
  - !ruby/object:Gem::Version
167
- version: '1.2'
168
- - !ruby/object:Gem::Dependency
169
- name: concourse
170
- requirement: !ruby/object:Gem::Requirement
171
- requirements:
172
- - - ">="
173
- - !ruby/object:Gem::Version
174
- version: 0.26.0
175
- type: :development
176
- prerelease: false
177
- version_requirements: !ruby/object:Gem::Requirement
178
- requirements:
179
- - - ">="
180
- - !ruby/object:Gem::Version
181
- version: 0.26.0
182
- - !ruby/object:Gem::Dependency
183
- name: rubocop
184
- requirement: !ruby/object:Gem::Requirement
185
- requirements:
186
- - - ">="
187
- - !ruby/object:Gem::Version
188
- version: 0.76.0
189
- type: :development
190
- prerelease: false
191
- version_requirements: !ruby/object:Gem::Requirement
192
- requirements:
193
- - - ">="
194
- - !ruby/object:Gem::Version
195
- version: 0.76.0
125
+ version: '1.1'
196
126
  - !ruby/object:Gem::Dependency
197
127
  name: rdoc
198
128
  requirement: !ruby/object:Gem::Requirement
@@ -214,19 +144,19 @@ dependencies:
214
144
  - !ruby/object:Gem::Version
215
145
  version: '7'
216
146
  - !ruby/object:Gem::Dependency
217
- name: hoe
147
+ name: hoe-markdown
218
148
  requirement: !ruby/object:Gem::Requirement
219
149
  requirements:
220
150
  - - "~>"
221
151
  - !ruby/object:Gem::Version
222
- version: '3.22'
152
+ version: '1.3'
223
153
  type: :development
224
154
  prerelease: false
225
155
  version_requirements: !ruby/object:Gem::Requirement
226
156
  requirements:
227
157
  - - "~>"
228
158
  - !ruby/object:Gem::Version
229
- version: '3.22'
159
+ version: '1.3'
230
160
  description: |-
231
161
  Loofah is a general library for manipulating and transforming HTML/XML documents and fragments, built on top of Nokogiri.
232
162
 
@@ -238,24 +168,12 @@ email:
238
168
  - bryan@brynary.com
239
169
  executables: []
240
170
  extensions: []
241
- extra_rdoc_files:
242
- - CHANGELOG.md
243
- - MIT-LICENSE.txt
244
- - Manifest.txt
245
- - README.md
246
- - SECURITY.md
171
+ extra_rdoc_files: []
247
172
  files:
248
173
  - CHANGELOG.md
249
- - Gemfile
250
174
  - MIT-LICENSE.txt
251
- - Manifest.txt
252
175
  - README.md
253
- - Rakefile
254
176
  - SECURITY.md
255
- - benchmark/benchmark.rb
256
- - benchmark/fragment.html
257
- - benchmark/helper.rb
258
- - benchmark/www.slashdot.com.html
259
177
  - lib/loofah.rb
260
178
  - lib/loofah/elements.rb
261
179
  - lib/loofah/helpers.rb
@@ -268,6 +186,7 @@ files:
268
186
  - lib/loofah/metahelpers.rb
269
187
  - lib/loofah/scrubber.rb
270
188
  - lib/loofah/scrubbers.rb
189
+ - lib/loofah/version.rb
271
190
  - lib/loofah/xml/document.rb
272
191
  - lib/loofah/xml/document_fragment.rb
273
192
  homepage: https://github.com/flavorjones/loofah
@@ -275,14 +194,12 @@ licenses:
275
194
  - MIT
276
195
  metadata:
277
196
  homepage_uri: https://github.com/flavorjones/loofah
197
+ source_code_uri: https://github.com/flavorjones/loofah
278
198
  bug_tracker_uri: https://github.com/flavorjones/loofah/issues
199
+ changelog_uri: https://github.com/flavorjones/loofah/blob/main/CHANGELOG.md
279
200
  documentation_uri: https://www.rubydoc.info/gems/loofah/
280
- changelog_uri: https://github.com/flavorjones/loofah/blob/master/CHANGELOG.md
281
- source_code_uri: https://github.com/flavorjones/loofah
282
201
  post_install_message:
283
- rdoc_options:
284
- - "--main"
285
- - README.md
202
+ rdoc_options: []
286
203
  require_paths:
287
204
  - lib
288
205
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -296,7 +213,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
296
213
  - !ruby/object:Gem::Version
297
214
  version: '0'
298
215
  requirements: []
299
- rubygems_version: 3.1.2
216
+ rubygems_version: 3.2.15
300
217
  signing_key:
301
218
  specification_version: 4
302
219
  summary: Loofah is a general library for manipulating and transforming HTML/XML documents