qiita-markdown 1.2.0 → 1.4.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 +4 -4
- data/.github/CODEOWNERS +5 -0
- data/.github/dependabot.yml +22 -0
- data/.github/workflows/release.yml +22 -0
- data/.github/workflows/test.yml +8 -8
- data/.rubocop.yml +7 -7
- data/CHANGELOG.md +10 -0
- data/Gemfile +1 -1
- data/lib/qiita/markdown/embed/blueprint_ue.rb +11 -0
- data/lib/qiita/markdown/embed/google_drive.rb +11 -0
- data/lib/qiita/markdown/embed/stack_blitz.rb +11 -0
- data/lib/qiita/markdown/filters/code_block.rb +1 -1
- data/lib/qiita/markdown/transformers/filter_iframe.rb +3 -0
- data/lib/qiita/markdown/version.rb +1 -1
- data/lib/qiita/markdown.rb +3 -0
- data/spec/qiita/markdown/processor_spec.rb +110 -0
- metadata +9 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 20dde5cbdc1d2e970bb956c7b55ad0123e00dd95b2d60e4cdafd31782278c670
|
4
|
+
data.tar.gz: 4943b67271e3ad7e991815e22f867281e4e603ddb5641a013335d2d26b129089
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 971bb032fff9ca87fd6756a37c3dbae98229d2a8ae3363731252b7ad4d82924ee912ee817e1d8c9cd5f499983abae473485b7f33268805cdc5bcd21346a641c0
|
7
|
+
data.tar.gz: 8afc2a7c23fe930fd4865ff779ec4735365e565a5f09070b74b9fddb4616da613c4cfc4abc78116be759b79385ef261867275ea0f8a4f44456d282ddc3b27ce5
|
data/.github/CODEOWNERS
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
version: 2
|
2
|
+
updates:
|
3
|
+
|
4
|
+
- package-ecosystem: "bundler"
|
5
|
+
directories:
|
6
|
+
- "/"
|
7
|
+
schedule:
|
8
|
+
interval: "daily"
|
9
|
+
time: "14:00"
|
10
|
+
timezone: "Asia/Tokyo"
|
11
|
+
open-pull-requests-limit: 5
|
12
|
+
rebase-strategy: "disabled"
|
13
|
+
|
14
|
+
- package-ecosystem: "github-actions"
|
15
|
+
directories:
|
16
|
+
- "/"
|
17
|
+
schedule:
|
18
|
+
interval: "daily"
|
19
|
+
time: "14:00"
|
20
|
+
timezone: "Asia/Tokyo"
|
21
|
+
open-pull-requests-limit: 5
|
22
|
+
rebase-strategy: "disabled"
|
@@ -0,0 +1,22 @@
|
|
1
|
+
name: Release
|
2
|
+
|
3
|
+
on:
|
4
|
+
workflow_dispatch:
|
5
|
+
|
6
|
+
jobs:
|
7
|
+
release:
|
8
|
+
runs-on: ubuntu-latest
|
9
|
+
|
10
|
+
environment: release
|
11
|
+
|
12
|
+
permissions:
|
13
|
+
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
|
14
|
+
contents: write # IMPORTANT: this permission is required for `rake release` to push the release tag
|
15
|
+
|
16
|
+
steps:
|
17
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
18
|
+
- uses: ruby/setup-ruby@a4effe49ee8ee5b8b5091268c473a4628afb5651 # v1.245.0
|
19
|
+
with:
|
20
|
+
ruby-version: 3.4.4 # Latest stable Ruby for release builds
|
21
|
+
bundler-cache: true
|
22
|
+
- uses: rubygems/release-gem@a25424ba2ba8b387abc8ef40807c2c85b96cbe32 # v1.1.1
|
data/.github/workflows/test.yml
CHANGED
@@ -16,15 +16,15 @@ jobs:
|
|
16
16
|
steps:
|
17
17
|
- name: Get branch names
|
18
18
|
id: branch-name
|
19
|
-
uses: tj-actions/branch-names@
|
20
|
-
- uses: actions/checkout@v3
|
21
|
-
- uses: ruby/setup-ruby@v1
|
19
|
+
uses: tj-actions/branch-names@dde14ac574a8b9b1cedc59a1cf312788af43d8d8 # v8.2.1
|
20
|
+
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
|
21
|
+
- uses: ruby/setup-ruby@13e7a03dc3ac6c3798f4570bfead2aed4d96abfb # v1.244.0
|
22
22
|
with:
|
23
|
-
ruby-version: '3.
|
23
|
+
ruby-version: '3.2'
|
24
24
|
bundler-cache: true
|
25
25
|
- name: Test & publish code coverage
|
26
26
|
if: "${{ env.CC_TEST_REPORTER_ID != '' }}"
|
27
|
-
uses: paambaati/codeclimate-action@v2.7.5
|
27
|
+
uses: paambaati/codeclimate-action@7bcf9e73c0ee77d178e72c0ec69f1a99c1afc1f3 # v2.7.5
|
28
28
|
env:
|
29
29
|
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
|
30
30
|
GIT_BRANCH: ${{ steps.branch-name.outputs.current_branch }}
|
@@ -37,7 +37,7 @@ jobs:
|
|
37
37
|
fail-fast: false
|
38
38
|
matrix:
|
39
39
|
os: ['ubuntu-latest', 'macos-latest']
|
40
|
-
ruby: ['3.
|
40
|
+
ruby: ['3.2', '3.3', '3.4']
|
41
41
|
experimental: [false]
|
42
42
|
include:
|
43
43
|
- os: 'ubuntu-latest'
|
@@ -46,8 +46,8 @@ jobs:
|
|
46
46
|
runs-on: ${{ matrix.os }}
|
47
47
|
continue-on-error: ${{ matrix.experimental }}
|
48
48
|
steps:
|
49
|
-
- uses: actions/checkout@v3
|
50
|
-
- uses: ruby/setup-ruby@v1
|
49
|
+
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
|
50
|
+
- uses: ruby/setup-ruby@13e7a03dc3ac6c3798f4570bfead2aed4d96abfb # v1.244.0
|
51
51
|
with:
|
52
52
|
ruby-version: ${{ matrix.ruby }}
|
53
53
|
bundler-cache: true
|
data/.rubocop.yml
CHANGED
@@ -3,9 +3,16 @@ inherit_from: .rubocop_todo.yml
|
|
3
3
|
AllCops:
|
4
4
|
NewCops: enable
|
5
5
|
|
6
|
+
Layout/LineLength:
|
7
|
+
Enabled: false
|
8
|
+
|
6
9
|
Metrics/ClassLength:
|
7
10
|
Enabled: false
|
8
11
|
|
12
|
+
Naming/PredicatePrefix:
|
13
|
+
ForbiddenPrefixes:
|
14
|
+
- is_
|
15
|
+
|
9
16
|
Style/Documentation:
|
10
17
|
Enabled: false
|
11
18
|
|
@@ -15,10 +22,6 @@ Style/EmptyCaseCondition:
|
|
15
22
|
Style/GuardClause:
|
16
23
|
Enabled: false
|
17
24
|
|
18
|
-
Style/PredicateName:
|
19
|
-
ForbiddenPrefixes:
|
20
|
-
- is_
|
21
|
-
|
22
25
|
Style/StringLiterals:
|
23
26
|
EnforcedStyle: double_quotes
|
24
27
|
|
@@ -34,9 +37,6 @@ Style/TrailingCommaInArrayLiteral:
|
|
34
37
|
Style/RedundantPercentQ:
|
35
38
|
Enabled: false
|
36
39
|
|
37
|
-
Metrics/LineLength:
|
38
|
-
Enabled: false
|
39
|
-
|
40
40
|
Metrics/BlockLength:
|
41
41
|
Exclude:
|
42
42
|
- qiita-markdown.gemspec
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
@@ -9,5 +9,5 @@ gem "codeclimate-test-reporter", "0.4.4"
|
|
9
9
|
gem "pry"
|
10
10
|
gem "rake"
|
11
11
|
gem "rspec", "~> 3.1"
|
12
|
-
gem "rubocop", "~> 1.
|
12
|
+
gem "rubocop", "~> 1.76.0"
|
13
13
|
gem "simplecov", "!= 0.18.0", "!= 0.18.1", "!= 0.18.2", "!= 0.18.3", "!= 0.18.4", "!= 0.18.5", "!= 0.19.0", "!= 0.19.1"
|
@@ -10,6 +10,9 @@ module Qiita
|
|
10
10
|
Embed::GoogleSlide::SCRIPT_HOST,
|
11
11
|
Embed::Docswell::SCRIPT_HOSTS,
|
12
12
|
Embed::Figma::SCRIPT_HOST,
|
13
|
+
Embed::GoogleDrive::SCRIPT_HOST,
|
14
|
+
Embed::StackBlitz::SCRIPT_HOST,
|
15
|
+
Embed::BlueprintUe::SCRIPT_HOST,
|
13
16
|
].flatten.freeze
|
14
17
|
|
15
18
|
def self.call(**args)
|
data/lib/qiita/markdown.rb
CHANGED
@@ -12,11 +12,14 @@ require "qiita/markdown/embed/code_pen"
|
|
12
12
|
require "qiita/markdown/embed/tweet"
|
13
13
|
require "qiita/markdown/embed/asciinema"
|
14
14
|
require "qiita/markdown/embed/youtube"
|
15
|
+
require "qiita/markdown/embed/google_drive"
|
15
16
|
require "qiita/markdown/embed/slide_share"
|
16
17
|
require "qiita/markdown/embed/google_slide"
|
17
18
|
require "qiita/markdown/embed/speeker_deck"
|
18
19
|
require "qiita/markdown/embed/docswell"
|
19
20
|
require "qiita/markdown/embed/figma"
|
21
|
+
require "qiita/markdown/embed/stack_blitz"
|
22
|
+
require "qiita/markdown/embed/blueprint_ue"
|
20
23
|
require "qiita/markdown/transformers/filter_attributes"
|
21
24
|
require "qiita/markdown/transformers/filter_script"
|
22
25
|
require "qiita/markdown/transformers/filter_iframe"
|
@@ -1520,6 +1520,42 @@ describe Qiita::Markdown::Processor do
|
|
1520
1520
|
end
|
1521
1521
|
end
|
1522
1522
|
|
1523
|
+
context "with HTML embed code for Google Drive" do
|
1524
|
+
shared_examples "embed code googledrive example" do
|
1525
|
+
let(:markdown) do
|
1526
|
+
<<-MARKDOWN.strip_heredoc
|
1527
|
+
<iframe src="#{url}" width="640" height="480" frameborder="0" allowfullscreen="true"></iframe>
|
1528
|
+
MARKDOWN
|
1529
|
+
end
|
1530
|
+
let(:file_id) { "DRIVE_FILE_ID_EXAMPLE" }
|
1531
|
+
let(:url) { "#{scheme}//drive.google.com/file/d/#{file_id}/preview" }
|
1532
|
+
|
1533
|
+
if allowed
|
1534
|
+
it "does not sanitize embed code" do
|
1535
|
+
should eq <<-HTML.strip_heredoc
|
1536
|
+
<iframe src="#{url}" width="640" height="480" frameborder="0" allowfullscreen="true"></iframe>
|
1537
|
+
HTML
|
1538
|
+
end
|
1539
|
+
else
|
1540
|
+
it "forces width attribute on iframe" do
|
1541
|
+
should eq <<-HTML.strip_heredoc
|
1542
|
+
<iframe src="#{url}" width="100%" height="480" frameborder="0" allowfullscreen="true"></iframe>
|
1543
|
+
HTML
|
1544
|
+
end
|
1545
|
+
end
|
1546
|
+
end
|
1547
|
+
|
1548
|
+
context "with scheme" do
|
1549
|
+
let(:scheme) { "https:" }
|
1550
|
+
include_examples "embed code googledrive example"
|
1551
|
+
end
|
1552
|
+
|
1553
|
+
context "without scheme" do
|
1554
|
+
let(:scheme) { "" }
|
1555
|
+
include_examples "embed code googledrive example"
|
1556
|
+
end
|
1557
|
+
end
|
1558
|
+
|
1523
1559
|
context "with HTML embed code for SlideShare" do
|
1524
1560
|
shared_examples "embed code slideshare example" do
|
1525
1561
|
let(:markdown) do
|
@@ -1711,6 +1747,80 @@ describe Qiita::Markdown::Processor do
|
|
1711
1747
|
end
|
1712
1748
|
end
|
1713
1749
|
|
1750
|
+
context "with HTML embed code for StackBlitz" do
|
1751
|
+
shared_examples "embed code stackblitz example" do
|
1752
|
+
let(:markdown) do
|
1753
|
+
<<~MARKDOWN
|
1754
|
+
<iframe src="#{url}" width="800" height="600" frameborder="0" allowfullscreen="true"></iframe>
|
1755
|
+
MARKDOWN
|
1756
|
+
end
|
1757
|
+
let(:url) { "#{scheme}//stackblitz.com/embed/example" }
|
1758
|
+
|
1759
|
+
if allowed
|
1760
|
+
it "does not sanitize embed code" do
|
1761
|
+
should eq <<~HTML
|
1762
|
+
<iframe src="#{url}" width="800" height="600" frameborder="0" allowfullscreen="true"></iframe>
|
1763
|
+
HTML
|
1764
|
+
end
|
1765
|
+
else
|
1766
|
+
it "forces width attribute on iframe" do
|
1767
|
+
should eq <<~HTML
|
1768
|
+
<iframe src="#{url}" width="100%" height="600" frameborder="0" allowfullscreen="true"></iframe>
|
1769
|
+
HTML
|
1770
|
+
end
|
1771
|
+
end
|
1772
|
+
end
|
1773
|
+
|
1774
|
+
context "with scheme" do
|
1775
|
+
let(:scheme) { "https:" }
|
1776
|
+
|
1777
|
+
include_examples "embed code stackblitz example"
|
1778
|
+
end
|
1779
|
+
|
1780
|
+
context "without scheme" do
|
1781
|
+
let(:scheme) { "" }
|
1782
|
+
|
1783
|
+
include_examples "embed code stackblitz example"
|
1784
|
+
end
|
1785
|
+
end
|
1786
|
+
|
1787
|
+
context "with HTML embed code for blueprintUE" do
|
1788
|
+
shared_examples "embed code blueprintUE example" do
|
1789
|
+
let(:markdown) do
|
1790
|
+
<<~MARKDOWN
|
1791
|
+
<iframe src="#{url}" width="800" height="600" frameborder="0" allowfullscreen="true"></iframe>
|
1792
|
+
MARKDOWN
|
1793
|
+
end
|
1794
|
+
let(:url) { "#{scheme}//blueprintue.com/embed/example" }
|
1795
|
+
|
1796
|
+
if allowed
|
1797
|
+
it "does not sanitize embed code" do
|
1798
|
+
should eq <<~HTML
|
1799
|
+
<iframe src="#{url}" width="800" height="600" frameborder="0" allowfullscreen="true"></iframe>
|
1800
|
+
HTML
|
1801
|
+
end
|
1802
|
+
else
|
1803
|
+
it "forces width attribute on iframe" do
|
1804
|
+
should eq <<~HTML
|
1805
|
+
<iframe src="#{url}" width="100%" height="600" frameborder="0" allowfullscreen="true"></iframe>
|
1806
|
+
HTML
|
1807
|
+
end
|
1808
|
+
end
|
1809
|
+
end
|
1810
|
+
|
1811
|
+
context "with scheme" do
|
1812
|
+
let(:scheme) { "https:" }
|
1813
|
+
|
1814
|
+
include_examples "embed code blueprintUE example"
|
1815
|
+
end
|
1816
|
+
|
1817
|
+
context "without scheme" do
|
1818
|
+
let(:scheme) { "" }
|
1819
|
+
|
1820
|
+
include_examples "embed code blueprintUE example"
|
1821
|
+
end
|
1822
|
+
end
|
1823
|
+
|
1714
1824
|
context "with embed code for Tweet" do
|
1715
1825
|
let(:markdown) do
|
1716
1826
|
<<-MARKDOWN.strip_heredoc
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qiita-markdown
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryo Nakamura
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
13
|
name: addressable
|
@@ -122,13 +121,15 @@ dependencies:
|
|
122
121
|
- - ">="
|
123
122
|
- !ruby/object:Gem::Version
|
124
123
|
version: '0'
|
125
|
-
description:
|
126
124
|
email:
|
127
125
|
- r7kamura@gmail.com
|
128
126
|
executables: []
|
129
127
|
extensions: []
|
130
128
|
extra_rdoc_files: []
|
131
129
|
files:
|
130
|
+
- ".github/CODEOWNERS"
|
131
|
+
- ".github/dependabot.yml"
|
132
|
+
- ".github/workflows/release.yml"
|
132
133
|
- ".github/workflows/test.yml"
|
133
134
|
- ".gitignore"
|
134
135
|
- ".rspec"
|
@@ -143,12 +144,15 @@ files:
|
|
143
144
|
- lib/qiita/markdown.rb
|
144
145
|
- lib/qiita/markdown/base_processor.rb
|
145
146
|
- lib/qiita/markdown/embed/asciinema.rb
|
147
|
+
- lib/qiita/markdown/embed/blueprint_ue.rb
|
146
148
|
- lib/qiita/markdown/embed/code_pen.rb
|
147
149
|
- lib/qiita/markdown/embed/docswell.rb
|
148
150
|
- lib/qiita/markdown/embed/figma.rb
|
151
|
+
- lib/qiita/markdown/embed/google_drive.rb
|
149
152
|
- lib/qiita/markdown/embed/google_slide.rb
|
150
153
|
- lib/qiita/markdown/embed/slide_share.rb
|
151
154
|
- lib/qiita/markdown/embed/speeker_deck.rb
|
155
|
+
- lib/qiita/markdown/embed/stack_blitz.rb
|
152
156
|
- lib/qiita/markdown/embed/tweet.rb
|
153
157
|
- lib/qiita/markdown/embed/youtube.rb
|
154
158
|
- lib/qiita/markdown/filters/checkbox.rb
|
@@ -192,7 +196,6 @@ licenses:
|
|
192
196
|
- MIT
|
193
197
|
metadata:
|
194
198
|
rubygems_mfa_required: 'true'
|
195
|
-
post_install_message:
|
196
199
|
rdoc_options: []
|
197
200
|
require_paths:
|
198
201
|
- lib
|
@@ -207,8 +210,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
207
210
|
- !ruby/object:Gem::Version
|
208
211
|
version: '0'
|
209
212
|
requirements: []
|
210
|
-
rubygems_version: 3.
|
211
|
-
signing_key:
|
213
|
+
rubygems_version: 3.6.7
|
212
214
|
specification_version: 4
|
213
215
|
summary: Qiita-specified markdown processor.
|
214
216
|
test_files: []
|