forked from varnamproject/libvarnam-golang
/
libvarnam.go
47 lines (40 loc) · 1.11 KB
/
libvarnam.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
package libvarnam
// #cgo pkg-config: varnam
// #include <stdio.h>
// #include <varnam.h>
import "C"
type Varnam struct {
handle *C.varnam;
}
type VarnamError struct {
errorCode int
message string
}
func (e *VarnamError) Error() string {
return e.message
}
func (v *Varnam) Transliterate(text string) []string {
var va *C.varray
C.varnam_transliterate (v.handle, C.CString (text), &va);
var i C.int
var array []string
for i = 0; i < C.varray_length (va); i++ {
word := (*C.vword) (C.varray_get (va, i));
array = append (array, C.GoString (word.text));
}
return array
}
func (v *Varnam) ReverseTransliterate(text string) string {
var output *C.char
C.varnam_reverse_transliterate (v.handle, C.CString (text), &output);
return C.GoString (output);
}
func Init(langCode string) (*Varnam, *VarnamError) {
var v *C.varnam;
var msg *C.char
rc := C.varnam_init_from_lang (C.CString (langCode), &v, &msg)
if (rc != 0) {
return nil, &VarnamError {errorCode: (int) (rc), message: C.GoString (msg)}
}
return &Varnam {handle: v}, nil
}