qiita-markdown 1.6.1 → 1.8.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/dependabot.yml +3 -0
- data/.github/workflows/release.yml +4 -4
- data/.github/workflows/test.yml +13 -11
- data/CHANGELOG.md +10 -0
- data/Gemfile +2 -2
- data/lib/qiita/markdown/embed/claude_artifact.rb +11 -0
- data/lib/qiita/markdown/filters/code_block.rb +4 -4
- data/lib/qiita/markdown/filters/syntax_highlight.rb +2 -2
- data/lib/qiita/markdown/transformers/filter_iframe.rb +1 -0
- data/lib/qiita/markdown/version.rb +1 -1
- data/lib/qiita/markdown.rb +1 -1
- data/qiita-markdown.gemspec +2 -3
- data/spec/qiita/markdown/processor_spec.rb +37 -0
- metadata +9 -19
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4fedd17f0ad92ab616ec9fa96ee52c1accfb1f6d9cd4b018c7a0a5f834f5d538
|
|
4
|
+
data.tar.gz: c0f5b06236b754b2c028ec4a52d9aeb8687df8b780b362887fea9fe231b55210
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4f23320a96822a5c35941cce7b6e712ebbeb411ee0a8c38588086373883b4eda31ebfcb49395f8b38684c62ffdad4f94a635bc35c5442a15b9c9ae89cbc1dc39
|
|
7
|
+
data.tar.gz: 5c8156c6849e23d19f4aeb2891edcd379be73b4f0a67e6ce26b231f190fe32486afc91584e24ae39c1561122239d1b192b2bc52dd75910efaf05e1c7b260bb2b
|
data/.github/dependabot.yml
CHANGED
|
@@ -14,9 +14,9 @@ jobs:
|
|
|
14
14
|
contents: write # IMPORTANT: this permission is required for `rake release` to push the release tag
|
|
15
15
|
|
|
16
16
|
steps:
|
|
17
|
-
- uses: actions/checkout@
|
|
18
|
-
- uses: ruby/setup-ruby@
|
|
17
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
18
|
+
- uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0
|
|
19
19
|
with:
|
|
20
|
-
ruby-version: 3.4
|
|
20
|
+
ruby-version: "3.4"
|
|
21
21
|
bundler-cache: true
|
|
22
|
-
- uses: rubygems/release-gem@
|
|
22
|
+
- uses: rubygems/release-gem@7f9650160c1a4e7989fdc9855807bdbd421d8b6b # v1.4.1
|
data/.github/workflows/test.yml
CHANGED
|
@@ -16,17 +16,19 @@ jobs:
|
|
|
16
16
|
fail-fast: false
|
|
17
17
|
matrix:
|
|
18
18
|
os: ['ubuntu-latest', 'macos-latest']
|
|
19
|
-
ruby: ['3.
|
|
19
|
+
ruby: ['3.3', '3.4']
|
|
20
20
|
experimental: [false]
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
# Temporarily disabled: qiita_marker does not support Ruby 4 yet
|
|
22
|
+
# See: https://github.com/increments/qiita-markdown/issues/268
|
|
23
|
+
# include:
|
|
24
|
+
# - os: 'ubuntu-latest'
|
|
25
|
+
# ruby: 'head'
|
|
26
|
+
# experimental: true
|
|
25
27
|
runs-on: ${{ matrix.os }}
|
|
26
28
|
continue-on-error: ${{ matrix.experimental }}
|
|
27
29
|
steps:
|
|
28
|
-
- uses: actions/checkout@
|
|
29
|
-
- uses: ruby/setup-ruby@
|
|
30
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
31
|
+
- uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0
|
|
30
32
|
with:
|
|
31
33
|
ruby-version: ${{ matrix.ruby }}
|
|
32
34
|
bundler-cache: true
|
|
@@ -36,14 +38,14 @@ jobs:
|
|
|
36
38
|
qlty:
|
|
37
39
|
runs-on: ubuntu-latest
|
|
38
40
|
steps:
|
|
39
|
-
- uses: actions/checkout@
|
|
40
|
-
- uses: ruby/setup-ruby@
|
|
41
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
42
|
+
- uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0
|
|
41
43
|
with:
|
|
42
|
-
ruby-version: '3.
|
|
44
|
+
ruby-version: '3.3'
|
|
43
45
|
bundler-cache: true
|
|
44
46
|
- name: Test
|
|
45
47
|
run: bundle exec rake
|
|
46
|
-
- uses: qltysh/qlty-action/coverage@
|
|
48
|
+
- uses: qltysh/qlty-action/coverage@08a0a862c159eae9b9003081da6663d96efef637 # v2.3.0
|
|
47
49
|
with:
|
|
48
50
|
token: ${{secrets.QLTY_COVERAGE_TOKEN}}
|
|
49
51
|
files: ./coverage/coverage.json
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
## Unreleased
|
|
2
2
|
|
|
3
|
+
## 1.8.0
|
|
4
|
+
|
|
5
|
+
- Drop Ruby 3.0, 3.1, 3.2 support
|
|
6
|
+
- Detect code block language from filename with Rouge instead of github-linguist
|
|
7
|
+
- Require rouge 5.1 or later
|
|
8
|
+
|
|
9
|
+
## 1.7.0
|
|
10
|
+
|
|
11
|
+
- Support for embedding Claude Artifacts iframes
|
|
12
|
+
|
|
3
13
|
## 1.6.1
|
|
4
14
|
|
|
5
15
|
- Add a dependency on the uri gem to use version 1.0.4 or higher.
|
data/Gemfile
CHANGED
|
@@ -3,11 +3,11 @@ source "https://rubygems.org"
|
|
|
3
3
|
# Specify your gem's dependencies in qiita-markdown.gemspec
|
|
4
4
|
gemspec
|
|
5
5
|
|
|
6
|
-
gem "activesupport", "~>
|
|
6
|
+
gem "activesupport", "~> 8.1.3"
|
|
7
7
|
gem "bundler"
|
|
8
8
|
gem "pry"
|
|
9
9
|
gem "rake"
|
|
10
10
|
gem "rspec", "~> 3.1"
|
|
11
|
-
gem "rubocop", "~> 1.
|
|
11
|
+
gem "rubocop", "~> 1.91.0"
|
|
12
12
|
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"
|
|
13
13
|
gem "simplecov_json_formatter"
|
|
@@ -70,8 +70,8 @@ module Qiita
|
|
|
70
70
|
nil
|
|
71
71
|
when !has_only_filename?
|
|
72
72
|
sections[0]
|
|
73
|
-
when
|
|
74
|
-
|
|
73
|
+
when rouge_lexer
|
|
74
|
+
rouge_lexer.tag
|
|
75
75
|
end
|
|
76
76
|
end
|
|
77
77
|
|
|
@@ -85,8 +85,8 @@ module Qiita
|
|
|
85
85
|
sections[1].nil? && sections[0]&.include?(".")
|
|
86
86
|
end
|
|
87
87
|
|
|
88
|
-
def
|
|
89
|
-
@
|
|
88
|
+
def rouge_lexer
|
|
89
|
+
@rouge_lexer ||= Rouge::Lexer.guesses(filename: filename).first
|
|
90
90
|
end
|
|
91
91
|
|
|
92
92
|
def sections
|
|
@@ -4,7 +4,7 @@ module Qiita
|
|
|
4
4
|
class SyntaxHighlight < HTML::Pipeline::Filter
|
|
5
5
|
DEFAULT_LANGUAGE = "text"
|
|
6
6
|
DEFAULT_TIMEOUT = Float::INFINITY
|
|
7
|
-
|
|
7
|
+
FORMATTER = Rouge::Formatters::HTMLPygments.new(Rouge::Formatters::HTML.new)
|
|
8
8
|
|
|
9
9
|
def call
|
|
10
10
|
elapsed = 0
|
|
@@ -80,7 +80,7 @@ module Qiita
|
|
|
80
80
|
end
|
|
81
81
|
|
|
82
82
|
def highlight(language)
|
|
83
|
-
Rouge.highlight(code, language,
|
|
83
|
+
Rouge.highlight(code, language, FORMATTER)
|
|
84
84
|
end
|
|
85
85
|
|
|
86
86
|
def highlighted_node
|
data/lib/qiita/markdown.rb
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
require "cgi"
|
|
2
2
|
require "html/pipeline"
|
|
3
|
-
require "linguist"
|
|
4
3
|
require "mem"
|
|
5
4
|
require "nokogiri"
|
|
6
5
|
require "qiita_marker"
|
|
@@ -20,6 +19,7 @@ require "qiita/markdown/embed/docswell"
|
|
|
20
19
|
require "qiita/markdown/embed/figma"
|
|
21
20
|
require "qiita/markdown/embed/stack_blitz"
|
|
22
21
|
require "qiita/markdown/embed/blueprint_ue"
|
|
22
|
+
require "qiita/markdown/embed/claude_artifact"
|
|
23
23
|
require "qiita/markdown/transformers/filter_attributes"
|
|
24
24
|
require "qiita/markdown/transformers/filter_script"
|
|
25
25
|
require "qiita/markdown/transformers/filter_iframe"
|
data/qiita-markdown.gemspec
CHANGED
|
@@ -15,15 +15,14 @@ Gem::Specification.new do |spec|
|
|
|
15
15
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
16
16
|
spec.require_paths = ["lib"]
|
|
17
17
|
|
|
18
|
-
spec.required_ruby_version = ">= 3.0.0"
|
|
18
|
+
spec.required_ruby_version = [">= 3.3.0", "< 4.0"]
|
|
19
19
|
|
|
20
20
|
spec.add_dependency "addressable"
|
|
21
21
|
spec.add_dependency "gemoji"
|
|
22
|
-
spec.add_dependency "github-linguist", "~> 7.0"
|
|
23
22
|
spec.add_dependency "html-pipeline", "~> 2.0"
|
|
24
23
|
spec.add_dependency "mem"
|
|
25
24
|
spec.add_dependency "qiita_marker", "~> 0.23.9"
|
|
26
|
-
spec.add_dependency "rouge", "~>
|
|
25
|
+
spec.add_dependency "rouge", "~> 5.1"
|
|
27
26
|
spec.add_dependency "sanitize"
|
|
28
27
|
spec.add_dependency "uri", ">= 1.0.4"
|
|
29
28
|
spec.metadata["rubygems_mfa_required"] = "true"
|
|
@@ -1829,6 +1829,43 @@ describe Qiita::Markdown::Processor do
|
|
|
1829
1829
|
end
|
|
1830
1830
|
end
|
|
1831
1831
|
|
|
1832
|
+
context "with HTML embed code for Claude Artifact" do
|
|
1833
|
+
shared_examples "embed code claude artifact example" do
|
|
1834
|
+
let(:markdown) do
|
|
1835
|
+
<<~MARKDOWN
|
|
1836
|
+
<iframe src="#{url}" width="100%" height="600" frameborder="0" allowfullscreen></iframe>
|
|
1837
|
+
MARKDOWN
|
|
1838
|
+
end
|
|
1839
|
+
let(:url) { "#{scheme}//claude.site/public/artifacts/4f47d0d5-3be1-41da-a871-df530aae8f54/embed" }
|
|
1840
|
+
|
|
1841
|
+
if allowed
|
|
1842
|
+
it "does not sanitize embed code" do
|
|
1843
|
+
should eq <<~HTML
|
|
1844
|
+
<iframe src="#{url}" width="100%" height="600" frameborder="0" allowfullscreen></iframe>
|
|
1845
|
+
HTML
|
|
1846
|
+
end
|
|
1847
|
+
else
|
|
1848
|
+
it "forces width attribute on iframe" do
|
|
1849
|
+
should eq <<~HTML
|
|
1850
|
+
<iframe src="#{url}" width="100%" height="600" frameborder="0" allowfullscreen></iframe>
|
|
1851
|
+
HTML
|
|
1852
|
+
end
|
|
1853
|
+
end
|
|
1854
|
+
end
|
|
1855
|
+
|
|
1856
|
+
context "with scheme" do
|
|
1857
|
+
let(:scheme) { "https:" }
|
|
1858
|
+
|
|
1859
|
+
include_examples "embed code claude artifact example"
|
|
1860
|
+
end
|
|
1861
|
+
|
|
1862
|
+
context "without scheme" do
|
|
1863
|
+
let(:scheme) { "" }
|
|
1864
|
+
|
|
1865
|
+
include_examples "embed code claude artifact example"
|
|
1866
|
+
end
|
|
1867
|
+
end
|
|
1868
|
+
|
|
1832
1869
|
context "with embed code for Tweet" do
|
|
1833
1870
|
let(:markdown) do
|
|
1834
1871
|
<<-MARKDOWN.strip_heredoc
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: qiita-markdown
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.8.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ryo Nakamura
|
|
@@ -37,20 +37,6 @@ dependencies:
|
|
|
37
37
|
- - ">="
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
39
|
version: '0'
|
|
40
|
-
- !ruby/object:Gem::Dependency
|
|
41
|
-
name: github-linguist
|
|
42
|
-
requirement: !ruby/object:Gem::Requirement
|
|
43
|
-
requirements:
|
|
44
|
-
- - "~>"
|
|
45
|
-
- !ruby/object:Gem::Version
|
|
46
|
-
version: '7.0'
|
|
47
|
-
type: :runtime
|
|
48
|
-
prerelease: false
|
|
49
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
-
requirements:
|
|
51
|
-
- - "~>"
|
|
52
|
-
- !ruby/object:Gem::Version
|
|
53
|
-
version: '7.0'
|
|
54
40
|
- !ruby/object:Gem::Dependency
|
|
55
41
|
name: html-pipeline
|
|
56
42
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -99,14 +85,14 @@ dependencies:
|
|
|
99
85
|
requirements:
|
|
100
86
|
- - "~>"
|
|
101
87
|
- !ruby/object:Gem::Version
|
|
102
|
-
version: '
|
|
88
|
+
version: '5.1'
|
|
103
89
|
type: :runtime
|
|
104
90
|
prerelease: false
|
|
105
91
|
version_requirements: !ruby/object:Gem::Requirement
|
|
106
92
|
requirements:
|
|
107
93
|
- - "~>"
|
|
108
94
|
- !ruby/object:Gem::Version
|
|
109
|
-
version: '
|
|
95
|
+
version: '5.1'
|
|
110
96
|
- !ruby/object:Gem::Dependency
|
|
111
97
|
name: sanitize
|
|
112
98
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -159,6 +145,7 @@ files:
|
|
|
159
145
|
- lib/qiita/markdown/base_processor.rb
|
|
160
146
|
- lib/qiita/markdown/embed/asciinema.rb
|
|
161
147
|
- lib/qiita/markdown/embed/blueprint_ue.rb
|
|
148
|
+
- lib/qiita/markdown/embed/claude_artifact.rb
|
|
162
149
|
- lib/qiita/markdown/embed/code_pen.rb
|
|
163
150
|
- lib/qiita/markdown/embed/docswell.rb
|
|
164
151
|
- lib/qiita/markdown/embed/figma.rb
|
|
@@ -219,14 +206,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
219
206
|
requirements:
|
|
220
207
|
- - ">="
|
|
221
208
|
- !ruby/object:Gem::Version
|
|
222
|
-
version: 3.
|
|
209
|
+
version: 3.3.0
|
|
210
|
+
- - "<"
|
|
211
|
+
- !ruby/object:Gem::Version
|
|
212
|
+
version: '4.0'
|
|
223
213
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
224
214
|
requirements:
|
|
225
215
|
- - ">="
|
|
226
216
|
- !ruby/object:Gem::Version
|
|
227
217
|
version: '0'
|
|
228
218
|
requirements: []
|
|
229
|
-
rubygems_version: 3.6.
|
|
219
|
+
rubygems_version: 3.6.9
|
|
230
220
|
specification_version: 4
|
|
231
221
|
summary: Qiita-specified markdown processor.
|
|
232
222
|
test_files: []
|