jekyll-polyglot 1.9.0 → 1.11.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/README.md +10 -11
- data/lib/jekyll/polyglot/hooks/coordinate.rb +2 -2
- data/lib/jekyll/polyglot/hooks/process.rb +1 -1
- data/lib/jekyll/polyglot/liquid/tags/i18n_headers.rb +44 -10
- data/lib/jekyll/polyglot/liquid/tags/static_href.rb +4 -8
- data/lib/jekyll/polyglot/patches/jekyll/site.rb +46 -30
- data/lib/jekyll/polyglot/patches/jekyll/static_file.rb +4 -3
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b3ca341e67c10066675cb10c5ded127cf9126c5db547d2f3fdfc3d545c43bd6a
|
4
|
+
data.tar.gz: 32315c6551ac56da248adb7d465c130d8f0ec4f03a7d589eb5e2081c1a420821
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b53d59e7090b20849d36cdfe6b54a6b0e40e40db839916f1df45c62f26b0ef541f43d30d88c3cbfcd0eb8e58ecc4e45b1f3ae1509cdd2aa0149aad4be41d9a95
|
7
|
+
data.tar.gz: 12a99dc155b5e4c7ba5f960e0267a90b547fa10576c9c3bf718784f139bf45b0da7554ac40e262b491aa113301eba5d1c16c2bb615fb901d26adf4cee90d0917
|
data/README.md
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
🔤 Polyglot
|
2
2
|
---
|
3
3
|
[](https://badge.fury.io/rb/jekyll-polyglot)
|
4
|
-
[](https://circleci.com/gh/untra/polyglot/?branch=main)
|
5
|
+
[](https://codecov.io/gh/untra/polyglot)
|
5
6
|
|
6
7
|
__Polyglot__ is a fast, painless, open-source internationalization plugin for [Jekyll](http://jekyllrb.com) blogs. Polyglot is easy to set up and use with any Jekyll project, and it scales to the languages you want to support. With fallback support for missing content, automatic url relativization, and powerful SEO tools, Polyglot allows any multi-language jekyll blog to focus on content without the cruft.
|
7
8
|
|
@@ -38,9 +39,7 @@ These configuration preferences indicate
|
|
38
39
|
- whether to run language processing in parallel or serial. Set to `false` if building on Windows hosts, or if Polyglot collides with other Jekyll plugins.
|
39
40
|
- your jekyll website production url. Make sure this value is set; Polyglot requires this to relative site urls correctly, and to make functioning language switchers.
|
40
41
|
|
41
|
-
The optional `lang_from_path: true` option enables getting page
|
42
|
-
language from the first or second path segment, e.g `de/first-one.md`, or
|
43
|
-
`_posts/zh_Hans_HK/use-second-segment.md` , if the lang frontmatter isn't defined.
|
42
|
+
The optional `lang_from_path: true` option enables getting the page language from a filepath segment seperated by `/` or `.`, e.g `de/first-one.md`, or `_posts/zh_HK/use-second-segment.md` , if the lang frontmatter isn't defined.
|
44
43
|
|
45
44
|
## How To Use It
|
46
45
|
When adding new posts and pages, add to the YAML front matter:
|
@@ -51,7 +50,7 @@ or whatever appropriate [I18n language code](https://developer.chrome.com/docs/e
|
|
51
50
|
the page should build for. And you're done. Ideally, when designing your site, you should
|
52
51
|
organize files by their relative urls.
|
53
52
|
|
54
|
-
You can see how the live Polyglot website [configures and supports multiple languages](https://github.com/untra/polyglot/blob/
|
53
|
+
You can see how the live Polyglot website [configures and supports multiple languages](https://github.com/untra/polyglot/blob/main/site/_config.yml#L28-L37), and examples of [community](https://github.com/untra/polyglot/pull/155) [language](https://github.com/untra/polyglot/pull/167) [contributions](https://github.com/untra/polyglot/pull/177).
|
55
54
|
|
56
55
|
Polyglot works by associating documents with similar permalinks to the `lang` specified in their frontmatter. Files that correspond to similar routes should have identical permalinks. If you don't provide a permalink for a post, ___make sure you are consistent___ with how you place and name corresponding files:
|
57
56
|
```
|
@@ -113,7 +112,7 @@ Estos somos nosotros!
|
|
113
112
|
```
|
114
113
|
|
115
114
|
Additionally, if you are also using the `jekyll-redirect-from` plugin, pages coordinated this way will automatically have redirects created between pages.
|
116
|
-
So `/es/about` will automatically redirect to `/es/acerca-de` and `/acerca-de` can redirect to `/about`. If you use this approach, be sure to also employ a customized [redirect.html](https://github.com/untra/polyglot/blob/
|
115
|
+
So `/es/about` will automatically redirect to `/es/acerca-de` and `/acerca-de` can redirect to `/about`. If you use this approach, be sure to also employ a customized [redirect.html](https://github.com/untra/polyglot/blob/main/site/_layouts/redirect.html).
|
117
116
|
|
118
117
|
#### Fallback Language Support
|
119
118
|
Lets say you are building your website. You have an `/about/` page written in *english*, *german* and
|
@@ -161,7 +160,7 @@ becomes
|
|
161
160
|
|
162
161
|
### Disabling Url Relativizing
|
163
162
|
_New in 1.4.0_
|
164
|
-
If you dont want a href attribute to be relativized (such as for making [a language switcher](https://github.com/untra/polyglot/blob/
|
163
|
+
If you dont want a href attribute to be relativized (such as for making [a language switcher](https://github.com/untra/polyglot/blob/main/site/_includes/sidebar.html#L40)), you can use the block tag:
|
165
164
|
|
166
165
|
```html
|
167
166
|
{% static_href %}href="..."{% endstatic_href %}
|
@@ -252,7 +251,7 @@ Polyglot will only start builds after it confirms there is a cpu core ready to a
|
|
252
251
|
### Writing Tests and Debugging
|
253
252
|
_:wave: I need assistance with modern ruby best practices for test maintenance with rake and rspec. If you got the advice I have the ears._
|
254
253
|
|
255
|
-
Tests are run with `
|
254
|
+
Tests are run with `test.sh`. Tests are in the `/spec` directory, and test failure output detail can be examined in the `rspec.json` file. Code Coverage details are in the the `coverage` directory.
|
256
255
|
|
257
256
|
## Features
|
258
257
|
This plugin stands out from other I18n Jekyll plugins.
|
@@ -332,15 +331,15 @@ Feel free to open a PR and list your multilingual blog here you may want to shar
|
|
332
331
|
|
333
332
|
## 2.0 Roadmap
|
334
333
|
* [x] - **site language**: portuguese Brazil `pt-BR`
|
335
|
-
* [
|
336
|
-
* [
|
337
|
-
* [ ] - **site language**: japanese `ja`
|
334
|
+
* [x] - **site language**: arabic `ar`
|
335
|
+
* [x] - **site language**: japanese `ja`
|
338
336
|
* [x] - **site language**: russian `ru`
|
339
337
|
* [x] - **site language**: dutch `nl`
|
340
338
|
* [x] - **site language**: korean `ko`
|
341
339
|
* [x] - **site language**: hebrew `he`
|
342
340
|
* [x] - **site language**: chinese China `zh-CN`
|
343
341
|
* [ ] - **site language**: chinese Taiwan `zh-TW`
|
342
|
+
* [ ] - **site language**: portuguese Portugal `pt-PT`
|
344
343
|
* [ ] - get whitelisted as an official github-pages jekyll plugin
|
345
344
|
* [x] - update CI provider
|
346
345
|
|
@@ -8,7 +8,7 @@ def hook_coordinate(site)
|
|
8
8
|
# Copy the language specific data, by recursively merging it with the default data.
|
9
9
|
# Favour active_lang first, then default_lang, then any non-language-specific data.
|
10
10
|
# See: https://www.ruby-forum.com/topic/142809
|
11
|
-
merger = proc { |
|
11
|
+
merger = proc { |_key, v1, v2| v1.is_a?(Hash) && v2.is_a?(Hash) ? v1.merge(v2, &merger) : v2 }
|
12
12
|
if site.data.include?(site.default_lang)
|
13
13
|
site.data = site.data.merge(site.data[site.default_lang], &merger)
|
14
14
|
end
|
@@ -16,7 +16,7 @@ def hook_coordinate(site)
|
|
16
16
|
site.data = site.data.merge(site.data[site.active_lang], &merger)
|
17
17
|
end
|
18
18
|
|
19
|
-
site.collections.
|
19
|
+
site.collections.each_value do |collection|
|
20
20
|
collection.docs = site.coordinate_documents(collection.docs)
|
21
21
|
end
|
22
22
|
site.pages = site.coordinate_documents(site.pages)
|
@@ -11,18 +11,52 @@ module Jekyll
|
|
11
11
|
|
12
12
|
def render(context)
|
13
13
|
site = context.registers[:site]
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
page = context.registers[:page]
|
15
|
+
permalink = page['permalink'] || page['url'] || ''
|
16
|
+
permalink = "/#{permalink}" unless permalink.start_with?("/")
|
17
|
+
page_id = page['page_id']
|
18
|
+
permalink_lang = page['permalink_lang']
|
19
|
+
baseurl = site.config['baseurl'] || ''
|
20
|
+
site_url = @url.empty? ? site.config['url'] + baseurl : @url
|
17
21
|
i18n = "<meta http-equiv=\"Content-Language\" content=\"#{site.active_lang}\">\n"
|
18
|
-
i18n += "<link rel=\"alternate\" hreflang=\"#{site.default_lang}\" "\
|
19
|
-
"href=\"#{site_url}/#{permalink}\"/>\n"
|
20
|
-
site.languages.each do |lang|
|
21
|
-
next if lang == site.default_lang
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
|
23
|
+
# Find all documents with the same page_id
|
24
|
+
docs_with_same_id = site.collections.values
|
25
|
+
.flat_map(&:docs)
|
26
|
+
.filter { |doc| !doc.data['page_id'].nil? }
|
27
|
+
.select { |doc| doc.data['page_id'] == page_id }
|
28
|
+
|
29
|
+
# Build a hash of lang => permalink for all matching docs
|
30
|
+
lang_to_permalink = docs_with_same_id.to_h { |doc| [doc.data['lang'], doc.data['permalink']] }
|
31
|
+
|
32
|
+
# Canonical should always point to the current page's permalink (active_lang)
|
33
|
+
current_lang = site.active_lang
|
34
|
+
current_permalink = lang_to_permalink[current_lang] || (permalink_lang && permalink_lang[current_lang]) || permalink
|
35
|
+
current_permalink = "/#{current_permalink}" unless current_permalink.start_with?("/")
|
36
|
+
# Don't add language prefix if it's already in the permalink
|
37
|
+
canonical_permalink = if current_lang == site.default_lang
|
38
|
+
current_permalink
|
39
|
+
else
|
40
|
+
current_permalink.start_with?("/#{current_lang}/") ? current_permalink : "/#{current_lang}#{current_permalink}"
|
41
|
+
end
|
42
|
+
i18n += "<link rel=\"canonical\" href=\"#{site_url}#{canonical_permalink}\"/>\n"
|
43
|
+
|
44
|
+
# Get the default language permalink for x-default
|
45
|
+
default_lang_permalink = lang_to_permalink[site.default_lang] || (permalink_lang && permalink_lang[site.default_lang]) || permalink
|
46
|
+
default_lang_permalink = "/#{default_lang_permalink}" unless default_lang_permalink.start_with?("/")
|
47
|
+
|
48
|
+
site.languages.each do |lang|
|
49
|
+
alt_permalink = lang_to_permalink[lang] || (permalink_lang && permalink_lang[lang]) || permalink
|
50
|
+
alt_permalink = "/#{alt_permalink}" unless alt_permalink.start_with?("/")
|
51
|
+
i18n += if lang == site.default_lang
|
52
|
+
"<link rel=\"alternate\" hreflang=\"#{lang}\" href=\"#{site_url}#{alt_permalink}\"/>\n" \
|
53
|
+
"<link rel=\"alternate\" hreflang=\"x-default\" href=\"#{site_url}#{default_lang_permalink}\"/>\n"
|
54
|
+
else
|
55
|
+
# For non-default languages, use the language-specific permalink directly
|
56
|
+
# Don't add the language prefix if it's already in the permalink
|
57
|
+
lang_permalink = alt_permalink.start_with?("/#{lang}/") ? alt_permalink : "/#{lang}#{alt_permalink}"
|
58
|
+
"<link rel=\"alternate\" hreflang=\"#{lang}\" href=\"#{site_url}#{lang_permalink}\"/>\n"
|
59
|
+
end
|
26
60
|
end
|
27
61
|
i18n
|
28
62
|
end
|
@@ -1,21 +1,17 @@
|
|
1
1
|
module Jekyll
|
2
2
|
module Polyglot
|
3
3
|
module Liquid
|
4
|
-
class StaticHrefTag < ::
|
5
|
-
def initialize(tag_name, params, tokens)
|
6
|
-
super
|
7
|
-
end
|
8
|
-
|
4
|
+
class StaticHrefTag < ::Liquid::Block
|
9
5
|
def render(context)
|
10
6
|
text = super
|
11
|
-
href_attrs = text.strip.split
|
7
|
+
href_attrs = text.strip.split('=', 2)
|
12
8
|
valid = (href_attrs.length == 2 && href_attrs[0] == 'href') && href_attrs[1].start_with?('"') && href_attrs[1].end_with?('"')
|
13
9
|
unless valid
|
14
|
-
raise Liquid::SyntaxError, "static_href parameters must include match href=\"...\" attribute param, eg. href=\"http://example.com
|
10
|
+
raise Liquid::SyntaxError, "static_href parameters must include match href=\"...\" attribute param, eg. href=\"http://example.com, href=\"/about\", href=\"/\" , instead got:\n#{text}"
|
15
11
|
end
|
16
12
|
|
17
13
|
href_value = href_attrs[1]
|
18
|
-
# href writes out as ferh="..." explicitly wrong, to be
|
14
|
+
# href writes out as ferh="..." explicitly wrong, to be caught by separate processor for nonrelativized links
|
19
15
|
"ferh=#{href_value}"
|
20
16
|
end
|
21
17
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'English'
|
1
2
|
require 'etc'
|
2
3
|
|
3
4
|
include Process
|
@@ -31,7 +32,7 @@ module Jekyll
|
|
31
32
|
alias process_orig process
|
32
33
|
def process
|
33
34
|
prepare
|
34
|
-
all_langs = (@
|
35
|
+
all_langs = ([@default_lang] + @languages).uniq
|
35
36
|
if @parallel_localization
|
36
37
|
nproc = Etc.nprocessors
|
37
38
|
pids = {}
|
@@ -42,11 +43,11 @@ module Jekyll
|
|
42
43
|
end
|
43
44
|
while pids.length >= (lang == all_langs[-1] ? 1 : nproc)
|
44
45
|
sleep 0.1
|
45
|
-
pids.map do |
|
46
|
+
pids.map do |pid_lang, pid|
|
46
47
|
next unless waitpid pid, Process::WNOHANG
|
47
48
|
|
48
|
-
pids.delete
|
49
|
-
raise "Polyglot subprocess #{pid} (#{lang}) failed (#{
|
49
|
+
pids.delete pid_lang
|
50
|
+
raise "Polyglot subprocess #{pid} (#{lang}) failed (#{$CHILD_STATUS.exitstatus})" unless $CHILD_STATUS.success?
|
50
51
|
end
|
51
52
|
end
|
52
53
|
end
|
@@ -63,7 +64,7 @@ module Jekyll
|
|
63
64
|
process_language lang
|
64
65
|
end
|
65
66
|
end
|
66
|
-
Jekyll::Hooks.trigger :polyglot, :post_write
|
67
|
+
Jekyll::Hooks.trigger :polyglot, :post_write, self
|
67
68
|
end
|
68
69
|
|
69
70
|
alias site_payload_orig site_payload
|
@@ -114,6 +115,16 @@ module Jekyll
|
|
114
115
|
string.split(regex)
|
115
116
|
end
|
116
117
|
|
118
|
+
# Convert glob pattern to regex pattern
|
119
|
+
# * matches any characters except /
|
120
|
+
# ? matches any single character except /
|
121
|
+
def glob_to_regex(pattern)
|
122
|
+
# Escape special regex characters first
|
123
|
+
escaped = Regexp.escape(pattern)
|
124
|
+
# Convert glob patterns to regex patterns
|
125
|
+
escaped.gsub("\\*", '.*').gsub("\\?", '.')
|
126
|
+
end
|
127
|
+
|
117
128
|
def derive_lang_from_path(doc)
|
118
129
|
unless @lang_from_path
|
119
130
|
return nil
|
@@ -127,13 +138,6 @@ module Jekyll
|
|
127
138
|
end
|
128
139
|
end
|
129
140
|
|
130
|
-
# loop through all segments and check if they match the language regex
|
131
|
-
segments.each do |segment|
|
132
|
-
if @languages.include?(segment)
|
133
|
-
return segment
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
141
|
nil
|
138
142
|
end
|
139
143
|
|
@@ -163,21 +167,28 @@ module Jekyll
|
|
163
167
|
approved[page_id] = doc
|
164
168
|
@file_langs[page_id] = lang
|
165
169
|
end
|
166
|
-
approved.
|
167
|
-
|
170
|
+
approved.each_value do |doc|
|
171
|
+
assignPageRedirects(doc, docs)
|
172
|
+
assignPageLanguagePermalinks(doc, docs)
|
173
|
+
end
|
168
174
|
approved.values
|
169
175
|
end
|
170
176
|
|
171
177
|
def assignPageRedirects(doc, docs)
|
172
178
|
pageId = doc.data['page_id']
|
173
179
|
if !pageId.nil? && !pageId.empty?
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
180
|
+
redirects = []
|
181
|
+
|
182
|
+
docs_with_same_id = docs.select { |dd| dd.data['page_id'] == pageId }
|
183
|
+
|
184
|
+
# For each document with the same page_id
|
185
|
+
docs_with_same_id.each do |dd|
|
186
|
+
# Add redirect if it's a different permalink
|
187
|
+
if dd.data['permalink'] != doc.data['permalink']
|
188
|
+
redirects << dd.data['permalink']
|
189
|
+
end
|
179
190
|
end
|
180
|
-
|
191
|
+
|
181
192
|
doc.data['redirect_from'] = redirects
|
182
193
|
end
|
183
194
|
end
|
@@ -221,7 +232,7 @@ module Jekyll
|
|
221
232
|
def document_url_regex
|
222
233
|
regex = ''
|
223
234
|
(@languages || []).each do |lang|
|
224
|
-
regex += "([
|
235
|
+
regex += "([/.]#{lang}[/.])|"
|
225
236
|
end
|
226
237
|
regex.chomp! '|'
|
227
238
|
/#{regex}/
|
@@ -235,10 +246,12 @@ module Jekyll
|
|
235
246
|
regex = ''
|
236
247
|
unless disabled
|
237
248
|
@exclude.each do |x|
|
238
|
-
|
249
|
+
escaped_x = glob_to_regex(x)
|
250
|
+
regex += "(?!#{escaped_x})"
|
239
251
|
end
|
240
252
|
@languages.each do |x|
|
241
|
-
|
253
|
+
escaped_x = Regexp.escape(x)
|
254
|
+
regex += "(?!#{escaped_x}/)"
|
242
255
|
end
|
243
256
|
end
|
244
257
|
start = disabled ? 'ferh' : 'href'
|
@@ -253,21 +266,24 @@ module Jekyll
|
|
253
266
|
regex = ''
|
254
267
|
unless disabled
|
255
268
|
@exclude.each do |x|
|
256
|
-
|
269
|
+
escaped_x = glob_to_regex(x)
|
270
|
+
regex += "(?!#{escaped_x})"
|
257
271
|
end
|
258
272
|
@languages.each do |x|
|
259
|
-
|
273
|
+
escaped_x = Regexp.escape(x)
|
274
|
+
regex += "(?!#{escaped_x}/)"
|
260
275
|
end
|
261
276
|
end
|
262
277
|
start = disabled ? 'ferh' : 'href'
|
263
|
-
|
278
|
+
neglookbehind = disabled ? "" : "(?<!hreflang=\"#{@default_lang}\" |rel=\"canonical\" )"
|
279
|
+
%r{#{neglookbehind}#{start}="?#{url}#{@baseurl}/((?:#{regex}[^,'"\s/?.]+\.?)*(?:/[^\]\[)("'\s]*)?)"}
|
264
280
|
end
|
265
281
|
|
266
282
|
def relativize_urls(doc, regex)
|
267
283
|
return if doc.output.nil?
|
268
284
|
|
269
285
|
modified_output = doc.output.dup
|
270
|
-
modified_output.gsub!(regex, "href=\"#{@baseurl}/#{@active_lang}
|
286
|
+
modified_output.gsub!(regex, "href=\"#{@baseurl}/#{@active_lang}/\\1\"")
|
271
287
|
doc.output = modified_output
|
272
288
|
end
|
273
289
|
|
@@ -275,7 +291,7 @@ module Jekyll
|
|
275
291
|
return if doc.output.nil?
|
276
292
|
|
277
293
|
modified_output = doc.output.dup
|
278
|
-
modified_output.gsub!(regex, "href=\"#{url}#{@baseurl}/#{@active_lang}
|
294
|
+
modified_output.gsub!(regex, "href=\"#{url}#{@baseurl}/#{@active_lang}/\\1\"")
|
279
295
|
doc.output = modified_output
|
280
296
|
end
|
281
297
|
|
@@ -283,7 +299,7 @@ module Jekyll
|
|
283
299
|
return if doc.output.nil?
|
284
300
|
|
285
301
|
modified_output = doc.output.dup
|
286
|
-
modified_output.gsub!(regex, "href=\"#{url}#{@baseurl}
|
302
|
+
modified_output.gsub!(regex, "href=\"#{url}#{@baseurl}/\\1\"")
|
287
303
|
doc.output = modified_output
|
288
304
|
end
|
289
305
|
|
@@ -291,7 +307,7 @@ module Jekyll
|
|
291
307
|
return if doc.output.nil?
|
292
308
|
|
293
309
|
modified_output = doc.output.dup
|
294
|
-
modified_output.gsub!(regex, "href=\"#{@baseurl}
|
310
|
+
modified_output.gsub!(regex, "href=\"#{@baseurl}/\\1\"")
|
295
311
|
doc.output = modified_output
|
296
312
|
end
|
297
313
|
end
|
@@ -1,19 +1,20 @@
|
|
1
|
-
|
2
1
|
module Jekyll
|
3
2
|
# Alteration to Jekyll StaticFile
|
4
3
|
# provides aliased methods to direct write to skip files
|
5
4
|
# excluded from localization
|
6
5
|
class StaticFile
|
7
|
-
|
6
|
+
alias write_orig write
|
8
7
|
def write(dest)
|
9
8
|
return false if exclude_from_localization?
|
9
|
+
|
10
10
|
write_orig(dest)
|
11
11
|
end
|
12
12
|
|
13
13
|
def exclude_from_localization?
|
14
14
|
return false if @site.active_lang == @site.default_lang
|
15
|
+
|
15
16
|
@site.exclude_from_localization.each do |e|
|
16
|
-
return true if relative_path[1
|
17
|
+
return true if relative_path[1..].start_with?(e)
|
17
18
|
end
|
18
19
|
false
|
19
20
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-polyglot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Volin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-09-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -54,7 +54,8 @@ files:
|
|
54
54
|
homepage: https://polyglot.untra.io/
|
55
55
|
licenses:
|
56
56
|
- MIT
|
57
|
-
metadata:
|
57
|
+
metadata:
|
58
|
+
rubygems_mfa_required: 'true'
|
58
59
|
post_install_message:
|
59
60
|
rdoc_options: []
|
60
61
|
require_paths:
|
@@ -63,12 +64,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
63
64
|
requirements:
|
64
65
|
- - ">="
|
65
66
|
- !ruby/object:Gem::Version
|
66
|
-
version:
|
67
|
+
version: 3.1.0
|
67
68
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
69
|
requirements:
|
69
70
|
- - ">="
|
70
71
|
- !ruby/object:Gem::Version
|
71
|
-
version:
|
72
|
+
version: 3.1.0
|
72
73
|
requirements: []
|
73
74
|
rubygems_version: 3.3.7
|
74
75
|
signing_key:
|