Merge branch 'dev'
This commit is contained in:
commit
f349d19117
@ -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 {
|
||||||
|
46
kanjidic.go
46
kanjidic.go
@ -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 == "" {
|
||||||
|
Loading…
Reference in New Issue
Block a user