1

Merge branch 'dev'

This commit is contained in:
Alex Yatskov 2017-06-26 20:35:56 -07:00
commit f349d19117
2 changed files with 42 additions and 16 deletions

View File

@ -82,6 +82,7 @@ type dbKanji struct {
Onyomi []string Onyomi []string
Kunyomi []string Kunyomi []string
Tags []string Tags []string
Stats map[string]string
Meanings []string Meanings []string
} }
@ -98,11 +99,16 @@ func (kanji *dbKanji) addTags(tags ...string) {
func (kanji dbKanjiList) crush() [][]interface{} { func (kanji dbKanjiList) crush() [][]interface{} {
var results [][]interface{} var results [][]interface{}
for _, k := range kanji { for _, k := range kanji {
tags := k.Tags
for name, value := range k.Stats {
tags = append(tags, fmt.Sprintf("%s:%s", name, value))
}
result := []interface{}{ result := []interface{}{
k.Character, k.Character,
strings.Join(k.Onyomi, " "), strings.Join(k.Onyomi, " "),
strings.Join(k.Kunyomi, " "), strings.Join(k.Kunyomi, " "),
strings.Join(k.Tags, " "), strings.Join(tags, " "),
} }
for _, meaning := range k.Meanings { for _, meaning := range k.Meanings {

View File

@ -23,24 +23,26 @@
package main package main
import ( import (
"fmt"
"os" "os"
"strconv" "strconv"
"github.com/FooSoft/jmdict" "github.com/FooSoft/jmdict"
) )
const KANJIDIC_REVISION = "kanjidic1" const KANJIDIC_REVISION = "kanjidic2"
func kanjidicExtractKanji(entry jmdict.KanjidicCharacter) dbKanji { func kanjidicExtractKanji(entry jmdict.KanjidicCharacter) dbKanji {
kanji := dbKanji{Character: entry.Literal} kanji := dbKanji{
Character: entry.Literal,
Stats: make(map[string]string),
}
if level := entry.Misc.JlptLevel; level != nil { if level := entry.Misc.JlptLevel; level != nil {
kanji.addTags(fmt.Sprintf("jlpt:%s", *level)) kanji.Stats["jlpt level"] = *level
} }
if grade := entry.Misc.Grade; grade != nil { if grade := entry.Misc.Grade; grade != nil {
kanji.addTags(fmt.Sprintf("grade:%s", *grade)) kanji.Stats["school grade"] = *grade
if gradeInt, err := strconv.Atoi(*grade); err == nil { if gradeInt, err := strconv.Atoi(*grade); err == nil {
if gradeInt >= 1 && gradeInt <= 8 { if gradeInt >= 1 && gradeInt <= 8 {
kanji.addTags("jouyou") kanji.addTags("jouyou")
@ -51,13 +53,11 @@ func kanjidicExtractKanji(entry jmdict.KanjidicCharacter) dbKanji {
} }
for _, number := range entry.DictionaryNumbers { for _, number := range entry.DictionaryNumbers {
if number.Type == "heisig" { kanji.Stats[number.Type] = number.Value
kanji.addTags(fmt.Sprintf("heisig:%s", number.Value))
}
} }
if counts := entry.Misc.StrokeCounts; len(counts) > 0 { if counts := entry.Misc.StrokeCounts; len(counts) > 0 {
kanji.addTags(fmt.Sprintf("strokes:%s", counts[0])) kanji.Stats["stroke count"] = counts[0]
} }
if entry.ReadingMeaning != nil { if entry.ReadingMeaning != nil {
@ -100,10 +100,30 @@ func kanjidicExportDb(inputPath, outputDir, title string, stride int, pretty boo
tagMeta := map[string]dbTagMeta{ tagMeta := map[string]dbTagMeta{
"jouyou": {Notes: "included in list of regular-use characters", Category: "frequent", Order: -5}, "jouyou": {Notes: "included in list of regular-use characters", Category: "frequent", Order: -5},
"jinmeiyou": {Notes: "included in list of characters for use in personal names", Category: "frequent", Order: -5}, "jinmeiyou": {Notes: "included in list of characters for use in personal names", Category: "frequent", Order: -5},
"jlpt": {Notes: "corresponding Japanese Language Proficiency Test level"}, "nelson_c": {Notes: "Modern Reader's Japanese-English Character Dictionary"},
"grade": {Notes: "school grade level at which the character is taught"}, "nelson_n": {Notes: "The New Nelson Japanese-English Character Dictionary"},
"strokes": {Notes: "number of strokes needed to write the character"}, "halpern_njecd": {Notes: "New Japanese-English Character Dictionary"},
"heisig": {Notes: "frame number in Remembering the Kanji"}, "halpern_kkd": {Notes: "Kodansha Kanji Dictionary"},
"halpern_kkld": {Notes: "Kanji Learners Dictionary"},
"halpern_kkld_2ed": {Notes: "Kanji Learners Dictionary"},
"heisig": {Notes: "Remembering The Kanji"},
"heisig6": {Notes: "Remembering The Kanji, Sixth Ed."},
"gakken": {Notes: "A New Dictionary of Kanji Usage"},
"oneill_names": {Notes: "Japanese Names"},
"oneill_kk": {Notes: "Essential Kanji"},
"moro": {Notes: "Daikanwajiten"},
"henshall": {Notes: "A Guide To Remembering Japanese Characters"},
"sh_kk": {Notes: "Kanji and Kana"},
"sh_kk2": {Notes: "Kanji and Kana"},
"sakade": {Notes: "A Guide To Reading and Writing Japanese"},
"jf_cards": {Notes: "Japanese Kanji Flashcards"},
"henshall3": {Notes: "A Guide To Reading and Writing Japanese"},
"tutt_cards": {Notes: "Tuttle Kanji Cards"},
"crowley": {Notes: "The Kanji Way to Japanese Language Power"},
"kanji_in_context": {Notes: "Kanji in Context"},
"busy_people": {Notes: "Japanese For Busy People"},
"kodansha_compact": {Notes: "Kodansha Compact Kanji Guide"},
"maniette": {Notes: "Les Kanjis dans la tete"},
} }
if title == "" { if title == "" {