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)
}