-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsyllables.go
More file actions
65 lines (58 loc) · 1.28 KB
/
syllables.go
File metadata and controls
65 lines (58 loc) · 1.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package dajareGo
import "unicode/utf8"
type (
Syllable string
Syllables []Syllable
)
func NewSyllables(new string) Syllables {
var s Syllables
new = postNormalizer(new)
for _, char := range new {
isIndSyllables := false
indSyllables := [...]rune{'ン', 'ッ', 'ー', 'ャ', 'ュ', 'ョ', 'ァ', 'ィ', 'ゥ', 'ェ', 'ォ', 'ヮ'}
for _, indSyllable := range indSyllables {
if char == indSyllable {
isIndSyllables = true
}
}
isNonSyllables := false
nonSyllables := [...]rune{'、', '。'}
for _, nonSyllable := range nonSyllables {
if char == nonSyllable {
isNonSyllables = true
}
}
if isIndSyllables && len(s) > 0 {
s[len(s)-1] += katakana2Romaji(Syllable(char))
} else if !isNonSyllables {
s = append(s, katakana2Romaji(Syllable(char)))
}
}
return s
}
func (s Syllables) length() int {
return len([]Syllable(s))
}
func (s Syllable) length() int {
return utf8.RuneCountInString(string(s))
}
func (s *Syllable) removeDot() Syllable {
var new Syllable
for _, char := range *s {
if char != '.' {
new = Syllable(string(new) + string(char))
}
}
return new
}
func (s1 Syllables) equals(s2 Syllables) bool {
if s1.length() != s2.length() {
return false
}
for i := range s1 {
if s1[i] != s2[i] {
return false
}
}
return true
}