sanitize 4.6.5 → 4.6.6
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of sanitize might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/HISTORY.md +7 -0
- data/README.md +9 -0
- data/lib/sanitize.rb +16 -7
- data/lib/sanitize/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c5672f967be01303dd78eba5c0a1ab45729d15b604e2f2cbb6108c69864ad5f6
|
4
|
+
data.tar.gz: 8ff91d1efafb67205b6ba07697d2c9f920e34df5e59f357433e54a6f9f0cca76
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0981c67f49e789e6ccb6becb2a5407ac3db48b96823f48bef3a284fcc8b2fe539545ec0db8f0449dc5db5039d35a7a193970e3d72c076f99152c001d87be8659'
|
7
|
+
data.tar.gz: 25af08d3f6524b70aaee67cab17a5e8568697be138954f1ff1e1bc8da591df5ccb405bc1212c24daeb81a3b2c4e659e56e60bdc76938b9a10e096449ba38b657
|
data/HISTORY.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# Sanitize History
|
2
2
|
|
3
|
+
## 4.6.6 (2018-07-23)
|
4
|
+
|
5
|
+
* Improved performance and memory usage by optimizing `Sanitize#transform_node!`
|
6
|
+
[@stanhu - #183][183]
|
7
|
+
|
8
|
+
[183]:https://github.com/rgrove/sanitize/pull/183
|
9
|
+
|
3
10
|
## 4.6.5 (2018-05-16)
|
4
11
|
|
5
12
|
* Improved performance slightly by tweaking the order of built-in transformers.
|
data/README.md
CHANGED
@@ -474,6 +474,15 @@ children, in which case it will be inserted after those children.
|
|
474
474
|
}
|
475
475
|
```
|
476
476
|
|
477
|
+
The default elements with whitespace added before and after are:
|
478
|
+
|
479
|
+
```
|
480
|
+
address article aside blockquote br dd div dl dt
|
481
|
+
footer h1 h2 h3 h4 h5 h6 header hgroup hr li nav
|
482
|
+
ol p pre section ul
|
483
|
+
|
484
|
+
```
|
485
|
+
|
477
486
|
## Transformers
|
478
487
|
|
479
488
|
Transformers allow you to filter and modify HTML nodes using your own custom
|
data/lib/sanitize.rb
CHANGED
@@ -96,6 +96,8 @@ class Sanitize
|
|
96
96
|
|
97
97
|
@transformers << Transformers::CleanDoctype
|
98
98
|
@transformers << Transformers::CleanCDATA
|
99
|
+
|
100
|
+
@transformer_config = { config: @config }
|
99
101
|
end
|
100
102
|
|
101
103
|
# Returns a sanitized copy of the given _html_ document.
|
@@ -217,13 +219,20 @@ class Sanitize
|
|
217
219
|
|
218
220
|
def transform_node!(node, node_whitelist)
|
219
221
|
@transformers.each do |transformer|
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
222
|
+
# Since transform_node! may be called in a tight loop to process thousands
|
223
|
+
# of items, we can optimize both memory and CPU performance by:
|
224
|
+
#
|
225
|
+
# 1. Reusing the same config hash for each transformer
|
226
|
+
# 2. Directly assigning values to hash instead of using merge!. Not only
|
227
|
+
# does merge! create a new hash, it is also 2.6x slower:
|
228
|
+
# https://github.com/JuanitoFatas/fast-ruby#hashmerge-vs-hashmerge-code
|
229
|
+
config = @transformer_config
|
230
|
+
config[:is_whitelisted] = node_whitelist.include?(node)
|
231
|
+
config[:node] = node
|
232
|
+
config[:node_name] = node.name.downcase
|
233
|
+
config[:node_whitelist] = node_whitelist
|
234
|
+
|
235
|
+
result = transformer.call(config)
|
227
236
|
|
228
237
|
if result.is_a?(Hash) && result[:node_whitelist].respond_to?(:each)
|
229
238
|
node_whitelist.merge(result[:node_whitelist])
|
data/lib/sanitize/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sanitize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.6.
|
4
|
+
version: 4.6.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Grove
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-07-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: crass
|