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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 82135467b0d5d3bf73ec7e94d45f1cb48507eab15bcf0624f14d6cd33ee7b3df
4
- data.tar.gz: 31ebd2cb70c3f3c9e632c49ea3baeb8dff5d869e9ecb3aac8051158054bccef7
3
+ metadata.gz: 4fedd17f0ad92ab616ec9fa96ee52c1accfb1f6d9cd4b018c7a0a5f834f5d538
4
+ data.tar.gz: c0f5b06236b754b2c028ec4a52d9aeb8687df8b780b362887fea9fe231b55210
5
5
  SHA512:
6
- metadata.gz: ce417c195faa1b52f8cb70f81a654efc5bacda6338aedff1e3a9601cb4b210280a25aa7a763a3fb59f229ac767659b5fcc31b8673e2199a35fbad583cfab69eb
7
- data.tar.gz: bc58fbba5f0e8a56ebeed5b97b4f1c97f5fe6c91526aeccdd104b43cc02e7f0d850a4a26ce2b7b558382f4910da5a1da2e139d13f2c9a09ad32a38fdc940764e
6
+ metadata.gz: 4f23320a96822a5c35941cce7b6e712ebbeb411ee0a8c38588086373883b4eda31ebfcb49395f8b38684c62ffdad4f94a635bc35c5442a15b9c9ae89cbc1dc39
7
+ data.tar.gz: 5c8156c6849e23d19f4aeb2891edcd379be73b4f0a67e6ce26b231f190fe32486afc91584e24ae39c1561122239d1b192b2bc52dd75910efaf05e1c7b260bb2b
@@ -12,6 +12,9 @@ updates:
12
12
  rebase-strategy: "disabled"
13
13
  cooldown:
14
14
  default-days: 7
15
+ ignore:
16
+ - dependency-name: "html-pipeline"
17
+ versions: [">=3.0"]
15
18
 
16
19
  - package-ecosystem: "github-actions"
17
20
  directories:
@@ -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@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
18
- - uses: ruby/setup-ruby@efbf473cab83af4468e8606cc33eca9281bb213f # v1.256.0
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.4 # Latest stable Ruby for release builds
20
+ ruby-version: "3.4"
21
21
  bundler-cache: true
22
- - uses: rubygems/release-gem@a25424ba2ba8b387abc8ef40807c2c85b96cbe32 # v1.1.1
22
+ - uses: rubygems/release-gem@7f9650160c1a4e7989fdc9855807bdbd421d8b6b # v1.4.1
@@ -16,17 +16,19 @@ jobs:
16
16
  fail-fast: false
17
17
  matrix:
18
18
  os: ['ubuntu-latest', 'macos-latest']
19
- ruby: ['3.2', '3.3', '3.4']
19
+ ruby: ['3.3', '3.4']
20
20
  experimental: [false]
21
- include:
22
- - os: 'ubuntu-latest'
23
- ruby: 'head'
24
- experimental: true
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@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
29
- - uses: ruby/setup-ruby@efbf473cab83af4468e8606cc33eca9281bb213f # v1.256.0
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@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
40
- - uses: ruby/setup-ruby@13e7a03dc3ac6c3798f4570bfead2aed4d96abfb # v1.244.0
41
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
42
+ - uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0
41
43
  with:
42
- ruby-version: '3.2'
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@a19242102d17e497f437d7466aa01b528537e899 # v2.2.0
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", "~> 5.2.7"
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.76.0"
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"
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Qiita
4
+ module Markdown
5
+ module Embed
6
+ module ClaudeArtifact
7
+ SCRIPT_HOST = "claude.site"
8
+ end
9
+ end
10
+ end
11
+ end
@@ -70,8 +70,8 @@ module Qiita
70
70
  nil
71
71
  when !has_only_filename?
72
72
  sections[0]
73
- when linguist_language
74
- linguist_language.default_alias_name
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 linguist_language
89
- @linguist_language ||= Linguist::Language.find_by_extension(filename).first
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
- DEFAULT_OPTION = "html_legacy"
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, DEFAULT_OPTION)
83
+ Rouge.highlight(code, language, FORMATTER)
84
84
  end
85
85
 
86
86
  def highlighted_node
@@ -13,6 +13,7 @@ module Qiita
13
13
  Embed::GoogleDrive::SCRIPT_HOST,
14
14
  Embed::StackBlitz::SCRIPT_HOST,
15
15
  Embed::BlueprintUe::SCRIPT_HOST,
16
+ Embed::ClaudeArtifact::SCRIPT_HOST,
16
17
  ].flatten.freeze
17
18
 
18
19
  def self.call(**args)
@@ -1,5 +1,5 @@
1
1
  module Qiita
2
2
  module Markdown
3
- VERSION = "1.6.1"
3
+ VERSION = "1.8.0"
4
4
  end
5
5
  end
@@ -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"
@@ -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", "~> 4.2"
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.6.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: '4.2'
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: '4.2'
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.0.0
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.7
219
+ rubygems_version: 3.6.9
230
220
  specification_version: 4
231
221
  summary: Qiita-specified markdown processor.
232
222
  test_files: []