diff --git a/server.go b/server.go index c209766..9e6df29 100644 --- a/server.go +++ b/server.go @@ -7,7 +7,6 @@ import ( "strings" "time" - "github.com/ChaosNyaruko/ondict/sources" "github.com/ChaosNyaruko/ondict/util" ) @@ -49,11 +48,6 @@ func (s *proxy) ServeHTTP(w http.ResponseWriter, r *http.Request) { res := query(word, e, f) w.Header().Set("Content-Type", "text/html; charset=utf-8") w.Write([]byte(res)) - if f == "html" { - for _, dict := range *sources.G { - w.Write([]byte("")) - } - } // w.Write([]byte("")) // w.Write([]byte(fmt.Sprintf(``))) return diff --git a/sources/mdx.go b/sources/mdx.go index 9850c83..ecbdec6 100644 --- a/sources/mdx.go +++ b/sources/mdx.go @@ -3,6 +3,7 @@ package sources import ( "encoding/json" "errors" + "fmt" "log" "os" "strings" @@ -27,28 +28,42 @@ func (g *Dicts) Load() error { } func QueryMDX(word string, f string) string { - var defs []string + type mdxResult struct { + defs []string + css string + } + var defs []mdxResult for _, dict := range *G { - defs = append(defs, dict.Get(word)...) + defs = append(defs, mdxResult{dict.Get(word), dict.CSS()}) log.Printf("def of %q, %v: %q", dict.MdxFile, defs, word) } // TODO: put the render abstraction here? if f == "html" { // f for format var res []string - for _, def := range defs { - h := render.HTMLRender{Raw: def} - // m1 := regexp.MustCompile(`%s ", h.Render(), dict.css) + res = append(res, rs) + } } return strings.Join(res, "

") } var res string - for _, def := range defs { - fd := strings.NewReader(def) // TODO: find a "close" one when missing? - res += "\n---\n" + render.ParseMDX(fd, f) + for i, dict := range defs { + // TODO: different markdown parser here + for _, def := range dict.defs { + if i > 0 { + break + } + fd := strings.NewReader(def) // TODO: find a "close" one when missing? + res += "\n---\n" + render.ParseMDX(fd, f) + } } return res } @@ -61,6 +76,13 @@ func loadDecodedMdx(filePath string) Dict { log.Printf("JSON file not exist: %v", filePath+".json") m := &decoder.MDict{} err := m.Decode(filePath + ".mdx") + go func() { + if err := m.Decode(filePath + ".mdd"); err != nil { + log.Printf("[WARN] parse %v.mdd err: %v", filePath, err) + } else { + log.Printf("[INFO] successfully decode %v.mdd", filePath) + } + }() if err != nil { log.Fatalf("Failed to load mdx file[%v], err: %v", filePath, err) }