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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eab36cec7ac13bd15bd00b1141990e9efc35332c95391cb405128ddfe891e242
4
- data.tar.gz: f69f77cf6febfa74b1bdc5103d245543f38ddcfe223d474dffab5913846525ec
3
+ metadata.gz: c5672f967be01303dd78eba5c0a1ab45729d15b604e2f2cbb6108c69864ad5f6
4
+ data.tar.gz: 8ff91d1efafb67205b6ba07697d2c9f920e34df5e59f357433e54a6f9f0cca76
5
5
  SHA512:
6
- metadata.gz: 3358c2574bcdd0e3a8c08460f2dd31ecd3ade8e04ed60380f8037c46dd0f67321ac2c4ccace6e1f82080acecb2dc71054630c2c1fec54b2a99cb50c0476dd0b2
7
- data.tar.gz: c10686ec8aacadf3268eafd407e4e2259e88deae363829d5ebe1b2877ed8e15c658bb86fe97b786d116c00b10e6eaff14baf5bb71a7a737ec507f3ab65f61187
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
@@ -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
- result = transformer.call(
221
- :config => @config,
222
- :is_whitelisted => node_whitelist.include?(node),
223
- :node => node,
224
- :node_name => node.name.downcase,
225
- :node_whitelist => node_whitelist
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])
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  class Sanitize
4
- VERSION = '4.6.5'
4
+ VERSION = '4.6.6'
5
5
  end
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.5
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-05-17 00:00:00.000000000 Z
11
+ date: 2018-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: crass