medieval_latina 3.0.0 → 3.1.1

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: 67adc073d1a06863e460da73ddfb00d371e64e532ca14f94e7216f16d1d7ecd2
4
- data.tar.gz: cfc8ece414f505202c055606561a9e62b366c9f31431f6b5aa4bf8de40cf3eb1
3
+ metadata.gz: f38ebdf6480281f444c3142a6c0dd8ef3b805c34ab45710dd6af46b904f5bbc5
4
+ data.tar.gz: ec33854ab71c933af1da4fe44055ac94d0cf517894a60ebd9addbf42058ee7d5
5
5
  SHA512:
6
- metadata.gz: 7c3e709b58bce1ca4d8bdce5c166a15f5eafa7a0db327452389b991ee7cfec1f242b39aee6814d9f5fab508c19413a7dbf1bcad38df77da92f7efc22a0315b86
7
- data.tar.gz: d931c5f2b959b70c11fd9e4da3d3b970e48f34a2bba6fb47639b1e6c787137d8e62e92d3ccacf9230ff08c63f71666c2fbe56d3ebe50e772eadbd1297fc9f1a6
6
+ metadata.gz: 951bb7a9259f812296866752be7ff0b1a4526bf0a7521b72c6465de4e2a922887922f443070b8b990e4a57a8a48ee8e76a0c67b78720598890ab71173379e924
7
+ data.tar.gz: 363b7fe7a6331397c0e11ade30f4c4ef6db456d3aac200919e308b318f08941df25c552fa095f4be6b3937c19a9ffd48e53fe1b172b83999a4b4e224506a837f
@@ -1,4 +1,4 @@
1
- name: Tests
1
+ name: Tests and Linting
2
2
 
3
3
  on:
4
4
  pull_request:
@@ -11,7 +11,7 @@ on:
11
11
  jobs:
12
12
  unit_tests:
13
13
  name: Unit Tests
14
- if: "contains(github.event.commits[0].message, '[ci skip]') == false"
14
+ if: ${{ ! contains(github.event.head_commit.message, '[ci skip]') }}
15
15
  strategy:
16
16
  fail-fast: false
17
17
  matrix:
@@ -19,10 +19,9 @@ jobs:
19
19
  - macos
20
20
  - ubuntu
21
21
  ruby:
22
- - 3.0
23
- - 3.1
24
- - 3.2
25
- - 3.3
22
+ - '3.2'
23
+ - '3.3'
24
+ - '3.4'
26
25
  allow_failures:
27
26
  - false
28
27
  env:
@@ -32,7 +31,7 @@ jobs:
32
31
  continue-on-error: ${{ endsWith(matrix.ruby, 'head') || matrix.ruby == 'debug' }}
33
32
  steps:
34
33
  - name: Checkout
35
- uses: actions/checkout@v2
34
+ uses: actions/checkout@v3
36
35
  - name: Setup Ruby
37
36
  uses: ruby/setup-ruby@v1
38
37
  with:
@@ -40,3 +39,22 @@ jobs:
40
39
  bundler-cache: true
41
40
  - name: Test
42
41
  run: bundle exec rake spec || $ALLOW_FAILURES
42
+
43
+
44
+ lint:
45
+ name: Linting
46
+ runs-on: ubuntu-latest
47
+ steps:
48
+ - name: Checkout
49
+ uses: actions/checkout@v3
50
+ - name: Setup Ruby
51
+ uses: ruby/setup-ruby@v1
52
+ with:
53
+ ruby-version: '3.4'
54
+ bundler-cache: true
55
+ - name: Install dependencies
56
+ run: bundle install
57
+ - name: Lint Ruby
58
+ run: bundle exec standardrb
59
+ - name: Lint JSON
60
+ run: bundle exec jsonlint data/dictionary.json
data/.gitignore CHANGED
@@ -9,3 +9,4 @@
9
9
 
10
10
  # rspec failure tracking
11
11
  .rspec_status
12
+ .DS_Store
data/.standard.yml CHANGED
@@ -1,3 +1,3 @@
1
1
  fix: true
2
2
  parallel: true
3
- ruby_version: 3.0
3
+ ruby_version: 3.2
data/.tool-versions CHANGED
@@ -1 +1,2 @@
1
- ruby 3.3.0
1
+ nodejs 24.2.0
2
+ ruby 3.4.1
data/CLAUDE.md ADDED
@@ -0,0 +1,60 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Development Commands
6
+
7
+ - **Setup**: `bin/setup` - Install dependencies with bundle install
8
+ - **Tests**: `rake spec` or `bundle exec rspec` - Run the full test suite
9
+ - **Linting**: `bin/lint` - Run StandardRB linter and jsonlint on dictionary.json
10
+ - **Build lexicons**: `bin/build` - Regenerate PLS lexicon files from dictionary.json
11
+ - **Console**: `bin/console` - Interactive prompt for experimentation
12
+ - **Install gem locally**: `bundle exec rake install`
13
+ - **Release**: `bundle exec rake release` (after updating version.rb)
14
+
15
+ ## Architecture Overview
16
+
17
+ This is a Ruby gem that converts medieval Latin text to phonetic English for text-to-speech engines. The architecture consists of:
18
+
19
+ ### Core Components
20
+
21
+ - **MedievalLatina class** (`lib/medieval_latina.rb`): Main interface with class methods for text conversion and linguistic analysis
22
+ - `MedievalLatina[text]` - Primary conversion method
23
+ - Part-of-speech helpers: `verb?`, `noun?`, `adjective?`, `adverb?`
24
+ - `pronunciations_for(words)` - Extract IPA pronunciations for lexicon building
25
+
26
+ - **Dictionary system** (`data/dictionary.json`): Large JSON file containing Latin words with metadata including:
27
+ - IPA pronunciations
28
+ - Part of speech classifications
29
+ - Custom pronunciation overrides
30
+
31
+ - **Lexicon generation** (`lib/medieval_latina/lexicon_builder.rb`, `lib/medieval_latina/lexicon.rb`): Creates PLS (Pronunciation Lexicon Specification) files for AWS Polly and other TTS engines
32
+
33
+ ### Phonetic Conversion Logic
34
+
35
+ The main conversion algorithm handles:
36
+ - Vowel teams: ae→ay, oe→ay, au→ou
37
+ - Consonant transformations: c→ch/k (soft/hard), g→j/g, j→y, t→ts/t, x→ks
38
+ - Consonant teams: gn→n-y, qu→kw
39
+ - Text preprocessing with I18n transliteration
40
+
41
+ ### Data Flow
42
+
43
+ 1. Text input → word tokenization → dictionary lookup
44
+ 2. If word has custom pronunciation → use it
45
+ 3. Otherwise → apply phonetic transformation rules
46
+ 4. Rejoin with proper punctuation spacing
47
+
48
+ ## Key Files
49
+
50
+ - `lib/medieval_latina.rb` - Main conversion logic and API
51
+ - `data/dictionary.json` - Latin word database (400KB+)
52
+ - `bin/build` - Splits dictionary into multiple PLS files in lexicons/ directory
53
+ - `.standard.yml` - StandardRB configuration (Ruby 3.2, parallel linting)
54
+ - `medieval_latina.gemspec` - Gem specification (requires Ruby >= 3.2.0)
55
+
56
+ ## Testing
57
+
58
+ - RSpec test suite in `spec/`
59
+ - Configuration in `.rspec` with documentation format
60
+ - Run specific tests: `bundle exec rspec spec/specific_spec.rb`
data/Gemfile.lock CHANGED
@@ -1,28 +1,42 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- medieval_latina (3.0.0)
4
+ medieval_latina (3.1.1)
5
5
  i18n
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- ast (2.4.0)
10
+ ast (2.4.2)
11
+ bigdecimal (3.1.8)
11
12
  concurrent-ruby (1.2.2)
12
13
  diff-lcs (1.3)
13
14
  i18n (1.13.0)
14
15
  concurrent-ruby (~> 1.0)
15
- mini_portile2 (2.8.6)
16
- nokogiri (1.16.4)
16
+ json (2.7.2)
17
+ jsonlint (0.4.0)
18
+ oj (~> 3)
19
+ optimist (~> 3)
20
+ language_server-protocol (3.17.0.3)
21
+ lint_roller (1.1.0)
22
+ mini_portile2 (2.8.9)
23
+ nokogiri (1.18.9)
17
24
  mini_portile2 (~> 2.8.2)
18
25
  racc (~> 1.4)
19
- parallel (1.19.1)
20
- parser (2.7.1.2)
21
- ast (~> 2.4.0)
22
- racc (1.7.3)
23
- rainbow (3.0.0)
26
+ oj (3.16.5)
27
+ bigdecimal (>= 3.0)
28
+ ostruct (>= 0.2)
29
+ optimist (3.1.0)
30
+ ostruct (0.6.0)
31
+ parallel (1.26.1)
32
+ parser (3.3.4.2)
33
+ ast (~> 2.4.1)
34
+ racc
35
+ racc (1.8.1)
36
+ rainbow (3.1.1)
24
37
  rake (12.3.3)
25
- rexml (3.2.5)
38
+ regexp_parser (2.9.2)
39
+ rexml (3.4.2)
26
40
  rspec (3.9.0)
27
41
  rspec-core (~> 3.9.0)
28
42
  rspec-expectations (~> 3.9.0)
@@ -36,30 +50,49 @@ GEM
36
50
  diff-lcs (>= 1.2.0, < 2.0)
37
51
  rspec-support (~> 3.9.0)
38
52
  rspec-support (3.9.3)
39
- rubocop (0.83.0)
53
+ rubocop (1.64.1)
54
+ json (~> 2.3)
55
+ language_server-protocol (>= 3.17.0)
40
56
  parallel (~> 1.10)
41
- parser (>= 2.7.0.1)
57
+ parser (>= 3.3.0.2)
42
58
  rainbow (>= 2.2.2, < 4.0)
43
- rexml
59
+ regexp_parser (>= 1.8, < 3.0)
60
+ rexml (>= 3.2.5, < 4.0)
61
+ rubocop-ast (>= 1.31.1, < 2.0)
44
62
  ruby-progressbar (~> 1.7)
45
- unicode-display_width (>= 1.4.0, < 2.0)
46
- rubocop-performance (1.5.2)
47
- rubocop (>= 0.71.0)
48
- ruby-progressbar (1.10.1)
49
- standard (0.4.2)
50
- rubocop (~> 0.83.0)
51
- rubocop-performance (~> 1.5.2)
52
- unicode-display_width (1.7.0)
63
+ unicode-display_width (>= 2.4.0, < 3.0)
64
+ rubocop-ast (1.32.0)
65
+ parser (>= 3.3.1.0)
66
+ rubocop-performance (1.21.1)
67
+ rubocop (>= 1.48.1, < 2.0)
68
+ rubocop-ast (>= 1.31.1, < 2.0)
69
+ ruby-progressbar (1.13.0)
70
+ standard (1.39.2)
71
+ language_server-protocol (~> 3.17.0.2)
72
+ lint_roller (~> 1.0)
73
+ rubocop (~> 1.64.0)
74
+ standard-custom (~> 1.0.0)
75
+ standard-performance (~> 1.4)
76
+ standard-custom (1.0.2)
77
+ lint_roller (~> 1.0)
78
+ rubocop (~> 1.50)
79
+ standard-performance (1.4.0)
80
+ lint_roller (~> 1.1)
81
+ rubocop-performance (~> 1.21.0)
82
+ standardrb (1.0.1)
83
+ standard
84
+ unicode-display_width (2.5.0)
53
85
 
54
86
  PLATFORMS
55
87
  ruby
56
88
 
57
89
  DEPENDENCIES
90
+ jsonlint
58
91
  medieval_latina!
59
92
  nokogiri
60
93
  rake (~> 12.0)
61
94
  rspec (~> 3.0)
62
- standard
95
+ standardrb
63
96
 
64
97
  BUNDLED WITH
65
98
  2.4.1
data/README.md CHANGED
@@ -108,7 +108,7 @@ You do this by running: `bin/build`
108
108
  ## Contributing
109
109
 
110
110
  Bug reports and pull requests are welcome on GitHub at https://github.com/jaysonvirissimo/medieval_latina.
111
- Run `standardrb --fix` before submitting any changes, to help keep the code formatting uniform.
111
+ Run `bin/lint` before submitting any changes, to help keep the code formatting uniform.
112
112
 
113
113
  ## License
114
114
 
data/bin/lint CHANGED
@@ -3,4 +3,12 @@ set -euo pipefail
3
3
  IFS=$'\n\t'
4
4
  set -vx
5
5
 
6
- standardrb --fix
6
+ # Run StandardRB to lint Ruby files
7
+ echo "Linting Ruby files with StandardRB..."
8
+ bundle exec standardrb
9
+
10
+ # Run jsonlint to check the dictionary.json file
11
+ echo "Linting dictionary.json with jsonlint..."
12
+ bundle exec jsonlint data/dictionary.json
13
+
14
+ echo "Linting completed."
data/data/dictionary.json CHANGED
@@ -165,15 +165,15 @@
165
165
  "ipa": "ak",
166
166
  "position": 110},
167
167
  "alius":
168
- {"meaning": "other, another; ālias: at another time",
168
+ {"meaning": "other, another",
169
169
  "part": "Adjective",
170
170
  "gender": "masculine",
171
171
  "ipa": "aljus",
172
172
  "position": 111},
173
173
  "alia":
174
- {"meaning": "other, another; ālias: at another time", "part": "Adjective", "gender": "feminine", "ipa": "alja", "position": 112},
174
+ {"meaning": "other, another", "part": "Adjective", "gender": "feminine", "ipa": "alja", "position": 112},
175
175
  "aliud":
176
- {"meaning": "other, another; ālias: at another time", "part": "Adjective", "gender": "neuter", "ipa": "aljud", "position": 113},
176
+ {"meaning": "other, another", "part": "Adjective", "gender": "neuter", "ipa": "aljud", "position": 113},
177
177
  "rēs":
178
178
  {"meaning": "thing (rēs pūblica, commonwealth; rēs familiāris, family property, estate; rēs mīlitāris, art of war; rēs novae, revolution)",
179
179
  "part": "Noun",
@@ -221,12 +221,12 @@
221
221
  "ipa": "ne",
222
222
  "position": 145},
223
223
  "manus": {"meaning": "hand; band of men", "part": "Noun", "gender": "feminine", "ipa": "manus", "position": 146},
224
- "nūllus": {"meaning": "not any, no one", "part": "Adjective", "gender": "masculine", "ipa": "nullus", "position": 147},
225
- "nullus": {"meaning": "not any, no one", "part": "Adjective", "gender": "masculine", "ipa": "nullus", "position": 148},
226
- "nūlla": {"meaning": "not any, no one", "part": "Adjective", "gender": "feminine", "ipa": "nulla", "position": 149},
227
- "nulla": {"meaning": "not any, no one", "part": "Adjective", "gender": "feminine", "ipa": "nulla", "position": 150},
228
- "nūllum": {"meaning": "not any, no one", "part": "Adjective", "gender": "neuter", "ipa": "nullum", "position": 151},
229
- "nullum": {"meaning": "not any, no one", "part": "Adjective", "gender": "neuter", "ipa": "nullum", "position": 152},
224
+ "nūllus": {"meaning": "no, none", "part": "Adjective", "gender": "masculine", "ipa": "nullus", "position": 147},
225
+ "nullus": {"meaning": "no, none", "part": "Adjective", "gender": "masculine", "ipa": "nullus", "position": 148},
226
+ "nūlla": {"meaning": "no, none", "part": "Adjective", "gender": "feminine", "ipa": "nulla", "position": 149},
227
+ "nulla": {"meaning": "no, none", "part": "Adjective", "gender": "feminine", "ipa": "nulla", "position": 150},
228
+ "nūllum": {"meaning": "no, none", "part": "Adjective", "gender": "neuter", "ipa": "nullum", "position": 151},
229
+ "nullum": {"meaning": "no, none", "part": "Adjective", "gender": "neuter", "ipa": "nullum", "position": 152},
230
230
  "nunc": {"meaning": "now", "part": "Adverb", "ipa": "nunk", "position": 153},
231
231
  "nōs": {"meaning": "we", "part": "Pronoun", "ipa": "nos", "position": 154},
232
232
  "nos": {"meaning": "we", "part": "Pronoun", "ipa": "nos", "position": 155},
@@ -412,7 +412,7 @@
412
412
  "position": 313},
413
413
  "pro": {"meaning": "for, on behalf of, in proportion to", "part": "Preposition", "ipa": "pro", "position": 314},
414
414
  "quisquis": {"meaning": "whoever, whichever", "part": "Pronoun", "ipa": "kʷiskʷis", "position": 315},
415
- "quidquid": {"meaning": "whoever, whichever", "part": "Pronoun", "ipa": "kʷidkʷid", "position": 316},
415
+ "quidquid": {"meaning": "whatever; anything that ...", "part": "Pronoun", "ipa": "kʷidkʷid", "position": 316},
416
416
  "vos": {"meaning": "you (pl.)", "part": "Adjective", "declension": "1st and 2nd", "ipa": "vos", "position": 317},
417
417
  "capio": {"meaning": "seize", "part": "Verb", "conjugation": "3rd -iō", "ipa": "kapio", "position": 318},
418
418
  "capere": {"meaning": "seize", "part": "Verb", "conjugation": "3rd -iō", "ipa": "kapɛrɛ", "position": 319},
@@ -486,8 +486,8 @@
486
486
  "relinquō": {"meaning": "abandon", "part": "Verb", "conjugation": "3rd", "ipa": "rɛlinkʷoː", "position": 350},
487
487
  "relinquo": {"meaning": "abandon", "part": "Verb", "conjugation": "3rd", "ipa": "rɛlinkʷoː", "position": 351},
488
488
  "relinquere": {"meaning": "abandon", "part": "Verb", "conjugation": "3rd", "ipa": "rɛlinkʷɛrɛ", "position": 352},
489
- "relinquī": {"meaning": "abandon", "part": "Verb", "conjugation": "3rd", "ipa": "rɛlinkʷiː", "position": 353},
490
- "relinqui": {"meaning": "abandon", "part": "Verb", "conjugation": "3rd", "ipa": "rɛlinkʷiː", "position": 354},
489
+ "relinquī": {"meaning": "to be left (behind), remain", "part": "Verb", "conjugation": "3rd", "ipa": "rɛlinkʷiː", "position": 353},
490
+ "relinqui": {"meaning": "to be left (behind), remain", "part": "Verb", "conjugation": "3rd", "ipa": "rɛlinkʷiː", "position": 354},
491
491
  "relictum": {"meaning": "abandon", "part": "Verb", "conjugation": "3rd", "ipa": "rɛliktum", "position": 355},
492
492
  "saepe": {"meaning": "often", "part": "Adverb", "ipa": "sɛpɛ", "position": 356},
493
493
  "fīō": {"meaning": "become, happen, be done", "part": "Verb", "conjugation": "Irregular", "ipa": "fiːo", "position": 357},
@@ -4695,20 +4695,20 @@
4695
4695
  "terram": {"meaning": "earth, land, ground", "part": "Noun", "pronunciation": "terram", "position": 3147},
4696
4696
  "toga": {"meaning": "toga", "part": "Noun", "pronunciation": "toga", "position": 3148},
4697
4697
  "undeviginti": {"meaning": "nineteen", "part": "Adjective", "pronunciation": "oon-day-veejin-tee", "position": 3149},
4698
- "acerbus": { "part": "Adjective", "ipa": "ˈakɛrbʊs" },
4699
- "adultus": { "part": "Adjective", "ipa": "aˈdʊltʊs" },
4700
- "aeguus": { "part": "Adjective", "ipa": "ˈaɛɡuːs" },
4701
- "asper": { "part": "Adjective", "ipa": "ˈaspɛr" },
4702
- "avarus": { "part": "Adjective", "ipa": "ˈaʋarʊs" },
4703
- "bellus": { "part": "Adjective", "ipa": "ˈbɛllʊs" },
4704
- "civilis": { "part": "Adjective", "ipa": "ˈkɪʋɪlɪs" },
4705
- "conscius": { "part": "Adjective", "ipa": "ˈkɔnskɪʊs" },
4706
- "crudelis": { "part": "Adjective", "ipa": "ˈkrudɛlɪs" },
4707
- "cupidus": { "part": "Adjective", "ipa": "ˈkupɪdʊs" },
4708
- "demens": { "part": "Adjective", "ipa": "ˈdɛmɛns" },
4698
+ "acerbus": { "meaning": "bitter, harsh; severe", "part": "Adjective", "ipa": "ˈakɛrbʊs" },
4699
+ "adultus": { "meaning": "adult, mature; grown", "part": "Adjective", "ipa": "aˈdʊltʊs" },
4700
+ "aeguus": { "meaning": "equal, level; fair", "part": "Adjective", "ipa": "ˈaɛɡuːs" },
4701
+ "asper": { "meaning": "rough, harsh; difficult", "part": "Adjective", "ipa": "ˈaspɛr" },
4702
+ "avarus": { "meaning": "greedy, avaricious", "part": "Adjective", "ipa": "ˈaʋarʊs" },
4703
+ "bellus": { "meaning": "beautiful, lovely; fine", "part": "Adjective", "ipa": "ˈbɛllʊs" },
4704
+ "civilis": { "meaning": "civil, civic; courteous", "part": "Adjective", "ipa": "ˈkɪʋɪlɪs" },
4705
+ "conscius": { "meaning": "conscious; aware; guilty", "part": "Adjective", "ipa": "ˈkɔnskɪʊs" },
4706
+ "crudelis": { "meaning": "cruel, harsh", "part": "Adjective", "ipa": "ˈkrudɛlɪs" },
4707
+ "cupidus": { "meaning": "eager, desirous", "part": "Adjective", "ipa": "ˈkupɪdʊs" },
4708
+ "demens": { "meaning": "mad, insane; foolish", "part": "Adjective", "ipa": "ˈdɛmɛns" },
4709
4709
  "desidiosus": { "part": "Adjective", "ipa": "dɛsɪˈdjɔsʊs" },
4710
- "dignus": { "part": "Adjective", "ipa": "ˈdɪɲnʊs" },
4711
- "doctus": { "part": "Adjective", "ipa": "ˈdɔktʊs" },
4710
+ "dignus": { "meaning": "worthy, deserving", "part": "Adjective", "ipa": "ˈdɪɲnʊs" },
4711
+ "doctus": { "meaning": "learned, skilled", "part": "Adjective", "ipa": "ˈdɔktʊs" },
4712
4712
  "eloquens": { "part": "Adjective", "ipa": "ɛˈlɔkwɛns" },
4713
4713
  "eximius": { "part": "Adjective", "ipa": "ɛkˈsɪmɪʊs" },
4714
4714
  "fortunatus": { "part": "Adjective", "ipa": "fɔrtʊˈnatʊs" },
@@ -4745,44 +4745,44 @@
4745
4745
  "vehemens": { "part": "Adjective", "ipa": "ʋɛˈhɛmɛns" },
4746
4746
  "velox": { "part": "Adjective", "ipa": "ˈʋɛlɔks" },
4747
4747
  "vetus": { "part": "Adjective", "ipa": "ˈʋɛtʊs" },
4748
- "abhinc": { "part": "Adverb", "ipa": "ˈabɪŋk" },
4749
- "admodum": { "part": "Adverb", "ipa": "adˈmɔdʊm" },
4750
- "alias": { "part": "Adverb", "ipa": "ˈaliːas" },
4751
- "aliqua": { "part": "Adverb", "ipa": "ˈalikʷa" },
4752
- "amplius": { "part": "Adverb", "ipa": "ˈampliʊs" },
4753
- "bis": { "part": "Adverb", "ipa": "bɪs" },
4754
- "clam": { "part": "Adverb", "ipa": "klam" },
4755
- "comminus": { "part": "Adverb", "ipa": "kɔmˈmɪnʊs" },
4756
- "cotidie": { "part": "Adverb", "ipa": "kɔˈtidiɛ" },
4757
- "demisse": { "part": "Adverb", "ipa": "dɛˈmɪssɛ" },
4758
- "diligenter": { "part": "Adverb", "ipa": "dɪlɪˈɡɛntɛr" },
4759
- "fortasse": { "part": "Adverb", "ipa": "fɔrˈtassɛ" },
4760
- "fortiter": { "part": "Adverb", "ipa": "fɔrˈtitɛr" },
4761
- "graviter": { "part": "Adverb", "ipa": "ˈgraʋitɛr" },
4762
- "interdum": { "part": "Adverb", "ipa": "ɪntɛrˈdʊm" },
4763
- "intus": { "part": "Adverb", "ipa": "ˈintʊs" },
4764
- "palam": { "part": "Adverb", "ipa": "ˈpalam" },
4765
- "partim": { "part": "Adverb", "ipa": "ˈpartɪm" },
4766
- "passim": { "part": "Adverb", "ipa": "ˈpassɪm" },
4767
- "plane": { "part": "Adverb", "ipa": "ˈplanɛ" },
4768
- "recte": { "part": "Adverb", "ipa": "ˈrɛktɛ" },
4769
- "retro": { "part": "Adverb", "ipa": "ˈrɛtro" },
4770
- "statim": { "part": "Adverb", "ipa": "ˈstatɪm" },
4771
- "ultro": { "part": "Adverb", "ipa": "ˈʊltro" },
4772
- "utinam": { "part": "Adverb", "ipa": "ʊˈtinam" },
4773
- "accusator": { "part": "Noun", "ipa": "akˈkuːsator" },
4774
- "acerbitas": { "part": "Noun", "ipa": "aˈkɛrbitas" },
4775
- "adulatio": { "part": "Noun", "ipa": "aduˈlatio" },
4776
- "adulescens": { "part": "Noun", "ipa": "aduˈleskens" },
4777
- "adulescentia": { "part": "Noun", "ipa": "adulesˈkentia" },
4778
- "aedificium": { "part": "Noun", "ipa": "ɛːdiˈfikium" },
4779
- "aequitas": { "part": "Noun", "ipa": "ɛːˈkwitas" },
4780
- "agricola": { "part": "Noun", "ipa": "aˈɡrikola" },
4781
- "agricultura": { "part": "Noun", "ipa": "aɡrikulˈtura" },
4782
- "ambitio": { "part": "Noun", "ipa": "amˈbitio" },
4783
- "ancilla": { "part": "Noun", "ipa": "ˈankilla" },
4784
- "angellus": { "part": "Noun", "ipa": "anˈɡellus" },
4785
- "animal": { "part": "Noun", "ipa": "aˈnimal" },
4748
+ "abhinc": { "meaning": "ago, from now", "part": "Adverb", "ipa": "ˈabɪŋk" },
4749
+ "admodum": { "meaning": "very much, quite", "part": "Adverb", "ipa": "adˈmɔdʊm" },
4750
+ "alias": { "meaning": "at another time", "part": "Adverb", "ipa": "ˈaliːas" },
4751
+ "aliqua": { "meaning": "somehow, in some way", "part": "Adverb", "ipa": "ˈalikʷa" },
4752
+ "amplius": { "meaning": "more, further", "part": "Adverb", "ipa": "ˈampliʊs" },
4753
+ "bis": { "meaning": "twice, two times", "part": "Adverb", "ipa": "bɪs" },
4754
+ "clam": { "meaning": "secretly, stealthily", "part": "Adverb", "ipa": "klam" },
4755
+ "comminus": { "meaning": "at close quarters", "part": "Adverb", "ipa": "kɔmˈmɪnʊs" },
4756
+ "cotidie": { "meaning": "daily, every day", "part": "Adverb", "ipa": "kɔˈtidiɛ" },
4757
+ "demisse": { "meaning": "humbly, submissively", "part": "Adverb", "ipa": "dɛˈmɪssɛ" },
4758
+ "diligenter": { "meaning": "carefully, diligently", "part": "Adverb", "ipa": "dɪlɪˈɡɛntɛr" },
4759
+ "fortasse": { "meaning": "perhaps, maybe", "part": "Adverb", "ipa": "fɔrˈtassɛ" },
4760
+ "fortiter": { "meaning": "bravely, strongly", "part": "Adverb", "ipa": "fɔrˈtitɛr" },
4761
+ "graviter": { "meaning": "heavily, seriously", "part": "Adverb", "ipa": "ˈgraʋitɛr" },
4762
+ "interdum": { "meaning": "sometimes, at times", "part": "Adverb", "ipa": "ɪntɛrˈdʊm" },
4763
+ "intus": { "meaning": "within, inside", "part": "Adverb", "ipa": "ˈintʊs" },
4764
+ "palam": { "meaning": "openly, publicly", "part": "Adverb", "ipa": "ˈpalam" },
4765
+ "partim": { "meaning": "partly, in part", "part": "Adverb", "ipa": "ˈpartɪm" },
4766
+ "passim": { "meaning": "everywhere, throughout", "part": "Adverb", "ipa": "ˈpassɪm" },
4767
+ "plane": { "meaning": "clearly, plainly", "part": "Adverb", "ipa": "ˈplanɛ" },
4768
+ "recte": { "meaning": "rightly, correctly", "part": "Adverb", "ipa": "ˈrɛktɛ" },
4769
+ "retro": { "meaning": "backward, back", "part": "Adverb", "ipa": "ˈrɛtro" },
4770
+ "statim": { "meaning": "immediately, at once", "part": "Adverb", "ipa": "ˈstatɪm" },
4771
+ "ultro": { "meaning": "voluntarily, spontaneously", "part": "Adverb", "ipa": "ˈʊltro" },
4772
+ "utinam": { "meaning": "if only, would that", "part": "Adverb", "ipa": "ʊˈtinam" },
4773
+ "accusator": { "meaning": "accuser, prosecutor", "part": "Noun", "ipa": "akˈkuːsator" },
4774
+ "acerbitas": { "meaning": "bitterness, harshness", "part": "Noun", "ipa": "aˈkɛrbitas" },
4775
+ "adulatio": { "meaning": "flattery, fawning", "part": "Noun", "ipa": "aduˈlatio" },
4776
+ "adulescens": { "meaning": "young man, youth", "part": "Noun", "ipa": "aduˈleskens" },
4777
+ "adulescentia": { "meaning": "youth, young age", "part": "Noun", "ipa": "adulesˈkentia" },
4778
+ "aedificium": { "meaning": "building, structure", "part": "Noun", "ipa": "ɛːdiˈfikium" },
4779
+ "aequitas": { "meaning": "fairness, justice", "part": "Noun", "ipa": "ɛːˈkwitas" },
4780
+ "agricola": { "meaning": "farmer, cultivator", "part": "Noun", "ipa": "aˈɡrikola" },
4781
+ "agricultura": { "meaning": "agriculture, farming", "part": "Noun", "ipa": "aɡrikulˈtura" },
4782
+ "ambitio": { "meaning": "ambition; canvassing", "part": "Noun", "ipa": "amˈbitio" },
4783
+ "ancilla": { "meaning": "maidservant, slave girl", "part": "Noun", "ipa": "ˈankilla" },
4784
+ "angellus": { "meaning": "angel, messenger", "part": "Noun", "ipa": "anˈɡellus" },
4785
+ "animal": { "meaning": "animal, living being", "part": "Noun", "ipa": "aˈnimal" },
4786
4786
  "apparatus": { "part": "Noun", "ipa": "appaˈratus" },
4787
4787
  "aratrum": { "part": "Noun", "ipa": "ˈaratrum" },
4788
4788
  "arbitrium": { "part": "Noun", "ipa": "arˈbitrium" },
@@ -4882,28 +4882,28 @@
4882
4882
  "villa": { "part": "Noun", "ipa": "ˈvilla" },
4883
4883
  "vires": { "part": "Noun", "ipa": "ˈvires" },
4884
4884
  "visus": { "part": "Noun", "ipa": "ˈvisus" },
4885
- "accendo": { "part": "Verb", "ipa": "akˈtʃen.do" },
4886
- "ait": { "part": "Verb", "ipa": "ˈait" },
4887
- "alo": { "part": "Verb", "ipa": "ˈa.lo" },
4888
- "ambulo": { "part": "Verb", "ipa": "amˈbu.lo" },
4889
- "bello": { "part": "Verb", "ipa": "ˈbel.lo" },
4890
- "bibo": { "part": "Verb", "ipa": "ˈbi.bo" },
4891
- "caleo": { "part": "Verb", "ipa": "ˈka.le.o" },
4892
- "capto": { "part": "Verb", "ipa": "ˈkap.to" },
4893
- "carpo": { "part": "Verb", "ipa": "ˈkar.po" },
4894
- "castigo": { "part": "Verb", "ipa": "kasˈti.go" },
4895
- "cedo": { "part": "Verb", "ipa": "ˈtʃe.do" },
4896
- "ceno": { "part": "Verb", "ipa": "ˈtʃe.no" },
4897
- "censeo": { "part": "Verb", "ipa": "ˈtʃen.se.o" },
4898
- "cesso": { "part": "Verb", "ipa": "ˈtʃes.so" },
4899
- "cieo": { "part": "Verb", "ipa": "ˈtʃi.e.o" },
4900
- "cingo": { "part": "Verb", "ipa": "ˈtʃin.go" },
4901
- "cito": { "part": "Verb", "ipa": "ˈtʃi.to" },
4902
- "coco": { "part": "Verb", "ipa": "ˈko.ko" },
4903
- "coepio": { "part": "Verb", "ipa": "ˈtʃe.pi.o" },
4904
- "coerceo": { "part": "Verb", "ipa": "koˈer.tʃe.o" },
4905
- "compello": { "part": "Verb", "ipa": "komˈpel.lo" },
4906
- "concido": { "part": "Verb", "ipa": "konˈtʃi.do" },
4885
+ "accendo": { "meaning": "kindle, ignite; inflame", "part": "Verb", "ipa": "akˈtʃen.do" },
4886
+ "ait": { "meaning": "say, affirm", "part": "Verb", "ipa": "ˈait" },
4887
+ "alo": { "meaning": "nourish, feed; support", "part": "Verb", "ipa": "ˈa.lo" },
4888
+ "ambulo": { "meaning": "walk, go about", "part": "Verb", "ipa": "amˈbu.lo" },
4889
+ "bello": { "meaning": "wage war, fight", "part": "Verb", "ipa": "ˈbel.lo" },
4890
+ "bibo": { "meaning": "drink", "part": "Verb", "ipa": "ˈbi.bo" },
4891
+ "caleo": { "meaning": "be warm, glow", "part": "Verb", "ipa": "ˈka.le.o" },
4892
+ "capto": { "meaning": "seize, catch; try to get", "part": "Verb", "ipa": "ˈkap.to" },
4893
+ "carpo": { "meaning": "pluck, seize; criticize", "part": "Verb", "ipa": "ˈkar.po" },
4894
+ "castigo": { "meaning": "punish, chastise", "part": "Verb", "ipa": "kasˈti.go" },
4895
+ "cedo": { "meaning": "yield, give way; go", "part": "Verb", "ipa": "ˈtʃe.do" },
4896
+ "ceno": { "meaning": "dine, eat dinner", "part": "Verb", "ipa": "ˈtʃe.no" },
4897
+ "censeo": { "meaning": "assess; think, judge", "part": "Verb", "ipa": "ˈtʃen.se.o" },
4898
+ "cesso": { "meaning": "delay, be slow; cease", "part": "Verb", "ipa": "ˈtʃes.so" },
4899
+ "cieo": { "meaning": "move, set in motion", "part": "Verb", "ipa": "ˈtʃi.e.o" },
4900
+ "cingo": { "meaning": "gird, surround", "part": "Verb", "ipa": "ˈtʃin.go" },
4901
+ "cito": { "meaning": "summon, call upon", "part": "Verb", "ipa": "ˈtʃi.to" },
4902
+ "coco": { "meaning": "cook, prepare food", "part": "Verb", "ipa": "ˈko.ko" },
4903
+ "coepio": { "meaning": "begin, undertake", "part": "Verb", "ipa": "ˈtʃe.pi.o" },
4904
+ "coerceo": { "meaning": "confine, restrain", "part": "Verb", "ipa": "koˈer.tʃe.o" },
4905
+ "compello": { "meaning": "drive together; compel", "part": "Verb", "ipa": "komˈpel.lo" },
4906
+ "concido": { "meaning": "fall down, collapse", "part": "Verb", "ipa": "konˈtʃi.do" },
4907
4907
  "confido": { "part": "Verb", "ipa": "konˈfi.do" },
4908
4908
  "congrego": { "part": "Verb", "ipa": "konˈgre.go" },
4909
4909
  "conservo": { "part": "Verb", "ipa": "konˈser.vo" },
@@ -1,3 +1,3 @@
1
1
  class MedievalLatina
2
- VERSION = "3.0.0".freeze
2
+ VERSION = "3.1.1".freeze
3
3
  end
@@ -3,7 +3,6 @@ require "medieval_latina/initializer"
3
3
  require "medieval_latina/lexicon"
4
4
  require "medieval_latina/lexicon_builder"
5
5
  require "medieval_latina/version"
6
- require "set"
7
6
 
8
7
  class MedievalLatina
9
8
  def self.[](text)
@@ -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(">= 3.0.0")
18
+ spec.required_ruby_version = Gem::Requirement.new(">= 3.2.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
@@ -32,5 +32,6 @@ Gem::Specification.new do |spec|
32
32
  spec.add_development_dependency "rake", "~> 12.0"
33
33
  spec.add_development_dependency "rspec", "~> 3.0"
34
34
  spec.add_development_dependency "nokogiri"
35
- spec.add_development_dependency "standard"
35
+ spec.add_development_dependency "standardrb"
36
+ spec.add_development_dependency "jsonlint"
36
37
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: medieval_latina
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jayson Virissimo
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2024-04-28 00:00:00.000000000 Z
10
+ date: 2025-09-28 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: i18n
@@ -67,7 +66,21 @@ dependencies:
67
66
  - !ruby/object:Gem::Version
68
67
  version: '0'
69
68
  - !ruby/object:Gem::Dependency
70
- name: standard
69
+ name: standardrb
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ - !ruby/object:Gem::Dependency
83
+ name: jsonlint
71
84
  requirement: !ruby/object:Gem::Requirement
72
85
  requirements:
73
86
  - - ">="
@@ -89,12 +102,12 @@ executables: []
89
102
  extensions: []
90
103
  extra_rdoc_files: []
91
104
  files:
92
- - ".DS_Store"
93
105
  - ".github/workflows/tests.yml"
94
106
  - ".gitignore"
95
107
  - ".rspec"
96
108
  - ".standard.yml"
97
109
  - ".tool-versions"
110
+ - CLAUDE.md
98
111
  - Gemfile
99
112
  - Gemfile.lock
100
113
  - LICENSE.txt
@@ -129,7 +142,6 @@ metadata:
129
142
  homepage_uri: https://github.com/jaysonvirissimo/medieval_latina
130
143
  source_code_uri: https://github.com/jaysonvirissimo/medieval_latina
131
144
  changelog_uri: https://github.com/jaysonvirissimo/medieval_latina
132
- post_install_message:
133
145
  rdoc_options: []
134
146
  require_paths:
135
147
  - lib
@@ -137,15 +149,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
137
149
  requirements:
138
150
  - - ">="
139
151
  - !ruby/object:Gem::Version
140
- version: 3.0.0
152
+ version: 3.2.0
141
153
  required_rubygems_version: !ruby/object:Gem::Requirement
142
154
  requirements:
143
155
  - - ">="
144
156
  - !ruby/object:Gem::Version
145
157
  version: '0'
146
158
  requirements: []
147
- rubygems_version: 3.5.3
148
- signing_key:
159
+ rubygems_version: 3.6.2
149
160
  specification_version: 4
150
161
  summary: Transform medieval Latin text into phonetic English
151
162
  test_files: []
data/.DS_Store DELETED
Binary file