sanitize-rails 1.0.1 → 1.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bfbc2ae7c47122752b36bf9fd44265540afa1926
4
- data.tar.gz: 4f1db27d08d573d55d58ae19dc93b97c5c3de292
3
+ metadata.gz: c819bce23ea04e1acd72e959589b2e0a4b509ba8
4
+ data.tar.gz: 9b3b305b20a916fa669c63b996a80661bc7fc214
5
5
  SHA512:
6
- metadata.gz: 866afa7c09eaa6247abede68c7de213cfc8a8e744e4a7e5c078f70c8692c1fb3006e2fa560b23f31e617532b439c97c183a9482e6e68039ebcd634c4f0acb162
7
- data.tar.gz: bbd0cbb0e5bd12ae42a8ff199098d13d8e81cf686c2c29fa10d9ccd332cb1c13b4a6b5ec412255515cbc211d42b6907e075a594d197dcf7a78781def3fdc7e6f
6
+ metadata.gz: bc5faf19b023736f41e095fc87159f10e02a0fb36b0d26040fd57cb48ea106cc10d4d3b93c0fd15a6f05eb6d88dbf3bd7803334035b97ae03d8a865fc7fcf789
7
+ data.tar.gz: 0dde098f9ef4b40c5572888862339fba2d9fa932531fed50e838e7b79f0e4149f94805b9c9a06a3b034ecea64068069fecd72b9ad3d4f8638e8216f122a6e353
@@ -3,12 +3,11 @@
3
3
  #
4
4
  # https://github.com/vjt/sanitize-rails
5
5
  #
6
- # (C) 2011-2014 vjt@openssl.it
6
+ # (C) 2011-2015 vjt@openssl.it
7
7
  #
8
8
  # MIT License
9
9
  #
10
10
  require 'sanitize'
11
- require 'htmlentities'
12
11
  require 'sanitize/rails/railtie' if defined? Rails
13
12
 
14
13
  module Sanitize::Rails
@@ -3,8 +3,36 @@ module Sanitize::Rails
3
3
  module Engine
4
4
  extend self
5
5
 
6
+ # Changes the Sanitizer configuration.
7
+ #
6
8
  def configure(config)
7
- @@config = config.freeze
9
+ @_config = config.freeze
10
+ @_cleaner = nil
11
+ end
12
+
13
+ # Returns the current Sanitizer configuration. The configuration is built
14
+ # from Rails configuration, if defined, else Sanitize::Config::BASIC is
15
+ # used.
16
+ #
17
+ # FIXME: Remove this, as it is meant only not to break assumptions on old
18
+ # applications.
19
+ #
20
+ if defined?(::ActionView::Base) &&
21
+ ::ActionView::Base.respond_to?(:sanitized_allowed_tags) &&
22
+ ::ActionView::Base.sanitized_allowed_tags.respond_to?(:size) &&
23
+ ::ActionView::Base.sanitized_allowed_tags.size > 0
24
+
25
+ def config
26
+ @_config ||= {
27
+ :elements => ::ActionView::Base.sanitized_allowed_tags.to_a,
28
+ :attributes => { :all => ::ActionView::Base.sanitized_allowed_attributes.to_a },
29
+ :protocols => { :all => ::ActionView::Base.sanitized_allowed_protocols.to_a }
30
+ }
31
+ end
32
+ else
33
+ def config
34
+ @_config ||= ::Sanitize::Config::BASIC
35
+ end
8
36
  end
9
37
 
10
38
  # Returns a memoized instance of the Engine with the
@@ -12,22 +40,7 @@ module Sanitize::Rails
12
40
  # the ActionView's default config
13
41
  #
14
42
  def cleaner
15
- @@config ||= begin
16
- {
17
- :elements => ::ActionView::Base.sanitized_allowed_tags.to_a,
18
- :attributes => { :all => ::ActionView::Base.sanitized_allowed_attributes.to_a},
19
- :protocols => { :all => ::ActionView::Base.sanitized_allowed_protocols.to_a },
20
- :escape_entities => true
21
- }
22
- rescue
23
- warn "ActionView not available, falling back to Sanitize's BASIC config"
24
- ::Sanitize::Config::BASIC
25
- end
26
- @sanitizer ||= ::Sanitize.new(@@config)
27
- end
28
-
29
- def coder
30
- @coder ||= HTMLEntities.new
43
+ @_cleaner ||= ::Sanitize.new(config)
31
44
  end
32
45
 
33
46
  # Returns a copy of the given `string` after sanitizing it and marking it
@@ -63,14 +76,8 @@ module Sanitize::Rails
63
76
 
64
77
  private
65
78
 
66
- def escape_entities
67
- @@config[:escape_entities].nil? ? true : @@config[:escape_entities]
68
- end
69
-
70
79
  def cleaned_fragment(string)
71
- result = cleaner.fragment(string)
72
- result = coder.decode(result) unless escape_entities
73
- result
80
+ cleaner.fragment(string)
74
81
  end
75
82
  end
76
83
  end
@@ -1,5 +1,5 @@
1
1
  class Sanitize
2
2
  module Rails
3
- VERSION = '1.0.1'
3
+ VERSION = '1.1.0'
4
4
  end
5
5
  end
@@ -17,7 +17,6 @@ Gem::Specification.new do |s|
17
17
  s.require_paths = ["lib"]
18
18
  s.files = `git ls-files`.split("\n")
19
19
 
20
- s.add_dependency "rails", ">= 3.0"
20
+ s.add_dependency "rails", ">= 3.0"
21
21
  s.add_dependency "sanitize", "~> 3.0"
22
- s.add_dependency "htmlentities", "~> 4.3.3"
23
22
  end
@@ -47,16 +47,14 @@ class SanitizeRailsEngineTest < Minitest::Test
47
47
  assert_instance_of ::ActiveSupport::SafeBuffer, new_string
48
48
  end
49
49
 
50
- def test_clean_not_making_html_entities
51
- string = %Q|<script>hello & world</script>|
52
- @engine.configure(escape_entities: false)
50
+ def test_clean_not_producing_malicious_html_entities
51
+ string = %Q|&lt;script&gt;hello & world&lt;/script&gt;|
53
52
  @engine.clean! string
54
- assert_equal string, "hello & world"
53
+ assert_equal string, "&lt;script&gt;hello &amp; world&lt;/script&gt;"
55
54
  end
56
55
 
57
56
  def test_clean_making_html_entities
58
57
  string = %Q|<script>hello & world</script>|
59
- @engine.configure(escape_entities: true)
60
58
  @engine.clean! string
61
59
  assert_equal string, "hello &amp; world"
62
60
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sanitize-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcello Barnaba
@@ -40,20 +40,6 @@ dependencies:
40
40
  - - "~>"
41
41
  - !ruby/object:Gem::Version
42
42
  version: '3.0'
43
- - !ruby/object:Gem::Dependency
44
- name: htmlentities
45
- requirement: !ruby/object:Gem::Requirement
46
- requirements:
47
- - - "~>"
48
- - !ruby/object:Gem::Version
49
- version: 4.3.3
50
- type: :runtime
51
- prerelease: false
52
- version_requirements: !ruby/object:Gem::Requirement
53
- requirements:
54
- - - "~>"
55
- - !ruby/object:Gem::Version
56
- version: 4.3.3
57
43
  description:
58
44
  email:
59
45
  - vjt@openssl.it