devcenter-parser 2.2.0 → 2.2.1

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: f2f8e036f620a0e3ac39aa533bebd4df0ba6dd83
4
- data.tar.gz: 22ab56166bc5b1cff3e544edd51811327b6e77a4
3
+ metadata.gz: 33d985f26f470aa8726d4bde43b7e8b2bf189ff1
4
+ data.tar.gz: 8a85de0f3826a51f796ec72e42e398822432a419
5
5
  SHA512:
6
- metadata.gz: e00495906e58f897e4159bdb1bd417430f7be40ec5e3aea5c3ef049ac514d6b80f9307dcc9169a9c7403c3eaa9bf7b1295a19e7fac127e749ddbaad5da82815d
7
- data.tar.gz: aff646f4472e5141643fc210cdf31f89e8b3ba2deffa385148be6b0c99af7c861d72066491e5d9da3e702688a09109e78a6e310afbde8ed8b04085981556dc64
6
+ metadata.gz: fd8aa1323f3abd4587612013659b7a08e3ddc90293fcf73703202d8544ec01d053bfeefcfb6e99c5a61aa87c4543b62b748bc34e9a8adb710efd361e2b2b88b5
7
+ data.tar.gz: 44ece71a5cabf78624735e5e0baaf7d085fa3afeeb0002eb8b9faebcea198cea7920aa8d19209ba8c77479d097230abb9652fad10d09d8de82bb51b61599696d
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ pkg/
@@ -86,7 +86,7 @@ module DevcenterParser
86
86
  # custom
87
87
  config[:elements] += %w{ toolbelt }
88
88
 
89
- config[:transformers] = Array(config[:transformers]).push(iframe_sanitizer)
89
+ config[:transformers] = Array(config[:transformers]).push(sanitize_node_with_invalid_src)
90
90
 
91
91
  @@sanitize_config = config.merge({remove_contents: true, allow_comments: true})
92
92
  end
@@ -112,11 +112,21 @@ module DevcenterParser
112
112
  broken_html.nil? ? "Contains broken raw HTML." : "This raw HTML is invalid: #{CGI.unescapeHTML(broken_html)}"
113
113
  end
114
114
 
115
- def self.iframe_sanitizer
115
+ def self.sanitize_node_with_invalid_src
116
116
  lambda do |env|
117
117
  return unless env[:node].attributes['src']
118
+ # disallow javascript in src for all attributes
119
+ env[:node].unlink if env[:node].attributes['src'].value =~ /\Ajavascript:/i
118
120
  # allow iframes if they have src that is from vimeo
119
- env[:node].unlink unless env[:node].attributes['src'].value =~ /\Ahttps:\/\/player.vimeo.com\//i
121
+ env[:node].unlink if iframe?(env[:node]) && iframe_has_invalid_src?(env[:node])
120
122
  end
121
123
  end
124
+
125
+ def self.iframe_has_invalid_src?(node)
126
+ node.attributes['src'].value !~ /\Ahttps:\/\/player.vimeo.com\//i
127
+ end
128
+
129
+ def self.iframe?(node)
130
+ node.name == 'iframe'
131
+ end
122
132
  end
@@ -1,3 +1,3 @@
1
1
  module DevcenterParser
2
- VERSION = '2.2.0'.freeze
2
+ VERSION = '2.2.1'.freeze
3
3
  end
@@ -47,6 +47,11 @@ describe 'DevcenterParser' do
47
47
  assert_parsing_result src, src
48
48
  end
49
49
 
50
+ it 'allows images' do
51
+ src = '<p><img src="http://nav.heroku.com/images/logos/logo.png" alt="image"></p>'
52
+ assert_parsing_result src, src
53
+ end
54
+
50
55
  describe 'github markdown' do
51
56
  it 'leaves HTML comments' do
52
57
  md = '<!-- c1 -->'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devcenter-parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Heroku
@@ -87,6 +87,7 @@ executables: []
87
87
  extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
+ - ".gitignore"
90
91
  - Gemfile
91
92
  - LICENSE
92
93
  - README.md