jekyll-chatgpt-translate 0.1.0 → 0.2.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/.0pdd.yml +1 -1
- data/.github/workflows/actionlint.yml +2 -2
- data/.github/workflows/copyrights.yml +2 -2
- data/.github/workflows/markdown-lint.yml +3 -3
- data/.github/workflows/pdd.yml +2 -2
- data/.github/workflows/rake.yml +2 -2
- data/.github/workflows/reuse.yml +2 -2
- data/.github/workflows/typos.yml +19 -0
- data/.github/workflows/xcop.yml +2 -2
- data/.github/workflows/yamllint.yml +2 -2
- data/.gitignore +4 -4
- data/.rubocop.yml +2 -1
- data/.rultor.yml +1 -1
- data/Gemfile +6 -6
- data/LICENSE.txt +1 -1
- data/LICENSES/MIT.txt +1 -1
- data/REUSE.toml +7 -7
- data/Rakefile +1 -1
- data/features/cli.feature +1 -1
- data/features/gem_package.feature +1 -1
- data/features/step_definitions/steps.rb +1 -1
- data/features/support/env.rb +1 -1
- data/jekyll-chatgpt-translate.gemspec +11 -10
- data/lib/jekyll-chatgpt-translate/chatgpt.rb +3 -3
- data/lib/jekyll-chatgpt-translate/generator.rb +5 -3
- data/lib/jekyll-chatgpt-translate/pars.rb +2 -2
- data/lib/jekyll-chatgpt-translate/permalink.rb +2 -2
- data/lib/jekyll-chatgpt-translate/ping.rb +3 -3
- data/lib/jekyll-chatgpt-translate/plain.rb +2 -2
- data/lib/jekyll-chatgpt-translate/prompt.rb +2 -2
- data/lib/jekyll-chatgpt-translate/version.rb +2 -2
- data/lib/jekyll-chatgpt-translate.rb +1 -1
- data/test/test__helper.rb +5 -4
- data/test/test_chatgpt.rb +2 -2
- data/test/test_generator.rb +2 -2
- data/test/test_pars.rb +2 -2
- data/test/test_permalink.rb +2 -2
- data/test/test_ping.rb +2 -2
- data/test/test_plain.rb +2 -2
- data/test/test_prompt.rb +2 -2
- metadata +49 -34
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: bef852600359023f88efcea920702d0bbb44ae263e0493c77e10989df3b3e311
|
|
4
|
+
data.tar.gz: 5b8fc42cc02249b143396487d0ea0123e276362369b35a7a869c3291a3b9dea0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 961104d1f55fdceaf47dae3bf5c739d871987cd0f31ae1203e311eec12fe018c1726ff47e0eb31844406197bf51b755295ca9d2befec4ea4d7e596fa7bf5cf41
|
|
7
|
+
data.tar.gz: 543b382769527466b275c0d03d01590e745cdc7a8df51849a6edf9cf711441d38a708198a2ea4a0342b3675ecbfd3de39cdb84211156dcaebcc0cfa52171920f
|
data/.0pdd.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# SPDX-FileCopyrightText: Copyright (c) 2023-
|
|
1
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
---
|
|
4
4
|
# yamllint disable rule:line-length
|
|
@@ -15,7 +15,7 @@ jobs:
|
|
|
15
15
|
timeout-minutes: 15
|
|
16
16
|
runs-on: ubuntu-24.04
|
|
17
17
|
steps:
|
|
18
|
-
- uses: actions/checkout@
|
|
18
|
+
- uses: actions/checkout@v6
|
|
19
19
|
- name: Download actionlint
|
|
20
20
|
id: get_actionlint
|
|
21
21
|
run: bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# SPDX-FileCopyrightText: Copyright (c) 2023-
|
|
1
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
---
|
|
4
4
|
# yamllint disable rule:line-length
|
|
@@ -15,5 +15,5 @@ jobs:
|
|
|
15
15
|
timeout-minutes: 15
|
|
16
16
|
runs-on: ubuntu-24.04
|
|
17
17
|
steps:
|
|
18
|
-
- uses: actions/checkout@
|
|
18
|
+
- uses: actions/checkout@v6
|
|
19
19
|
- uses: yegor256/copyrights-action@0.0.8
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# SPDX-FileCopyrightText: Copyright (c) 2023-
|
|
1
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
---
|
|
4
4
|
# yamllint disable rule:line-length
|
|
@@ -19,5 +19,5 @@ jobs:
|
|
|
19
19
|
timeout-minutes: 15
|
|
20
20
|
runs-on: ubuntu-24.04
|
|
21
21
|
steps:
|
|
22
|
-
- uses: actions/checkout@
|
|
23
|
-
- uses:
|
|
22
|
+
- uses: actions/checkout@v6
|
|
23
|
+
- uses: DavidAnson/markdownlint-cli2-action@v20.0.0
|
data/.github/workflows/pdd.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# SPDX-FileCopyrightText: Copyright (c) 2023-
|
|
1
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
---
|
|
4
4
|
# yamllint disable rule:line-length
|
|
@@ -15,5 +15,5 @@ jobs:
|
|
|
15
15
|
timeout-minutes: 15
|
|
16
16
|
runs-on: ubuntu-24.04
|
|
17
17
|
steps:
|
|
18
|
-
- uses: actions/checkout@
|
|
18
|
+
- uses: actions/checkout@v6
|
|
19
19
|
- uses: volodya-lombrozo/pdd-action@master
|
data/.github/workflows/rake.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# SPDX-FileCopyrightText: Copyright (c) 2023-
|
|
1
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
---
|
|
4
4
|
# yamllint disable rule:line-length
|
|
@@ -18,7 +18,7 @@ jobs:
|
|
|
18
18
|
ruby: [3.3]
|
|
19
19
|
runs-on: ${{ matrix.os }}
|
|
20
20
|
steps:
|
|
21
|
-
- uses: actions/checkout@
|
|
21
|
+
- uses: actions/checkout@v6
|
|
22
22
|
- uses: ruby/setup-ruby@v1
|
|
23
23
|
with:
|
|
24
24
|
ruby-version: ${{ matrix.ruby }}
|
data/.github/workflows/reuse.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# SPDX-FileCopyrightText: Copyright (c) 2023-
|
|
1
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
---
|
|
4
4
|
# yamllint disable rule:line-length
|
|
@@ -15,5 +15,5 @@ jobs:
|
|
|
15
15
|
timeout-minutes: 15
|
|
16
16
|
runs-on: ubuntu-24.04
|
|
17
17
|
steps:
|
|
18
|
-
- uses: actions/checkout@
|
|
18
|
+
- uses: actions/checkout@v6
|
|
19
19
|
- uses: fsfe/reuse-action@v5
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
---
|
|
4
|
+
# yamllint disable rule:line-length
|
|
5
|
+
name: typos
|
|
6
|
+
'on':
|
|
7
|
+
push:
|
|
8
|
+
branches:
|
|
9
|
+
- master
|
|
10
|
+
pull_request:
|
|
11
|
+
branches:
|
|
12
|
+
- master
|
|
13
|
+
jobs:
|
|
14
|
+
typos:
|
|
15
|
+
timeout-minutes: 15
|
|
16
|
+
runs-on: ubuntu-24.04
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v6
|
|
19
|
+
- uses: crate-ci/typos@v1.32.0
|
data/.github/workflows/xcop.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# SPDX-FileCopyrightText: Copyright (c) 2023-
|
|
1
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
---
|
|
4
4
|
# yamllint disable rule:line-length
|
|
@@ -15,5 +15,5 @@ jobs:
|
|
|
15
15
|
timeout-minutes: 15
|
|
16
16
|
runs-on: ubuntu-24.04
|
|
17
17
|
steps:
|
|
18
|
-
- uses: actions/checkout@
|
|
18
|
+
- uses: actions/checkout@v6
|
|
19
19
|
- uses: g4s8/xcop-action@master
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# SPDX-FileCopyrightText: Copyright (c) 2023-
|
|
1
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
---
|
|
4
4
|
# yamllint disable rule:line-length
|
|
@@ -15,5 +15,5 @@ jobs:
|
|
|
15
15
|
timeout-minutes: 15
|
|
16
16
|
runs-on: ubuntu-24.04
|
|
17
17
|
steps:
|
|
18
|
-
- uses: actions/checkout@
|
|
18
|
+
- uses: actions/checkout@v6
|
|
19
19
|
- uses: ibiqlik/action-yamllint@v3
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# SPDX-FileCopyrightText: Copyright (c) 2023-
|
|
1
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
2
2
|
# SPDX-License-Identifier: MIT
|
|
3
3
|
---
|
|
4
4
|
AllCops:
|
|
@@ -48,3 +48,4 @@ Metrics/ClassLength:
|
|
|
48
48
|
Max: 200
|
|
49
49
|
Style/ClassVars:
|
|
50
50
|
Enabled: false
|
|
51
|
+
require: []
|
data/.rultor.yml
CHANGED
data/Gemfile
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2023-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
source 'https://rubygems.org'
|
|
@@ -8,13 +8,13 @@ gemspec
|
|
|
8
8
|
|
|
9
9
|
gem 'cucumber', '~>9.2', require: false
|
|
10
10
|
gem 'kramdown-parser-gfm', '~>1.1', require: false
|
|
11
|
-
gem 'minitest', '~>
|
|
11
|
+
gem 'minitest', '~>6.0', require: false
|
|
12
12
|
gem 'minitest-reporters', '~>1.7', require: false
|
|
13
13
|
gem 'rake', '~>13.2', require: false
|
|
14
14
|
gem 'rubocop', '~>1.64', require: false
|
|
15
|
-
gem 'rubocop-minitest', '
|
|
16
|
-
gem 'rubocop-performance', '>
|
|
17
|
-
gem 'rubocop-rake', '
|
|
15
|
+
gem 'rubocop-minitest', '~>0.38', require: false
|
|
16
|
+
gem 'rubocop-performance', '>1.26', require: false
|
|
17
|
+
gem 'rubocop-rake', '~>0.7', require: false
|
|
18
18
|
gem 'simplecov', '~>0.22', require: false
|
|
19
|
-
gem 'simplecov-cobertura', '~>
|
|
19
|
+
gem 'simplecov-cobertura', '~>3.1', require: false
|
|
20
20
|
gem 'webmock', '~>3.24', require: false
|
data/LICENSE.txt
CHANGED
data/LICENSES/MIT.txt
CHANGED
data/REUSE.toml
CHANGED
|
@@ -4,10 +4,17 @@
|
|
|
4
4
|
version = 1
|
|
5
5
|
[[annotations]]
|
|
6
6
|
path = [
|
|
7
|
+
".DS_Store",
|
|
8
|
+
".gitattributes",
|
|
9
|
+
".gitignore",
|
|
10
|
+
".pdd",
|
|
7
11
|
"**.json",
|
|
8
12
|
"**.md",
|
|
9
13
|
"**.png",
|
|
10
14
|
"**.txt",
|
|
15
|
+
"**/.DS_Store",
|
|
16
|
+
"**/.gitignore",
|
|
17
|
+
"**/.pdd",
|
|
11
18
|
"**/*.csv",
|
|
12
19
|
"**/*.jpg",
|
|
13
20
|
"**/*.json",
|
|
@@ -17,15 +24,8 @@ path = [
|
|
|
17
24
|
"**/*.svg",
|
|
18
25
|
"**/*.txt",
|
|
19
26
|
"**/*.vm",
|
|
20
|
-
"**/.DS_Store",
|
|
21
|
-
"**/.gitignore",
|
|
22
|
-
"**/.pdd",
|
|
23
27
|
"**/CNAME",
|
|
24
28
|
"**/Gemfile.lock",
|
|
25
|
-
".DS_Store",
|
|
26
|
-
".gitattributes",
|
|
27
|
-
".gitignore",
|
|
28
|
-
".pdd",
|
|
29
29
|
"Gemfile.lock",
|
|
30
30
|
"README.md",
|
|
31
31
|
"renovate.json",
|
data/Rakefile
CHANGED
data/features/cli.feature
CHANGED
data/features/support/env.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2023-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'English'
|
|
@@ -9,7 +9,7 @@ Gem::Specification.new do |s|
|
|
|
9
9
|
s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
|
|
10
10
|
s.required_ruby_version = '>= 3.0'
|
|
11
11
|
s.name = 'jekyll-chatgpt-translate'
|
|
12
|
-
s.version = '0.
|
|
12
|
+
s.version = '0.2.0'
|
|
13
13
|
s.license = 'MIT'
|
|
14
14
|
s.summary = 'Translate Jekyll Pages Through ChatGPT'
|
|
15
15
|
s.description = [
|
|
@@ -23,13 +23,14 @@ Gem::Specification.new do |s|
|
|
|
23
23
|
s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
24
24
|
s.rdoc_options = ['--charset=UTF-8']
|
|
25
25
|
s.extra_rdoc_files = %w[README.md LICENSE.txt]
|
|
26
|
-
s.add_dependency '
|
|
27
|
-
s.add_dependency '
|
|
28
|
-
s.add_dependency '
|
|
29
|
-
s.add_dependency '
|
|
30
|
-
s.add_dependency '
|
|
31
|
-
s.add_dependency '
|
|
32
|
-
s.add_dependency '
|
|
33
|
-
s.add_dependency '
|
|
26
|
+
s.add_dependency 'base64', '~>0.3'
|
|
27
|
+
s.add_dependency 'humanize', '~>3.1'
|
|
28
|
+
s.add_dependency 'iri', '~>0.11'
|
|
29
|
+
s.add_dependency 'iso-639', '~>0.3'
|
|
30
|
+
s.add_dependency 'jekyll', '~>3.10'
|
|
31
|
+
s.add_dependency 'json', '~>2.18'
|
|
32
|
+
s.add_dependency 'redcarpet', '~>3.6'
|
|
33
|
+
s.add_dependency 'ruby-openai', '~>8.3'
|
|
34
|
+
s.add_dependency 'tiktoken_ruby', '~>0.0'
|
|
34
35
|
s.metadata['rubygems_mfa_required'] = 'true'
|
|
35
36
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2023-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'jekyll'
|
|
@@ -16,7 +16,7 @@ module GptTranslate; end
|
|
|
16
16
|
|
|
17
17
|
# Abstraction of ChatGPT.
|
|
18
18
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
19
|
-
# Copyright:: Copyright (c) 2023-
|
|
19
|
+
# Copyright:: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
20
20
|
# License:: MIT
|
|
21
21
|
class GptTranslate::ChatGPT
|
|
22
22
|
# Is TRUE if we already shown to the user the available models.
|
|
@@ -72,7 +72,7 @@ class GptTranslate::ChatGPT
|
|
|
72
72
|
ready[i] = "* #{translate_par(par[2..])}"
|
|
73
73
|
elsif /^[0-9]+\. /.match?(par)
|
|
74
74
|
ready[i] = "1. #{translate_par(par.split('.', 2)[1])}"
|
|
75
|
-
elsif /^[^\p{Alnum}
|
|
75
|
+
elsif /^[^\p{Alnum}*'"\[]/.match?(par)
|
|
76
76
|
Jekyll.logger.debug("Not translating this, b/c it's not a plain text: #{par.inspect}")
|
|
77
77
|
ready[i] = par
|
|
78
78
|
else
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2023-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'jekyll'
|
|
@@ -17,7 +17,7 @@ module GptTranslate; end
|
|
|
17
17
|
|
|
18
18
|
# Pages generator.
|
|
19
19
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
20
|
-
# Copyright:: Copyright (c) 2023-
|
|
20
|
+
# Copyright:: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
21
21
|
# License:: MIT
|
|
22
22
|
class GptTranslate::Generator < Jekyll::Generator
|
|
23
23
|
safe true
|
|
@@ -45,7 +45,7 @@ class GptTranslate::Generator < Jekyll::Generator
|
|
|
45
45
|
translated = 0
|
|
46
46
|
copied = 0
|
|
47
47
|
model = config['model'] || 'gpt-3.5-turbo'
|
|
48
|
-
marker = "Translated by ChatGPT #{model}#{
|
|
48
|
+
marker = "Translated by ChatGPT #{model}#{"/#{version}" unless version.empty?}"
|
|
49
49
|
site.posts.docs.shuffle.each_with_index do |doc, pos|
|
|
50
50
|
plain = GptTranslate::Plain.new(doc.content).to_s
|
|
51
51
|
layout = doc['layout']
|
|
@@ -148,12 +148,14 @@ in #{(Time.now - pstart).round(2)}s: #{path} (#{File.size(path)} bytes)")
|
|
|
148
148
|
@link = link
|
|
149
149
|
end
|
|
150
150
|
|
|
151
|
+
# rubocop:disable Naming/PredicateMethod
|
|
151
152
|
def write(_dest)
|
|
152
153
|
FileUtils.mkdir_p(File.dirname(path))
|
|
153
154
|
File.write(path, @html)
|
|
154
155
|
Jekyll.logger.info("Saved #{@html.split.count} words to #{path.inspect}")
|
|
155
156
|
true
|
|
156
157
|
end
|
|
158
|
+
# rubocop:enable Naming/PredicateMethod
|
|
157
159
|
end
|
|
158
160
|
|
|
159
161
|
private
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2023-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
# The module we are in.
|
|
@@ -8,7 +8,7 @@ module GptTranslate; end
|
|
|
8
8
|
|
|
9
9
|
# Markdown broken down ito pars.
|
|
10
10
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
11
|
-
# Copyright:: Copyright (c) 2023-
|
|
11
|
+
# Copyright:: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
12
12
|
# License:: MIT
|
|
13
13
|
class GptTranslate::Pars
|
|
14
14
|
# Ctor.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2023-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'cgi'
|
|
@@ -10,7 +10,7 @@ module GptTranslate; end
|
|
|
10
10
|
|
|
11
11
|
# Permalink.
|
|
12
12
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
13
|
-
# Copyright:: Copyright (c) 2023-
|
|
13
|
+
# Copyright:: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
14
14
|
# License:: MIT
|
|
15
15
|
class GptTranslate::Permalink
|
|
16
16
|
def initialize(doc, template)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2023-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'iri'
|
|
@@ -10,14 +10,14 @@ require_relative 'version'
|
|
|
10
10
|
|
|
11
11
|
# see https://stackoverflow.com/a/6048451/187141
|
|
12
12
|
require 'openssl'
|
|
13
|
-
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
|
|
13
|
+
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE unless defined?(OpenSSL::SSL::VERIFY_PEER)
|
|
14
14
|
|
|
15
15
|
# The module we are in.
|
|
16
16
|
module GptTranslate; end
|
|
17
17
|
|
|
18
18
|
# Ping one page of a site.
|
|
19
19
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
20
|
-
# Copyright:: Copyright (c) 2023-
|
|
20
|
+
# Copyright:: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
21
21
|
# License:: MIT
|
|
22
22
|
class GptTranslate::Ping
|
|
23
23
|
# Ctor.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2023-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'redcarpet'
|
|
@@ -10,7 +10,7 @@ module GptTranslate; end
|
|
|
10
10
|
|
|
11
11
|
# Markdown to plain text.
|
|
12
12
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
13
|
-
# Copyright:: Copyright (c) 2023-
|
|
13
|
+
# Copyright:: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
14
14
|
# License:: MIT
|
|
15
15
|
class GptTranslate::Plain
|
|
16
16
|
# Ctor.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2023-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'iso-639'
|
|
@@ -11,7 +11,7 @@ module GptTranslate; end
|
|
|
11
11
|
|
|
12
12
|
# Prompt for ChatGPT.
|
|
13
13
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
14
|
-
# Copyright:: Copyright (c) 2023-
|
|
14
|
+
# Copyright:: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
15
15
|
# License:: MIT
|
|
16
16
|
class GptTranslate::Prompt
|
|
17
17
|
# Ctor.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2023-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
module GptTranslate
|
|
7
|
-
VERSION = '0.
|
|
7
|
+
VERSION = '0.2.0'
|
|
8
8
|
end
|
data/test/test__helper.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2023-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
$stdout.sync = true
|
|
@@ -28,6 +28,7 @@ end
|
|
|
28
28
|
|
|
29
29
|
require 'minitest/reporters'
|
|
30
30
|
Minitest::Reporters.use! [Minitest::Reporters::SpecReporter.new]
|
|
31
|
+
Minitest.load :minitest_reporter
|
|
31
32
|
|
|
32
33
|
require 'minitest/autorun'
|
|
33
34
|
|
|
@@ -39,7 +40,7 @@ module GptTranslate; end
|
|
|
39
40
|
|
|
40
41
|
# Fake.
|
|
41
42
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
42
|
-
# Copyright:: Copyright (c) 2023-
|
|
43
|
+
# Copyright:: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
43
44
|
# License:: MIT
|
|
44
45
|
class GptTranslate::FakeSite
|
|
45
46
|
attr_reader :config, :pages, :static_files
|
|
@@ -87,7 +88,7 @@ end
|
|
|
87
88
|
|
|
88
89
|
# Fake.
|
|
89
90
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
90
|
-
# Copyright:: Copyright (c) 2023-
|
|
91
|
+
# Copyright:: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
91
92
|
# License:: MIT
|
|
92
93
|
class GptTranslate::FakeDocument
|
|
93
94
|
attr_reader :data
|
|
@@ -124,7 +125,7 @@ end
|
|
|
124
125
|
|
|
125
126
|
# Fake.
|
|
126
127
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
127
|
-
# Copyright:: Copyright (c) 2023-
|
|
128
|
+
# Copyright:: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
128
129
|
# License:: MIT
|
|
129
130
|
class GptTranslate::FakePosts
|
|
130
131
|
attr_reader :config
|
data/test/test_chatgpt.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2023-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'webmock/minitest'
|
|
@@ -9,7 +9,7 @@ require_relative '../lib/jekyll-chatgpt-translate/chatgpt'
|
|
|
9
9
|
|
|
10
10
|
# ChatGPT test.
|
|
11
11
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
12
|
-
# Copyright:: Copyright (c) 2023-
|
|
12
|
+
# Copyright:: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
13
13
|
# License:: MIT
|
|
14
14
|
class GptTranslate::ChatGPTTest < Minitest::Test
|
|
15
15
|
def test_short_text
|
data/test/test_generator.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2023-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'tmpdir'
|
|
@@ -10,7 +10,7 @@ require_relative '../lib/jekyll-chatgpt-translate/generator'
|
|
|
10
10
|
|
|
11
11
|
# Generator test.
|
|
12
12
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
13
|
-
# Copyright:: Copyright (c) 2023-
|
|
13
|
+
# Copyright:: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
14
14
|
# License:: MIT
|
|
15
15
|
class GptTranslate::GeneratorTest < Minitest::Test
|
|
16
16
|
def test_simple_scenario
|
data/test/test_pars.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2023-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require_relative 'test__helper'
|
|
@@ -8,7 +8,7 @@ require_relative '../lib/jekyll-chatgpt-translate/pars'
|
|
|
8
8
|
|
|
9
9
|
# Test for Pars.
|
|
10
10
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
11
|
-
# Copyright:: Copyright (c) 2023-
|
|
11
|
+
# Copyright:: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
12
12
|
# License:: MIT
|
|
13
13
|
class GptTranslate::ParsTest < Minitest::Test
|
|
14
14
|
def test_simple_cases
|
data/test/test_permalink.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2023-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require_relative 'test__helper'
|
|
@@ -8,7 +8,7 @@ require_relative '../lib/jekyll-chatgpt-translate/permalink'
|
|
|
8
8
|
|
|
9
9
|
# Permalink test.
|
|
10
10
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
11
|
-
# Copyright:: Copyright (c) 2023-
|
|
11
|
+
# Copyright:: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
12
12
|
# License:: MIT
|
|
13
13
|
class GptTranslate::PermalinkTest < Minitest::Test
|
|
14
14
|
def test_simple_link
|
data/test/test_ping.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2023-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'webmock/minitest'
|
|
@@ -11,7 +11,7 @@ require_relative '../lib/jekyll-chatgpt-translate/ping'
|
|
|
11
11
|
|
|
12
12
|
# Ping test.
|
|
13
13
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
14
|
-
# Copyright:: Copyright (c) 2023-
|
|
14
|
+
# Copyright:: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
15
15
|
# License:: MIT
|
|
16
16
|
class GptTranslate::PingTest < Minitest::Test
|
|
17
17
|
def test_when_exists
|
data/test/test_plain.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2023-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require_relative 'test__helper'
|
|
@@ -8,7 +8,7 @@ require_relative '../lib/jekyll-chatgpt-translate/plain'
|
|
|
8
8
|
|
|
9
9
|
# Plain test.
|
|
10
10
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
11
|
-
# Copyright:: Copyright (c) 2023-
|
|
11
|
+
# Copyright:: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
12
12
|
# License:: MIT
|
|
13
13
|
class GptTranslate::PlainTest < Minitest::Test
|
|
14
14
|
def test_simple_map
|
data/test/test_prompt.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2023-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require_relative 'test__helper'
|
|
@@ -8,7 +8,7 @@ require_relative '../lib/jekyll-chatgpt-translate/prompt'
|
|
|
8
8
|
|
|
9
9
|
# Prompt test.
|
|
10
10
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
11
|
-
# Copyright:: Copyright (c) 2023-
|
|
11
|
+
# Copyright:: Copyright (c) 2023-2026 Yegor Bugayenko
|
|
12
12
|
# License:: MIT
|
|
13
13
|
class GptTranslate::PromptTest < Minitest::Test
|
|
14
14
|
def head(source, target)
|
metadata
CHANGED
|
@@ -1,127 +1,141 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: jekyll-chatgpt-translate
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Yegor Bugayenko
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2026-01-25 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: base64
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '0.3'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '0.3'
|
|
13
27
|
- !ruby/object:Gem::Dependency
|
|
14
28
|
name: humanize
|
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
|
16
30
|
requirements:
|
|
17
|
-
- - "
|
|
31
|
+
- - "~>"
|
|
18
32
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
33
|
+
version: '3.1'
|
|
20
34
|
type: :runtime
|
|
21
35
|
prerelease: false
|
|
22
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
37
|
requirements:
|
|
24
|
-
- - "
|
|
38
|
+
- - "~>"
|
|
25
39
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '
|
|
40
|
+
version: '3.1'
|
|
27
41
|
- !ruby/object:Gem::Dependency
|
|
28
42
|
name: iri
|
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
|
30
44
|
requirements:
|
|
31
|
-
- - "
|
|
45
|
+
- - "~>"
|
|
32
46
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '0'
|
|
47
|
+
version: '0.11'
|
|
34
48
|
type: :runtime
|
|
35
49
|
prerelease: false
|
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
51
|
requirements:
|
|
38
|
-
- - "
|
|
52
|
+
- - "~>"
|
|
39
53
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '0'
|
|
54
|
+
version: '0.11'
|
|
41
55
|
- !ruby/object:Gem::Dependency
|
|
42
56
|
name: iso-639
|
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
|
44
58
|
requirements:
|
|
45
|
-
- - "
|
|
59
|
+
- - "~>"
|
|
46
60
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '0'
|
|
61
|
+
version: '0.3'
|
|
48
62
|
type: :runtime
|
|
49
63
|
prerelease: false
|
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
65
|
requirements:
|
|
52
|
-
- - "
|
|
66
|
+
- - "~>"
|
|
53
67
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '0'
|
|
68
|
+
version: '0.3'
|
|
55
69
|
- !ruby/object:Gem::Dependency
|
|
56
70
|
name: jekyll
|
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
|
58
72
|
requirements:
|
|
59
|
-
- - "
|
|
73
|
+
- - "~>"
|
|
60
74
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: '3'
|
|
75
|
+
version: '3.10'
|
|
62
76
|
type: :runtime
|
|
63
77
|
prerelease: false
|
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
79
|
requirements:
|
|
66
|
-
- - "
|
|
80
|
+
- - "~>"
|
|
67
81
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: '3'
|
|
82
|
+
version: '3.10'
|
|
69
83
|
- !ruby/object:Gem::Dependency
|
|
70
84
|
name: json
|
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
|
72
86
|
requirements:
|
|
73
|
-
- - "
|
|
87
|
+
- - "~>"
|
|
74
88
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: '2'
|
|
89
|
+
version: '2.18'
|
|
76
90
|
type: :runtime
|
|
77
91
|
prerelease: false
|
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
93
|
requirements:
|
|
80
|
-
- - "
|
|
94
|
+
- - "~>"
|
|
81
95
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: '2'
|
|
96
|
+
version: '2.18'
|
|
83
97
|
- !ruby/object:Gem::Dependency
|
|
84
98
|
name: redcarpet
|
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
|
86
100
|
requirements:
|
|
87
|
-
- - "
|
|
101
|
+
- - "~>"
|
|
88
102
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: '3'
|
|
103
|
+
version: '3.6'
|
|
90
104
|
type: :runtime
|
|
91
105
|
prerelease: false
|
|
92
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
107
|
requirements:
|
|
94
|
-
- - "
|
|
108
|
+
- - "~>"
|
|
95
109
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: '3'
|
|
110
|
+
version: '3.6'
|
|
97
111
|
- !ruby/object:Gem::Dependency
|
|
98
112
|
name: ruby-openai
|
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
|
100
114
|
requirements:
|
|
101
|
-
- - "
|
|
115
|
+
- - "~>"
|
|
102
116
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: '
|
|
117
|
+
version: '8.3'
|
|
104
118
|
type: :runtime
|
|
105
119
|
prerelease: false
|
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
121
|
requirements:
|
|
108
|
-
- - "
|
|
122
|
+
- - "~>"
|
|
109
123
|
- !ruby/object:Gem::Version
|
|
110
|
-
version: '
|
|
124
|
+
version: '8.3'
|
|
111
125
|
- !ruby/object:Gem::Dependency
|
|
112
126
|
name: tiktoken_ruby
|
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
|
114
128
|
requirements:
|
|
115
|
-
- - "
|
|
129
|
+
- - "~>"
|
|
116
130
|
- !ruby/object:Gem::Version
|
|
117
|
-
version: 0.0
|
|
131
|
+
version: '0.0'
|
|
118
132
|
type: :runtime
|
|
119
133
|
prerelease: false
|
|
120
134
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
135
|
requirements:
|
|
122
|
-
- - "
|
|
136
|
+
- - "~>"
|
|
123
137
|
- !ruby/object:Gem::Version
|
|
124
|
-
version: 0.0
|
|
138
|
+
version: '0.0'
|
|
125
139
|
description: Add this plugin to your Jekyll site and all posts will be automatically
|
|
126
140
|
translated to the languages of your choice through ChatGPT
|
|
127
141
|
email: yegor256@gmail.com
|
|
@@ -138,6 +152,7 @@ files:
|
|
|
138
152
|
- ".github/workflows/pdd.yml"
|
|
139
153
|
- ".github/workflows/rake.yml"
|
|
140
154
|
- ".github/workflows/reuse.yml"
|
|
155
|
+
- ".github/workflows/typos.yml"
|
|
141
156
|
- ".github/workflows/xcop.yml"
|
|
142
157
|
- ".github/workflows/yamllint.yml"
|
|
143
158
|
- ".gitignore"
|