|
|
@ -1,6 +1,7 @@
|
|
|
|
package main
|
|
|
|
package main
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
import (
|
|
|
|
|
|
|
|
"encoding/gob"
|
|
|
|
"encoding/json"
|
|
|
|
"encoding/json"
|
|
|
|
"fmt"
|
|
|
|
"fmt"
|
|
|
|
"log"
|
|
|
|
"log"
|
|
|
@ -16,6 +17,21 @@ import (
|
|
|
|
var dict map[string]Entry
|
|
|
|
var dict map[string]Entry
|
|
|
|
|
|
|
|
|
|
|
|
func LoadDict() error {
|
|
|
|
func LoadDict() error {
|
|
|
|
|
|
|
|
// Loading from binary
|
|
|
|
|
|
|
|
const binaryFile = "dict.bin"
|
|
|
|
|
|
|
|
file, err := os.Open(binaryFile)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
|
|
if !os.IsNotExist(err) {
|
|
|
|
|
|
|
|
return err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
defer file.Close()
|
|
|
|
|
|
|
|
decoder := gob.NewDecoder(file)
|
|
|
|
|
|
|
|
err = decoder.Decode(&dict)
|
|
|
|
|
|
|
|
return err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Loading from JMdict
|
|
|
|
const jmdictFile = "JMdict.xml"
|
|
|
|
const jmdictFile = "JMdict.xml"
|
|
|
|
reader, err := os.Open(jmdictFile)
|
|
|
|
reader, err := os.Open(jmdictFile)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
@ -30,6 +46,19 @@ func LoadDict() error {
|
|
|
|
entry := ParseEntry(&jmdictEntry)
|
|
|
|
entry := ParseEntry(&jmdictEntry)
|
|
|
|
dict[entry.Kanji] = entry
|
|
|
|
dict[entry.Kanji] = entry
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Encoding to binary
|
|
|
|
|
|
|
|
file, err = os.Create(binaryFile)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
|
|
return err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
defer file.Close()
|
|
|
|
|
|
|
|
encoder := gob.NewEncoder(file)
|
|
|
|
|
|
|
|
err = encoder.Encode(&dict)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
|
|
return err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return nil
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|