qiita-markdown 0.26.0 → 0.27.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of qiita-markdown might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7e2e556a9a6cfd7d44402fa85c90d9ef7b8fee58f61f7fd2cdb1e837bdbed4c1
4
- data.tar.gz: 3e5c460dcb2a8e732f8f6e52fc363991d2684f409ef74c9721136993a5fc4ea1
3
+ metadata.gz: e5daef53080035aaeb3d6330fd29a92c62edfb4daf432c62f4617f2683682ab1
4
+ data.tar.gz: 8bd27e4fb3b789cbbe98ca99dd987277091f262509d4a596996942ead45ae9ca
5
5
  SHA512:
6
- metadata.gz: de3681b0c6a34adeb742e8d78ce1302429144855f33859ab918aca1696767c9b0606d5921480efe6e38b8e59faacdbb22fdb0df6b2f77d78c0f19ca569314960
7
- data.tar.gz: b3a76674697c8d6988c94c8523b1e7a04d07a093e93522cc8ef8f77004cf80175e4fbf9bd6c36995570ae87e587b4239417ad1f501605ae6f7d120b542fc4878
6
+ metadata.gz: f38d622bdfcec12a795998a31b9dec566583542837024bb9ad6c0c88531b16b759774966ad0925d03d06f3c58de9d81192b074c6ed82c57b26caa7c5a7b93332
7
+ data.tar.gz: 4c22a80c6be7cb94ee7cc5e1a3966a788aae38f6e72e0784a42678d472cc1081dbd626f89d98250fea91e4000081fc949334d276b09869896cca4b005155e51b
@@ -1,5 +1,9 @@
1
1
  ## Unreleased
2
2
 
3
+ ## 0.27.0
4
+
5
+ - Support embed Asciinema
6
+
3
7
  ## 0.26.0
4
8
 
5
9
  - Use greenmat 3.2.2.4
@@ -9,6 +9,7 @@ require "sanitize"
9
9
 
10
10
  require "qiita/markdown/embed/code_pen"
11
11
  require "qiita/markdown/embed/tweet"
12
+ require "qiita/markdown/embed/asciinema"
12
13
  require "qiita/markdown/transformers/filter_attributes"
13
14
  require "qiita/markdown/transformers/filter_script"
14
15
  require "qiita/markdown/transformers/strip_invalid_node"
@@ -0,0 +1,9 @@
1
+ module Qiita
2
+ module Markdown
3
+ module Embed
4
+ module Asciinema
5
+ SCRIPT_HOST = "asciinema.org".freeze
6
+ end
7
+ end
8
+ end
9
+ end
@@ -26,7 +26,7 @@ module Qiita
26
26
  "li" => %w[id],
27
27
  "p" => Embed::CodePen::ATTRIBUTES,
28
28
  "q" => %w[cite],
29
- "script" => %w[async src],
29
+ "script" => %w[async src id],
30
30
  "sup" => %w[id],
31
31
  "td" => %w[colspan rowspan style],
32
32
  "th" => %w[colspan rowspan style],
@@ -2,11 +2,15 @@ module Qiita
2
2
  module Markdown
3
3
  module Transformers
4
4
  class FilterScript
5
- WHITE_LIST = [
5
+ URL_WHITE_LIST = [
6
6
  Embed::CodePen::SCRIPT_URLS,
7
7
  Embed::Tweet::SCRIPT_URL,
8
8
  ].flatten.freeze
9
9
 
10
+ HOST_WHITE_LIST = [
11
+ Embed::Asciinema::SCRIPT_HOST,
12
+ ].flatten.freeze
13
+
10
14
  def self.call(*args)
11
15
  new(*args).transform
12
16
  end
@@ -17,7 +21,7 @@ module Qiita
17
21
 
18
22
  def transform
19
23
  if name == "script"
20
- if WHITE_LIST.include?(node["src"])
24
+ if URL_WHITE_LIST.include?(node["src"]) || HOST_WHITE_LIST.include?(host_of(node["src"]))
21
25
  node["async"] = "async" unless node.attributes.key?("async")
22
26
  node.children.unlink
23
27
  else
@@ -35,6 +39,12 @@ module Qiita
35
39
  def node
36
40
  @env[:node]
37
41
  end
42
+
43
+ def host_of(url)
44
+ Addressable::URI.parse(url).host if url
45
+ rescue Addressable::URI::InvalidURIError
46
+ nil
47
+ end
38
48
  end
39
49
  end
40
50
  end
@@ -1,5 +1,5 @@
1
1
  module Qiita
2
2
  module Markdown
3
- VERSION = "0.26.0"
3
+ VERSION = "0.27.0"
4
4
  end
5
5
  end
@@ -28,7 +28,7 @@ Gem::Specification.new do |spec|
28
28
  spec.add_dependency "addressable"
29
29
  spec.add_development_dependency "activesupport", "4.2.6"
30
30
  spec.add_development_dependency "benchmark-ips", "~> 1.2"
31
- spec.add_development_dependency "bundler", "~> 1.7"
31
+ spec.add_development_dependency "bundler"
32
32
  spec.add_development_dependency "codeclimate-test-reporter", "0.4.4"
33
33
  spec.add_development_dependency "pry"
34
34
  spec.add_development_dependency "rake", "~> 10.0"
@@ -1385,6 +1385,28 @@ describe Qiita::Markdown::Processor do
1385
1385
  end
1386
1386
  end
1387
1387
 
1388
+ context "with HTML embed code for Asciinema" do
1389
+ let(:markdown) do
1390
+ <<-MARKDOWN.strip_heredoc
1391
+ <script id="example" src="https://asciinema.org/a/example.js"></script>
1392
+ MARKDOWN
1393
+ end
1394
+
1395
+ if allowed
1396
+ it "does not sanitize embed code" do
1397
+ should eq <<-HTML.strip_heredoc
1398
+ <script id="example" src="https://asciinema.org/a/example.js"></script>
1399
+ HTML
1400
+ end
1401
+ else
1402
+ it "forces async attribute on script" do
1403
+ should eq <<-HTML.strip_heredoc
1404
+ <script id="example" src="https://asciinema.org/a/example.js" async="async"></script>
1405
+ HTML
1406
+ end
1407
+ end
1408
+ end
1409
+
1388
1410
  context "with embed code for Tweet" do
1389
1411
  let(:markdown) do
1390
1412
  <<-MARKDOWN.strip_heredoc
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qiita-markdown
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.26.0
4
+ version: 0.27.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Nakamura
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-11 00:00:00.000000000 Z
11
+ date: 2019-01-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gemoji
@@ -154,16 +154,16 @@ dependencies:
154
154
  name: bundler
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - "~>"
157
+ - - ">="
158
158
  - !ruby/object:Gem::Version
159
- version: '1.7'
159
+ version: '0'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - "~>"
164
+ - - ">="
165
165
  - !ruby/object:Gem::Version
166
- version: '1.7'
166
+ version: '0'
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: codeclimate-test-reporter
169
169
  requirement: !ruby/object:Gem::Requirement
@@ -256,6 +256,7 @@ files:
256
256
  - lib/qiita-markdown.rb
257
257
  - lib/qiita/markdown.rb
258
258
  - lib/qiita/markdown/base_processor.rb
259
+ - lib/qiita/markdown/embed/asciinema.rb
259
260
  - lib/qiita/markdown/embed/code_pen.rb
260
261
  - lib/qiita/markdown/embed/tweet.rb
261
262
  - lib/qiita/markdown/filters/checkbox.rb
@@ -310,7 +311,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
310
311
  version: '0'
311
312
  requirements: []
312
313
  rubyforge_project:
313
- rubygems_version: 2.7.4
314
+ rubygems_version: 2.7.6
314
315
  signing_key:
315
316
  specification_version: 4
316
317
  summary: Qiita-specified markdown processor.