phonetics 3.0.8 → 3.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.
@@ -67,7 +67,7 @@ module Phonetics
67
67
 
68
68
  def ruby_source
69
69
  location = caller_locations.first
70
- "#{location.path.split('/')[-4..-1].join('/')}:#{location.lineno}"
70
+ "#{location.path.split('/')[-4..].join('/')}:#{location.lineno}"
71
71
  end
72
72
 
73
73
  def indent(depth, line)
@@ -106,7 +106,11 @@ module Phonetics
106
106
 
107
107
  # When we have four values we can use the pythagorean theorem on them
108
108
  # (order doesn't matter)
109
- Math.sqrt((f1_distance**2) + (f2_distance**2))
109
+ sqrt = Math.sqrt((f1_distance**2) + (f2_distance**2))
110
+
111
+ # Vowels are more similiar to each other than consonants, so we apply a
112
+ # penalty softening here
113
+ sqrt / 2.0
110
114
  end
111
115
  end
112
116
 
@@ -155,9 +159,9 @@ module Phonetics
155
159
  manner.strip!
156
160
  positions.zip(columns).each do |position, phoneme_text|
157
161
  data = {
158
- position: position,
162
+ position: position,
159
163
  position_index: position_indexes[position],
160
- manner: manner,
164
+ manner: manner,
161
165
  }
162
166
  # If there is a character in the first byte then this articulation
163
167
  # has a voiceless phoneme. The symbol may use additional characters
@@ -165,7 +169,7 @@ module Phonetics
165
169
  unless phoneme_text[0] == ' '
166
170
  # Take the first non-blank character string
167
171
  symbol = phoneme_text.chars.take_while { |char| char != ' ' }.join
168
- phoneme_text = phoneme_text[symbol.chars.size..-1]
172
+ phoneme_text = phoneme_text[symbol.chars.size..]
169
173
 
170
174
  phonemes[symbol] = data.merge(voiced: false)
171
175
  end
@@ -29,6 +29,10 @@ module Phonetics
29
29
  nil
30
30
  end
31
31
 
32
+ def words
33
+ transcriptions.keys
34
+ end
35
+
32
36
  def transcriptions
33
37
  @transcriptions ||= begin
34
38
  download! unless File.exist?(TranscriptionFile)
@@ -120,10 +124,10 @@ module Phonetics
120
124
  next if max_rarity && (entry['rarity'].nil? || entry['rarity'] > max_rarity)
121
125
 
122
126
  entry_data = {
123
- word: key,
127
+ word: key,
124
128
  rarity: entry['rarity'],
125
129
  }
126
- entry.fetch('ipa', []).each do |_source, transcription|
130
+ entry.fetch('ipa', []).each_value do |transcription|
127
131
  base_trie = construct_trie(base_trie, transcription, entry_data)
128
132
  end
129
133
  end
@@ -155,7 +159,7 @@ module Phonetics
155
159
  next_char = chars_remaining[0]
156
160
  subtrie[next_char] ||= {}
157
161
  subtrie[next_char][:path] ||= subtrie[:path].to_s + next_char
158
- subtrie[next_char] = construct_trie(subtrie[next_char], chars_remaining[1..-1], entry_data, depth + 1)
162
+ subtrie[next_char] = construct_trie(subtrie[next_char], chars_remaining[1..], entry_data, depth + 1)
159
163
  end
160
164
  subtrie
161
165
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phonetics
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.8
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jack Danger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-02 00:00:00.000000000 Z
11
+ date: 2024-05-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -107,6 +107,7 @@ files:
107
107
  - ".gitignore"
108
108
  - ".rspec"
109
109
  - ".rubocop.yml"
110
+ - CHANGELOG
110
111
  - CODE_OF_CONDUCT.md
111
112
  - Dockerfile
112
113
  - Gemfile
@@ -156,7 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
156
157
  - !ruby/object:Gem::Version
157
158
  version: '0'
158
159
  requirements: []
159
- rubygems_version: 3.0.3.1
160
+ rubygems_version: 3.3.7
160
161
  signing_key:
161
162
  specification_version: 4
162
163
  summary: tools for linguistic code using the International Phonetic Alphabet