medieval_latina 1.4.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,3 @@
1
+ require "i18n"
2
+
3
+ I18n.config.available_locales = :en
@@ -1,3 +1,3 @@
1
1
  class MedievalLatina
2
- VERSION = "1.4.0".freeze
2
+ VERSION = "2.0.1".freeze
3
3
  end
@@ -1,4 +1,5 @@
1
1
  require "medieval_latina/dictionary"
2
+ require "medieval_latina/initializer"
2
3
  require "medieval_latina/version"
3
4
  require "set"
4
5
 
@@ -6,7 +7,13 @@ class MedievalLatina
6
7
  def self.[](text)
7
8
  prepared_words = prepare_text(text).map do |string|
8
9
  if word?(string)
9
- DICTIONARY[string] || new(string).call
10
+ metadata = DICTIONARY.fetch(string, {})
11
+
12
+ if metadata.key?(:pronunciation)
13
+ metadata[:pronunciation]
14
+ else
15
+ new(string).call
16
+ end
10
17
  else
11
18
  string
12
19
  end
@@ -16,7 +23,7 @@ class MedievalLatina
16
23
  end
17
24
 
18
25
  def self.prepare_text(text)
19
- text.scan(/[\w'-]+|[[:punct:]]+/).map do |string|
26
+ text.scan(/[\p{Alnum}'-]+|[[:punct:]]+/).map do |string|
20
27
  if word?(string)
21
28
  prepare_word(string)
22
29
  else
@@ -26,7 +33,7 @@ class MedievalLatina
26
33
  end
27
34
 
28
35
  def self.prepare_word(word)
29
- word.gsub(/\W+/, " ").strip.downcase
36
+ word.gsub(/\P{Alnum}+/, " ").strip.downcase
30
37
  end
31
38
 
32
39
  def self.adjective?(word)
@@ -80,7 +87,7 @@ class MedievalLatina
80
87
 
81
88
  def initialize(word)
82
89
  @index = 0
83
- @word = word.downcase
90
+ @word = I18n.transliterate(word.downcase)
84
91
  end
85
92
 
86
93
  def call
@@ -155,4 +162,13 @@ class MedievalLatina
155
162
  end
156
163
 
157
164
  class Error < StandardError; end
165
+
166
+ DICTIONARY = FREQUENCY_LIST.each_with_object({}) do |(word, metadata), hash|
167
+ hash[word] = metadata
168
+
169
+ sanitized_word = I18n.transliterate(word)
170
+ unless hash.key?(sanitized_word)
171
+ hash[sanitized_word] = metadata
172
+ end
173
+ end
158
174
  end
@@ -15,7 +15,7 @@ Gem::Specification.new do |spec|
15
15
  spec.description = description
16
16
  spec.homepage = "https://github.com/jaysonvirissimo/medieval_latina"
17
17
  spec.license = "MIT"
18
- spec.required_ruby_version = Gem::Requirement.new(">= 2.6.0")
18
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
19
19
  spec.metadata["allowed_push_host"] = "https://rubygems.org/"
20
20
  spec.metadata["homepage_uri"] = spec.homepage
21
21
  spec.metadata["source_code_uri"] = github_uri
@@ -28,4 +28,5 @@ Gem::Specification.new do |spec|
28
28
  spec.bindir = "exe"
29
29
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
30
30
  spec.require_paths = ["lib"]
31
+ spec.add_dependency "i18n"
31
32
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: medieval_latina
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jayson Virissimo
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-02-02 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2023-08-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: i18n
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  description: |
14
28
  There are good text-to-speech engines for English and classical Latin, but none for medieval Latin.
15
29
  MedievalLatina converts Latin text to a kind of phonetic spelling that can be read by English text-to-speech engines.
@@ -33,6 +47,7 @@ files:
33
47
  - bin/setup
34
48
  - lib/medieval_latina.rb
35
49
  - lib/medieval_latina/dictionary.rb
50
+ - lib/medieval_latina/initializer.rb
36
51
  - lib/medieval_latina/version.rb
37
52
  - medieval_latina.gemspec
38
53
  homepage: https://github.com/jaysonvirissimo/medieval_latina
@@ -51,7 +66,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
51
66
  requirements:
52
67
  - - ">="
53
68
  - !ruby/object:Gem::Version
54
- version: 2.6.0
69
+ version: 2.7.0
55
70
  required_rubygems_version: !ruby/object:Gem::Requirement
56
71
  requirements:
57
72
  - - ">="