voxbi 0.3.0 → 1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -2
- data/bin/voxbi +3 -2
- data/data/{paires_disponibles.csv → available_pairs.csv} +1 -0
- data/data/conversion.csv +10 -10
- data/data/{phono.json → dictionary.json} +1 -1
- data/data/exceptions.csv +1 -0
- data/data/{liaisons.csv → linkage.csv} +0 -0
- data/data/pairs.wav +0 -0
- data/data/{paires → pairs}/_.ogg +0 -0
- data/data/{paires → pairs}/a.ogg +0 -0
- data/data/pairs/b.ogg +0 -0
- data/data/{paires → pairs}/ba-old1.ogg +0 -0
- data/data/{paires → pairs}/ba.ogg +0 -0
- data/data/{paires → pairs}/be.ogg +0 -0
- data/data/{paires → pairs}/bi-old1.ogg +0 -0
- data/data/{paires → pairs}/bi.ogg +0 -0
- data/data/{paires → pairs}/bibi.ogg +0 -0
- data/data/{paires → pairs}/bo.ogg +0 -0
- data/data/{paires → pairs}/bu.ogg +0 -0
- data/data/{paires → pairs}/by.ogg +0 -0
- data/data/{paires → pairs}/b/305/223.ogg +0 -0
- data/data/{paires → pairs}/b/311/224.ogg +0 -0
- data/data/{paires → pairs}/b/316/261.ogg +0 -0
- data/data/{paires → pairs}/b/317/203.ogg +0 -0
- data/data/{paires → pairs}/b/317/265.ogg +0 -0
- data/data/{paires → pairs}/d.ogg +0 -0
- data/data/{paires → pairs}/da.ogg +0 -0
- data/data/{paires → pairs}/de.ogg +0 -0
- data/data/{paires → pairs}/di.ogg +0 -0
- data/data/{paires → pairs}/do.ogg +0 -0
- data/data/{paires → pairs}/du.ogg +0 -0
- data/data/{paires → pairs}/dy.ogg +0 -0
- data/data/{paires → pairs}/d/303/270.ogg +0 -0
- data/data/{paires → pairs}/d/305/223.ogg +0 -0
- data/data/{paires → pairs}/d/311/224.ogg +0 -0
- data/data/{paires → pairs}/d/316/261.ogg +0 -0
- data/data/{paires → pairs}/d/317/203.ogg +0 -0
- data/data/pairs/d/317/265.ogg +0 -0
- data/data/{paires → pairs}/e.ogg +0 -0
- data/data/{paires → pairs}/error.ogg +0 -0
- data/data/{paires → pairs}/f.ogg +0 -0
- data/data/{paires → pairs}/fa.ogg +0 -0
- data/data/{paires → pairs}/fe.ogg +0 -0
- data/data/{paires → pairs}/fi.ogg +0 -0
- data/data/{paires → pairs}/fo.ogg +0 -0
- data/data/{paires → pairs}/fu.ogg +0 -0
- data/data/{paires → pairs}/fy.ogg +0 -0
- data/data/{paires → pairs}/f/303/270.ogg +0 -0
- data/data/{paires → pairs}/f/305/223.ogg +0 -0
- data/data/{paires → pairs}/f/311/224.ogg +0 -0
- data/data/{paires → pairs}/f/311/233.ogg +0 -0
- data/data/{paires → pairs}/f/316/261.ogg +0 -0
- data/data/{paires → pairs}/f/317/203.ogg +0 -0
- data/data/{paires → pairs}/f/317/265.ogg +0 -0
- data/data/{paires → pairs}/g.ogg +0 -0
- data/data/{paires → pairs}/ga.ogg +0 -0
- data/data/{paires → pairs}/ge.ogg +0 -0
- data/data/{paires → pairs}/gi.ogg +0 -0
- data/data/{paires → pairs}/go.ogg +0 -0
- data/data/{paires → pairs}/gu.ogg +0 -0
- data/data/{paires → pairs}/gy.ogg +0 -0
- data/data/{paires → pairs}/g/305/223.ogg +0 -0
- data/data/{paires → pairs}/g/311/224.ogg +0 -0
- data/data/{paires → pairs}/g/311/233.ogg +0 -0
- data/data/{paires → pairs}/g/317/203.ogg +0 -0
- data/data/{paires → pairs}/i.ogg +0 -0
- data/data/{paires → pairs}/il.ogg +0 -0
- data/data/{paires → pairs}/j.ogg +0 -0
- data/data/{paires → pairs}/je.ogg +0 -0
- data/data/{paires → pairs}/jo.ogg +0 -0
- data/data/{paires → pairs}/ju.ogg +0 -0
- data/data/{paires → pairs}/j/303/270.ogg +0 -0
- data/data/{paires → pairs}/j/311/224.ogg +0 -0
- data/data/{paires → pairs}/j/311/233.ogg +0 -0
- data/data/{paires → pairs}/j/316/261.ogg +0 -0
- data/data/{paires → pairs}/j/317/203.ogg +0 -0
- data/data/{paires → pairs}/j/317/265.ogg +0 -0
- data/data/{paires → pairs}/k.ogg +0 -0
- data/data/{paires → pairs}/ka.ogg +0 -0
- data/data/{paires → pairs}/ka.oggpaires.wav +0 -0
- data/data/{paires → pairs}/ke.ogg +0 -0
- data/data/{paires → pairs}/ki.ogg +0 -0
- data/data/{paires → pairs}/ko.ogg +0 -0
- data/data/{paires → pairs}/ku.ogg +0 -0
- data/data/{paires → pairs}/ky.ogg +0 -0
- data/data/{paires → pairs}/k/303/270.ogg +0 -0
- data/data/{paires → pairs}/k/305/223.ogg +0 -0
- data/data/{paires → pairs}/k/311/224.ogg +0 -0
- data/data/{paires → pairs}/k/311/233.ogg +0 -0
- data/data/{paires → pairs}/k/316/261.ogg +0 -0
- data/data/{paires → pairs}/k/317/200.ogg +0 -0
- data/data/{paires → pairs}/k/317/203.ogg +0 -0
- data/data/{paires → pairs}/k/317/265.ogg +0 -0
- data/data/{paires → pairs}/l.ogg +0 -0
- data/data/{paires → pairs}/la.ogg +0 -0
- data/data/{paires → pairs}/le.ogg +0 -0
- data/data/{paires → pairs}/li.ogg +0 -0
- data/data/{paires → pairs}/lo.ogg +0 -0
- data/data/{paires → pairs}/lu.ogg +0 -0
- data/data/{paires → pairs}/ly.ogg +0 -0
- data/data/{paires → pairs}/l/303/270.ogg +0 -0
- data/data/{paires → pairs}/l/305/223.ogg +0 -0
- data/data/{paires → pairs}/l/311/224.ogg +0 -0
- data/data/{paires → pairs}/l/311/233.ogg +0 -0
- data/data/{paires → pairs}/l/316/261.ogg +0 -0
- data/data/{paires → pairs}/l/317/203.ogg +0 -0
- data/data/{paires → pairs}/l/317/265.ogg +0 -0
- data/data/{paires → pairs}/m.ogg +0 -0
- data/data/{paires → pairs}/ma.ogg +0 -0
- data/data/{paires → pairs}/me.ogg +0 -0
- data/data/{paires → pairs}/mi.ogg +0 -0
- data/data/{paires → pairs}/mo.ogg +0 -0
- data/data/{paires → pairs}/mu.ogg +0 -0
- data/data/{paires → pairs}/my.ogg +0 -0
- data/data/{paires → pairs}/m/305/223.ogg +0 -0
- data/data/{paires → pairs}/m/311/224.ogg +0 -0
- data/data/{paires → pairs}/m/311/233.ogg +0 -0
- data/data/{paires → pairs}/m/316/261.ogg +0 -0
- data/data/{paires → pairs}/m/317/203.ogg +0 -0
- data/data/{paires → pairs}/m/317/265.ogg +0 -0
- data/data/{paires → pairs}/n(old).ogg +0 -0
- data/data/{paires → pairs}/n.ogg +0 -0
- data/data/{paires → pairs}/na.ogg +0 -0
- data/data/{paires → pairs}/ne.ogg +0 -0
- data/data/{paires → pairs}/ni.ogg +0 -0
- data/data/{paires → pairs}/nu.ogg +0 -0
- data/data/{paires → pairs}/ny.ogg +0 -0
- data/data/{paires → pairs}/n/305/223.ogg +0 -0
- data/data/{paires → pairs}/n/311/224.ogg +0 -0
- data/data/{paires → pairs}/n/311/233.ogg +0 -0
- data/data/{paires → pairs}/n/316/261.ogg +0 -0
- data/data/{paires → pairs}/n/317/203.ogg +0 -0
- data/data/{paires → pairs}/n/317/265.ogg +0 -0
- data/data/{paires → pairs}/o.ogg +0 -0
- data/data/{paires → pairs}/out.ogg +0 -0
- data/data/{paires → pairs}/p.ogg +0 -0
- data/data/{paires → pairs}/pa.ogg +0 -0
- data/data/{paires → pairs}/pe.ogg +0 -0
- data/data/{paires → pairs}/phoque.ogg +0 -0
- data/data/{paires → pairs}/pi.ogg +0 -0
- data/data/{paires → pairs}/po.ogg +0 -0
- data/data/{paires → pairs}/pu.ogg +0 -0
- data/data/{paires → pairs}/py.ogg +0 -0
- data/data/{paires → pairs}/p/303/270.ogg +0 -0
- data/data/{paires → pairs}/p/305/223.ogg +0 -0
- data/data/{paires → pairs}/p/311/224.ogg +0 -0
- data/data/{paires → pairs}/p/311/233.ogg +0 -0
- data/data/{paires → pairs}/p/316/261.ogg +0 -0
- data/data/{paires → pairs}/p/317/203.ogg +0 -0
- data/data/{paires → pairs}/p/317/265.ogg +0 -0
- data/data/{paires → pairs}/r.ogg +0 -0
- data/data/{paires → pairs}/ra.ogg +0 -0
- data/data/{paires → pairs}/re.ogg +0 -0
- data/data/{paires → pairs}/ri.ogg +0 -0
- data/data/{paires → pairs}/ro.ogg +0 -0
- data/data/{paires → pairs}/ru.ogg +0 -0
- data/data/{paires → pairs}/ry.ogg +0 -0
- data/data/{paires → pairs}/r/305/223.ogg +0 -0
- data/data/{paires → pairs}/r/311/224.ogg +0 -0
- data/data/{paires → pairs}/r/311/233.ogg +0 -0
- data/data/{paires → pairs}/r/316/261.ogg +0 -0
- data/data/{paires → pairs}/r/317/203.ogg +0 -0
- data/data/{paires → pairs}/r/317/265.ogg +0 -0
- data/data/{paires → pairs}/s.ogg +0 -0
- data/data/{paires → pairs}/sa.ogg +0 -0
- data/data/{paires → pairs}/se.ogg +0 -0
- data/data/{paires → pairs}/si.ogg +0 -0
- data/data/{paires → pairs}/so.ogg +0 -0
- data/data/{paires → pairs}/su.ogg +0 -0
- data/data/{paires → pairs}/sy.ogg +0 -0
- data/data/{paires → pairs}/s/305/223.ogg +0 -0
- data/data/{paires → pairs}/s/311/224.ogg +0 -0
- data/data/{paires → pairs}/s/311/233.ogg +0 -0
- data/data/{paires → pairs}/s/316/261.ogg +0 -0
- data/data/{paires → pairs}/s/317/203.ogg +0 -0
- data/data/{paires → pairs}/s/317/265.ogg +0 -0
- data/data/{paires → pairs}/t.ogg +0 -0
- data/data/{paires → pairs}/ta.ogg +0 -0
- data/data/{paires → pairs}/te.ogg +0 -0
- data/data/{paires → pairs}/ti.ogg +0 -0
- data/data/{paires → pairs}/to.ogg +0 -0
- data/data/{paires → pairs}/tu.ogg +0 -0
- data/data/{paires → pairs}/ty.ogg +0 -0
- data/data/{paires → pairs}/t/303/270.ogg +0 -0
- data/data/{paires → pairs}/t/305/223.ogg +0 -0
- data/data/{paires → pairs}/t/311/224.ogg +0 -0
- data/data/{paires → pairs}/t/311/233.ogg +0 -0
- data/data/{paires → pairs}/t/316/261.ogg +0 -0
- data/data/{paires → pairs}/t/317/203.ogg +0 -0
- data/data/{paires → pairs}/t/317/265.ogg +0 -0
- data/data/{paires → pairs}/u.ogg +0 -0
- data/data/{paires → pairs}/v.ogg +0 -0
- data/data/{paires → pairs}/va.ogg +0 -0
- data/data/{paires → pairs}/ve.ogg +0 -0
- data/data/{paires → pairs}/vi.ogg +0 -0
- data/data/{paires → pairs}/vo.ogg +0 -0
- data/data/{paires → pairs}/vu.ogg +0 -0
- data/data/{paires → pairs}/vy.ogg +0 -0
- data/data/{paires → pairs}/v/303/270.ogg +0 -0
- data/data/{paires → pairs}/v/305/223.ogg +0 -0
- data/data/{paires → pairs}/v/311/224.ogg +0 -0
- data/data/{paires → pairs}/v/311/233.ogg +0 -0
- data/data/{paires → pairs}/v/316/261.ogg +0 -0
- data/data/{paires → pairs}/v/317/203.ogg +0 -0
- data/data/{paires → pairs}/v/317/265.ogg +0 -0
- data/data/{paires → pairs}/w.ogg +0 -0
- data/data/{paires → pairs}/wa.ogg +0 -0
- data/data/{paires → pairs}/we.ogg +0 -0
- data/data/{paires → pairs}/wi.ogg +0 -0
- data/data/{paires → pairs}/w/311/233.ogg +0 -0
- data/data/{paires → pairs}/w/316/261.ogg +0 -0
- data/data/{paires → pairs}/w/317/203.ogg +0 -0
- data/data/{paires → pairs}/w/317/265.ogg +0 -0
- data/data/{paires → pairs}/y.ogg +0 -0
- data/data/{paires → pairs}/z.ogg +0 -0
- data/data/{paires → pairs}/za.ogg +0 -0
- data/data/{paires → pairs}/ze.ogg +0 -0
- data/data/{paires → pairs}/zi.ogg +0 -0
- data/data/{paires → pairs}/zo.ogg +0 -0
- data/data/{paires → pairs}/zu.ogg +0 -0
- data/data/{paires → pairs}/zy.ogg +0 -0
- data/data/{paires → pairs}/z/311/224.ogg +0 -0
- data/data/{paires → pairs}/z/311/233.ogg +0 -0
- data/data/{paires → pairs}/z/316/261.ogg +0 -0
- data/data/{paires → pairs}/z/317/203.ogg +0 -0
- data/data/{paires → pairs}/z/317/265.ogg +0 -0
- data/data/{paires → pairs}//302/265.ogg +0 -0
- data/data/{paires → pairs}//302/265i.ogg +0 -0
- data/data/{paires → pairs}//303/270.ogg +0 -0
- data/data/{paires → pairs}//305/223.ogg +0 -0
- data/data/{paires → pairs}//311/224.ogg +0 -0
- data/data/{paires → pairs}//311/233.ogg +0 -0
- data/data/{paires → pairs}//311/262.ogg +0 -0
- data/data/{paires → pairs}//312/203.ogg +0 -0
- data/data/{paires → pairs}//312/203a.ogg +0 -0
- data/data/{paires → pairs}//312/203e.ogg +0 -0
- data/data/{paires → pairs}//312/203i.ogg +0 -0
- data/data/{paires → pairs}//312/203o.ogg +0 -0
- data/data/{paires → pairs}//312/203u.ogg +0 -0
- data/data/{paires → pairs}//312/203/311/233.ogg +0 -0
- data/data/{paires → pairs}//312/203/316/261.ogg +0 -0
- data/data/{paires → pairs}//312/222.ogg +0 -0
- data/data/{paires → pairs}//312/222a.ogg +0 -0
- data/data/{paires → pairs}//312/222e.ogg +0 -0
- data/data/{paires → pairs}//312/222i.ogg +0 -0
- data/data/{paires → pairs}//312/222o.ogg +0 -0
- data/data/{paires → pairs}//312/222u.ogg +0 -0
- data/data/{paires → pairs}//312/222y.ogg +0 -0
- data/data/{paires → pairs}//312/222/303/270.ogg +0 -0
- data/data/{paires → pairs}//312/222/305/223.ogg +0 -0
- data/data/{paires → pairs}//312/222/311/224.ogg +0 -0
- data/data/{paires → pairs}//312/222/311/233.ogg +0 -0
- data/data/{paires → pairs}//312/222/316/261.ogg +0 -0
- data/data/{paires → pairs}//316/261.ogg +0 -0
- data/data/{paires → pairs}//317/200.ogg +0 -0
- data/data/{paires → pairs}//317/203.ogg +0 -0
- data/data/{paires → pairs}//317/265.ogg +0 -0
- data/lib/extensions/string.rb +7 -0
- data/lib/modules/rulable.rb +47 -0
- data/lib/services/get_pairs_service.rb +29 -0
- data/lib/services/get_syllables_service.rb +43 -0
- data/lib/services/linkage_service.rb +40 -0
- data/lib/services/phonetics_converter_service.rb +42 -0
- data/lib/services/prepare_text_service.rb +49 -0
- data/lib/voxbi.rb +40 -87
- data/voxbi.gemspec +12 -12
- metadata +288 -266
- data/data/paires/b.ogg +0 -0
- data/lib/special_chars.rb +0 -1
File without changes
|
File without changes
|
data/data/{paires → pairs}/o.ogg
RENAMED
File without changes
|
File without changes
|
data/data/{paires → pairs}/p.ogg
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/data/{paires → pairs}/r.ogg
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/data/{paires → pairs}/s.ogg
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/data/{paires → pairs}/t.ogg
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/data/{paires → pairs}/u.ogg
RENAMED
File without changes
|
data/data/{paires → pairs}/v.ogg
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/data/{paires → pairs}/w.ogg
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/data/{paires → pairs}/y.ogg
RENAMED
File without changes
|
data/data/{paires → pairs}/z.ogg
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require "json"
|
2
|
+
require "csv"
|
3
|
+
|
4
|
+
module Rulable
|
5
|
+
DATA_PATH = File.expand_path('../../data', __dir__)
|
6
|
+
CSV_FILENAMES = %w(conversion linkage exceptions available_pairs).freeze
|
7
|
+
JSON_FILENAMES = %w(dictionary).freeze
|
8
|
+
|
9
|
+
CSV_FILENAMES.each do |filename|
|
10
|
+
define_method(filename) do
|
11
|
+
memoize_file_content(filename, :csv)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
JSON_FILENAMES.each do |filename|
|
16
|
+
define_method(filename) do
|
17
|
+
memoize_file_content(filename, :json)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def memoize_file_content(filename, file_format)
|
24
|
+
instance_variable_get("@#{filename}") ||
|
25
|
+
instance_variable_set("@#{filename}", parse_rule_file(filename, file_format))
|
26
|
+
end
|
27
|
+
|
28
|
+
def parse_rule_file(filename, file_format)
|
29
|
+
absolute_file_path = absolute_path_for(filename, file_format)
|
30
|
+
|
31
|
+
case file_format
|
32
|
+
when :csv then parse_csv(absolute_file_path)
|
33
|
+
when :json then JSON.parse(File.read(absolute_file_path))
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def parse_csv(file_path)
|
38
|
+
parsed_csv = CSV.read(file_path, col_sep: '#')
|
39
|
+
|
40
|
+
parsed_csv.first.length > 1 ? Hash[parsed_csv] : parsed_csv.flatten
|
41
|
+
end
|
42
|
+
|
43
|
+
def absolute_path_for(filename, file_format)
|
44
|
+
"#{DATA_PATH}/#{filename}" + ".#{file_format}"
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
class GetPairsService
|
2
|
+
include Rulable
|
3
|
+
|
4
|
+
attr_reader :phonetic_text
|
5
|
+
|
6
|
+
def initialize(phonetic_text)
|
7
|
+
@phonetic_text = phonetic_text
|
8
|
+
end
|
9
|
+
|
10
|
+
def call
|
11
|
+
phonetic_text.map do |phonetic_word|
|
12
|
+
available_pairs_for(phonetic_word)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def available_pairs_for(phonetic_word)
|
19
|
+
word = phonetic_word.dup
|
20
|
+
|
21
|
+
[].tap do |pairs|
|
22
|
+
while word.length != 0
|
23
|
+
matching_pair = available_pairs.detect{ |pair| word.match(/^#{pair}/) }
|
24
|
+
word.sub!(/^#{matching_pair}/,"")
|
25
|
+
pairs << matching_pair
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
class GetSyllablesService
|
2
|
+
|
3
|
+
VOCALIC_PHONEMS_REGEXP = /[ɛøαϵiaoɔσyuœπe]/
|
4
|
+
GLIDES_REGEXP = /[µwj]/
|
5
|
+
|
6
|
+
attr_reader :phonetic_text
|
7
|
+
|
8
|
+
def initialize(phonetic_text)
|
9
|
+
@phonetic_text = phonetic_text
|
10
|
+
end
|
11
|
+
|
12
|
+
def call
|
13
|
+
get_pairs_for(phonetic_text).map do |word_pairs|
|
14
|
+
get_syllables_for(word_pairs)
|
15
|
+
end.flatten.reject(&:blank?)
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def get_syllables_for(pairs)
|
21
|
+
[''].tap do |syllables|
|
22
|
+
pairs.each do |pair|
|
23
|
+
if has_vocalic_phonem?(syllables.last) && has_vocalic_phonem?(pair)
|
24
|
+
syllables << pair
|
25
|
+
else
|
26
|
+
syllables.last << pair
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def get_pairs_for(text)
|
33
|
+
GetPairsService.new(text).call
|
34
|
+
end
|
35
|
+
|
36
|
+
def has_vocalic_phonem?(pair)
|
37
|
+
!!(pair =~ VOCALIC_PHONEMS_REGEXP)
|
38
|
+
end
|
39
|
+
|
40
|
+
def is_glide?(pair)
|
41
|
+
pair.length == 1 && !!(pair =~ GLIDES_REGEXP)
|
42
|
+
end
|
43
|
+
end
|