forked from jiro4989/ojosama
-
Notifications
You must be signed in to change notification settings - Fork 0
/
util.go
53 lines (47 loc) · 1.14 KB
/
util.go
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
package ojosama
// equalsFeatures は Features が等しいかどうかを判定する。
//
// featuresが空の時は * が設定されているため、 * が出現したら以降は無視する。
//
// 例えば {名詞,代名詞,一般,*,*} と {名詞,代名詞,一般} を比較したとき、単純にス
// ライスを完全一致で比較すると false になるが、この関数に関しては * 以降を無視
// するため true になる。
func equalsFeatures(a, b []string) bool {
var a2 []string
for _, v := range a {
if v == "*" {
break
}
a2 = append(a2, v)
}
a = a2
if len(a) != len(b) {
return false
}
for i, v := range a {
if v != b[i] {
return false
}
}
return true
}
// containsFeatures は a の中に b が含まれるかを判定する。
//
// features用。
func containsFeatures(a [][]string, b []string) bool {
for _, a2 := range a {
if equalsFeatures(b, a2) {
return true
}
}
return false
}
// containsString は a の中に b が含まれるかを判定する。
func containsString(a []string, b string) bool {
for _, a2 := range a {
if a2 == b {
return true
}
}
return false
}