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.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/.0pdd.yml +1 -1
  3. data/.github/workflows/actionlint.yml +2 -2
  4. data/.github/workflows/copyrights.yml +2 -2
  5. data/.github/workflows/markdown-lint.yml +3 -3
  6. data/.github/workflows/pdd.yml +2 -2
  7. data/.github/workflows/rake.yml +2 -2
  8. data/.github/workflows/reuse.yml +2 -2
  9. data/.github/workflows/typos.yml +19 -0
  10. data/.github/workflows/xcop.yml +2 -2
  11. data/.github/workflows/yamllint.yml +2 -2
  12. data/.gitignore +4 -4
  13. data/.rubocop.yml +2 -1
  14. data/.rultor.yml +1 -1
  15. data/Gemfile +6 -6
  16. data/LICENSE.txt +1 -1
  17. data/LICENSES/MIT.txt +1 -1
  18. data/REUSE.toml +7 -7
  19. data/Rakefile +1 -1
  20. data/features/cli.feature +1 -1
  21. data/features/gem_package.feature +1 -1
  22. data/features/step_definitions/steps.rb +1 -1
  23. data/features/support/env.rb +1 -1
  24. data/jekyll-chatgpt-translate.gemspec +11 -10
  25. data/lib/jekyll-chatgpt-translate/chatgpt.rb +3 -3
  26. data/lib/jekyll-chatgpt-translate/generator.rb +5 -3
  27. data/lib/jekyll-chatgpt-translate/pars.rb +2 -2
  28. data/lib/jekyll-chatgpt-translate/permalink.rb +2 -2
  29. data/lib/jekyll-chatgpt-translate/ping.rb +3 -3
  30. data/lib/jekyll-chatgpt-translate/plain.rb +2 -2
  31. data/lib/jekyll-chatgpt-translate/prompt.rb +2 -2
  32. data/lib/jekyll-chatgpt-translate/version.rb +2 -2
  33. data/lib/jekyll-chatgpt-translate.rb +1 -1
  34. data/test/test__helper.rb +5 -4
  35. data/test/test_chatgpt.rb +2 -2
  36. data/test/test_generator.rb +2 -2
  37. data/test/test_pars.rb +2 -2
  38. data/test/test_permalink.rb +2 -2
  39. data/test/test_ping.rb +2 -2
  40. data/test/test_plain.rb +2 -2
  41. data/test/test_prompt.rb +2 -2
  42. metadata +49 -34
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1af86cfed83e4dc57c410b6cab0826e2025b9ad3dee77ef6aa6469322ee9c09a
4
- data.tar.gz: 2d8c75e9d8c4a4951dd2804e729cee5f64758772849953f05d1a0e83ff487e51
3
+ metadata.gz: bef852600359023f88efcea920702d0bbb44ae263e0493c77e10989df3b3e311
4
+ data.tar.gz: 5b8fc42cc02249b143396487d0ea0123e276362369b35a7a869c3291a3b9dea0
5
5
  SHA512:
6
- metadata.gz: c0bb602c3b3c6d3132f0b6261996f295dad4acec631ccd89c4a19f69115a1639ae9944ce19bd2f257265cdd301786da74bb57c25f5fdcb62c13383108c750ebd
7
- data.tar.gz: 28ccf65532f29f122c162033623b6bd56be44e9f44e3f088220bcb0f65603de5af1a7701955a309cf12622d23de492ff3381676d172212e26329dae64bf87c9c
6
+ metadata.gz: 961104d1f55fdceaf47dae3bf5c739d871987cd0f31ae1203e311eec12fe018c1726ff47e0eb31844406197bf51b755295ca9d2befec4ea4d7e596fa7bf5cf41
7
+ data.tar.gz: 543b382769527466b275c0d03d01590e745cdc7a8df51849a6edf9cf711441d38a708198a2ea4a0342b3675ecbfd3de39cdb84211156dcaebcc0cfa52171920f
data/.0pdd.yml CHANGED
@@ -1,4 +1,4 @@
1
- # SPDX-FileCopyrightText: Copyright (c) 2023-2025 Yegor Bugayenko
1
+ # SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
2
2
  # SPDX-License-Identifier: MIT
3
3
  ---
4
4
  errors:
@@ -1,4 +1,4 @@
1
- # SPDX-FileCopyrightText: Copyright (c) 2023-2025 Yegor Bugayenko
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@v4
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-2025 Yegor Bugayenko
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@v4
18
+ - uses: actions/checkout@v6
19
19
  - uses: yegor256/copyrights-action@0.0.8
@@ -1,4 +1,4 @@
1
- # SPDX-FileCopyrightText: Copyright (c) 2023-2025 Yegor Bugayenko
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@v4
23
- - uses: articulate/actions-markdownlint@v1
22
+ - uses: actions/checkout@v6
23
+ - uses: DavidAnson/markdownlint-cli2-action@v20.0.0
@@ -1,4 +1,4 @@
1
- # SPDX-FileCopyrightText: Copyright (c) 2023-2025 Yegor Bugayenko
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@v4
18
+ - uses: actions/checkout@v6
19
19
  - uses: volodya-lombrozo/pdd-action@master
@@ -1,4 +1,4 @@
1
- # SPDX-FileCopyrightText: Copyright (c) 2023-2025 Yegor Bugayenko
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@v4
21
+ - uses: actions/checkout@v6
22
22
  - uses: ruby/setup-ruby@v1
23
23
  with:
24
24
  ruby-version: ${{ matrix.ruby }}
@@ -1,4 +1,4 @@
1
- # SPDX-FileCopyrightText: Copyright (c) 2023-2025 Yegor Bugayenko
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@v4
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
@@ -1,4 +1,4 @@
1
- # SPDX-FileCopyrightText: Copyright (c) 2023-2025 Yegor Bugayenko
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@v4
18
+ - uses: actions/checkout@v6
19
19
  - uses: g4s8/xcop-action@master
@@ -1,4 +1,4 @@
1
- # SPDX-FileCopyrightText: Copyright (c) 2023-2025 Yegor Bugayenko
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@v4
18
+ - uses: actions/checkout@v6
19
19
  - uses: ibiqlik/action-yamllint@v3
data/.gitignore CHANGED
@@ -1,12 +1,12 @@
1
- *.gem
2
- .DS_Store
1
+ _chatgpt-translate/
3
2
  .bundle/
3
+ .DS_Store
4
4
  .idea/
5
5
  .yardoc/
6
- Gemfile.lock
7
- _chatgpt-translate/
6
+ *.gem
8
7
  coverage/
9
8
  doc/
9
+ Gemfile.lock
10
10
  node_modules/
11
11
  rdoc/
12
12
  vendor/
data/.rubocop.yml CHANGED
@@ -1,4 +1,4 @@
1
- # SPDX-FileCopyrightText: Copyright (c) 2023-2025 Yegor Bugayenko
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
@@ -1,4 +1,4 @@
1
- # SPDX-FileCopyrightText: Copyright (c) 2023-2025 Yegor Bugayenko
1
+ # SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
2
2
  # SPDX-License-Identifier: MIT
3
3
  ---
4
4
  # yamllint disable rule:line-length
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # SPDX-FileCopyrightText: Copyright (c) 2023-2025 Yegor Bugayenko
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', '~>5.25', require: false
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', '>0', require: false
16
- gem 'rubocop-performance', '>0', require: false
17
- gem 'rubocop-rake', '>0', require: false
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', '~>2.1', require: false
19
+ gem 'simplecov-cobertura', '~>3.1', require: false
20
20
  gem 'webmock', '~>3.24', require: false
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  (The MIT License)
2
2
 
3
- Copyright (c) 2023-2025 Yegor Bugayenko
3
+ Copyright (c) 2023-2026 Yegor Bugayenko
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the 'Software'), to deal
data/LICENSES/MIT.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  (The MIT License)
2
2
 
3
- Copyright (c) 2023-2025 Yegor Bugayenko
3
+ Copyright (c) 2023-2026 Yegor Bugayenko
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the 'Software'), to deal
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
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # SPDX-FileCopyrightText: Copyright (c) 2023-2025 Yegor Bugayenko
3
+ # SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
4
4
  # SPDX-License-Identifier: MIT
5
5
 
6
6
  require 'rubygems'
data/features/cli.feature CHANGED
@@ -1,4 +1,4 @@
1
- # SPDX-FileCopyrightText: Copyright (c) 2023-2025 Yegor Bugayenko
1
+ # SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
2
2
  # SPDX-License-Identifier: MIT
3
3
  Feature: Simple site building
4
4
  I want to be able to build a site
@@ -1,4 +1,4 @@
1
- # SPDX-FileCopyrightText: Copyright (c) 2023-2025 Yegor Bugayenko
1
+ # SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
2
2
  # SPDX-License-Identifier: MIT
3
3
  Feature: Gem Package
4
4
  As a source code writer I want to be able to
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # SPDX-FileCopyrightText: Copyright (c) 2023-2025 Yegor Bugayenko
3
+ # SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
4
4
  # SPDX-License-Identifier: MIT
5
5
 
6
6
  require 'tmpdir'
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # SPDX-FileCopyrightText: Copyright (c) 2023-2025 Yegor Bugayenko
3
+ # SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
4
4
  # SPDX-License-Identifier: MIT
5
5
 
6
6
  require 'simplecov'
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # SPDX-FileCopyrightText: Copyright (c) 2023-2025 Yegor Bugayenko
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.1.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 'humanize', '>= 2'
27
- s.add_dependency 'iri', '>= 0'
28
- s.add_dependency 'iso-639', '>= 0'
29
- s.add_dependency 'jekyll', '>= 3'
30
- s.add_dependency 'json', '>= 2'
31
- s.add_dependency 'redcarpet', '>= 3'
32
- s.add_dependency 'ruby-openai', '>= 5'
33
- s.add_dependency 'tiktoken_ruby', '>= 0.0.6'
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-2025 Yegor Bugayenko
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-2025 Yegor Bugayenko
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}\*'"\[]/.match?(par)
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-2025 Yegor Bugayenko
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-2025 Yegor Bugayenko
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}#{version.empty? ? '' : "/#{version}"}"
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-2025 Yegor Bugayenko
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-2025 Yegor Bugayenko
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-2025 Yegor Bugayenko
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-2025 Yegor Bugayenko
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-2025 Yegor Bugayenko
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-2025 Yegor Bugayenko
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-2025 Yegor Bugayenko
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-2025 Yegor Bugayenko
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-2025 Yegor Bugayenko
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-2025 Yegor Bugayenko
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-2025 Yegor Bugayenko
3
+ # SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
4
4
  # SPDX-License-Identifier: MIT
5
5
 
6
6
  module GptTranslate
7
- VERSION = '0.1.0'
7
+ VERSION = '0.2.0'
8
8
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # SPDX-FileCopyrightText: Copyright (c) 2023-2025 Yegor Bugayenko
3
+ # SPDX-FileCopyrightText: Copyright (c) 2023-2026 Yegor Bugayenko
4
4
  # SPDX-License-Identifier: MIT
5
5
 
6
6
  require 'jekyll-chatgpt-translate/generator'
data/test/test__helper.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # SPDX-FileCopyrightText: Copyright (c) 2023-2025 Yegor Bugayenko
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-2025 Yegor Bugayenko
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-2025 Yegor Bugayenko
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-2025 Yegor Bugayenko
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-2025 Yegor Bugayenko
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-2025 Yegor Bugayenko
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
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # SPDX-FileCopyrightText: Copyright (c) 2023-2025 Yegor Bugayenko
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-2025 Yegor Bugayenko
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-2025 Yegor Bugayenko
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-2025 Yegor Bugayenko
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
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # SPDX-FileCopyrightText: Copyright (c) 2023-2025 Yegor Bugayenko
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-2025 Yegor Bugayenko
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-2025 Yegor Bugayenko
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-2025 Yegor Bugayenko
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-2025 Yegor Bugayenko
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-2025 Yegor Bugayenko
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-2025 Yegor Bugayenko
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-2025 Yegor Bugayenko
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.1.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: 2025-04-20 00:00:00.000000000 Z
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: '2'
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: '2'
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: '5'
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: '5'
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.6
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.6
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"