devcenter-parser 2.2.0 → 2.2.1

Sign up to get free protection for your applications and to get access to all the features.
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