text-hyphen 1.5.0 → 1.6.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: 6691be16764f973315c67ddd1da98d90bfe79921546b519d2d0eeac65ec4b9c2
4
- data.tar.gz: b5c789b5d5e18db0e1408f7de1c24b5ad2431594edd8311a263b0ae093ef96ad
3
+ metadata.gz: 4f68be6e32a2f84b2525e443f3a4963aca956a8aa6519bc8626ef5e8e55bf852
4
+ data.tar.gz: 8fdb6d4b5e5824426f62742f8233cc03497a43c39ea08f97524f591ca4a4bd36
5
5
  SHA512:
6
- metadata.gz: b921231d274be4e5c614ddf038edd6f701d4693853eaf72a572827f3052cab456f98e6416ad751b8266b8eb59e92f298c00659f875e267ab0968b1ecab6fa3ba
7
- data.tar.gz: 4608df3088f90f42af612eb01b947d28cd98be40eb393d64d812f3044c5026257066290efe46423351d3fe2688c11895f343280541a02efc04aadacbfd8a10ef
6
+ metadata.gz: 7db44199be83d41accb98ad1c6daa2133544e147c6e5b8791d8e46bd3c60aee93746cc41b3a9d68f34c385c19097186c35d12409a6c92f23d22f076a6041e702
7
+ data.tar.gz: 31bae791ccc11da74136baf39c429a327b14fb6553aa7d911ddd89398d3e6eb86ea147aabb1fb0ed252899be7e0f5cf67e7f318cadde24c70485ce469db30253
data/History.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.6.0 / 2026-10-23
4
+
5
+ - Security:
6
+
7
+ - Language codes are validated before they are passed to `require`. A
8
+ crafted code such as `../../foo` could load any Ruby file on the load path
9
+ (GHSA-x432-p2c9-v84r). Codes may now only contain lowercase letters,
10
+ digits and underscores; anything else raises `ArgumentError`.
11
+
12
+ - Changes:
13
+
14
+ - Unknown language codes raise `ArgumentError` instead of `LoadError`.
15
+
16
+ - Language codes with dashes (`en-us`) are normalised as documented.
17
+
3
18
  ## 1.5.0 / 2023-03-18
4
19
 
5
20
  - 1 new feature:
data/lib/text/hyphen.rb CHANGED
@@ -19,7 +19,7 @@ class Text::Hyphen
19
19
  require File.join(p, v, f)
20
20
  end
21
21
 
22
- VERSION = "1.5.0"
22
+ VERSION = "1.6.0"
23
23
 
24
24
  DEFAULT_MIN_LEFT = 2
25
25
  DEFAULT_MIN_RIGHT = 2
@@ -276,20 +276,36 @@ The language '%s' contains %d total hyphenation patterns.
276
276
  return if @first_load
277
277
 
278
278
  @iso_language ||= "en_us"
279
+ @iso_language = @iso_language.to_s.downcase.tr("-", "_")
280
+
281
+ unless valid_language?(@iso_language)
282
+ raise ArgumentError, "invalid language: #{@iso_language.inspect}"
283
+ end
279
284
 
280
285
  unless @language
281
- require "text/hyphen/language/#{@iso_language}"
282
- @language = Text::Hyphen::Language.const_get(@iso_language.upcase)
286
+ @language = require_language_definition(@iso_language)
283
287
  @iso_language = @language.isocode if @language.isocode
284
288
  end
285
289
 
286
- @left ||= @language.left
290
+ @left ||= @language.left
287
291
  @right ||= @language.right
288
-
289
292
  @iso_language
290
293
  end
291
294
  private :load_language
292
295
 
296
+ def valid_language?(language)
297
+ language.match?(/\A[a-z][a-z0-9_]+\z/) && !language.end_with?("_")
298
+ end
299
+ private :valid_language?
300
+
301
+ def require_language_definition(language)
302
+ require "text/hyphen/language/#{language}"
303
+ Text::Hyphen::Language.const_get(language.upcase)
304
+ rescue LoadError
305
+ raise ArgumentError, "unknown language: #{language.inspect}"
306
+ end
307
+ private :require_language_definition
308
+
293
309
  def split_phrase(phrase)
294
310
  phrase.split(/[[:space:]]+/)
295
311
  end
@@ -85,4 +85,9 @@ class TestTextHyphen < Test::Unit::TestCase
85
85
  a = Text::Hyphen.new(:left => 0, :right => 0).visualize("This useful library supports phrases and sentences.")
86
86
  assert_equal "This use-ful li-brary sup-port-s phras-es and sen-tences.", a
87
87
  end
88
+
89
+ def test_iso_language_uses_language_isocode
90
+ assert_equal "de", Text::Hyphen.new(:language => "de1").iso_language
91
+ assert_equal "hu", Text::Hyphen.new(:language => "hu1").iso_language
92
+ end
88
93
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: text-hyphen
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Austin Ziegler
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2023-03-18 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: hoe
@@ -140,20 +139,20 @@ dependencies:
140
139
  requirements:
141
140
  - - ">="
142
141
  - !ruby/object:Gem::Version
143
- version: '4.0'
142
+ version: '7.0'
144
143
  - - "<"
145
144
  - !ruby/object:Gem::Version
146
- version: '7'
145
+ version: '9'
147
146
  type: :development
148
147
  prerelease: false
149
148
  version_requirements: !ruby/object:Gem::Requirement
150
149
  requirements:
151
150
  - - ">="
152
151
  - !ruby/object:Gem::Version
153
- version: '4.0'
152
+ version: '7.0'
154
153
  - - "<"
155
154
  - !ruby/object:Gem::Version
156
- version: '7'
155
+ version: '9'
157
156
  - !ruby/object:Gem::Dependency
158
157
  name: simplecov
159
158
  requirement: !ruby/object:Gem::Requirement
@@ -168,7 +167,7 @@ dependencies:
168
167
  - - "~>"
169
168
  - !ruby/object:Gem::Version
170
169
  version: '0.21'
171
- description: |-
170
+ description: |
172
171
  Text::Hyphen is a Ruby library to hyphenate words in various languages using
173
172
  Ruby-fied versions of TeX hyphenation patterns. It will properly hyphenate
174
173
  various words according to the rules of the language the word is written in. The
@@ -184,6 +183,8 @@ description: |-
184
183
  Ruby 1.8.7 and Ruby 1.9.2 support (but please read below). In short, Ruby 1.8
185
184
  support is deprecated and I will not be providing any bug fixes related to Ruby
186
185
  1.8. New features will be developed and tested against Ruby 1.9 only.
186
+
187
+ ==== To Install:
187
188
  email:
188
189
  - halostatue@gmail.com
189
190
  executables:
@@ -194,7 +195,6 @@ extra_rdoc_files:
194
195
  - Contributing.md
195
196
  - History.md
196
197
  - Licence.md
197
- - Manifest.txt
198
198
  - README.md
199
199
  files:
200
200
  - ".standard.yml"
@@ -313,13 +313,11 @@ files:
313
313
  - test/data/bug_9807_utf-8.rb
314
314
  - test/test_bugs.rb
315
315
  - test/test_text_hyphen.rb
316
- homepage: https://rubygems.org/gems/text-hyphen
317
316
  licenses:
318
317
  - MIT
319
318
  - Various
320
319
  metadata:
321
320
  rubygems_mfa_required: 'true'
322
- post_install_message:
323
321
  rdoc_options:
324
322
  - "--main"
325
323
  - README.md
@@ -336,8 +334,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
336
334
  - !ruby/object:Gem::Version
337
335
  version: '0'
338
336
  requirements: []
339
- rubygems_version: 3.1.6
340
- signing_key:
337
+ rubygems_version: 4.0.20
341
338
  specification_version: 4
342
339
  summary: Text::Hyphen is a Ruby library to hyphenate words in various languages using
343
340
  Ruby-fied versions of TeX hyphenation patterns