qiita-markdown 0.26.0 → 0.27.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.

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.