Skip to content

Commit

Permalink
load mdd asynchronously
Browse files Browse the repository at this point in the history
  • Loading branch information
ChaosNyaruko committed Dec 28, 2023
1 parent 72a943d commit 6628d38
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 17 deletions.
6 changes: 0 additions & 6 deletions server.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import (
"strings"
"time"

"github.com/ChaosNyaruko/ondict/sources"
"github.com/ChaosNyaruko/ondict/util"
)

Expand Down Expand Up @@ -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("<style>" + dict.CSS() + "</style>"))
}
}
// w.Write([]byte("<style>" + odecss + "</style>"))
// w.Write([]byte(fmt.Sprintf(`<link ref="stylesheet" type="text/css", href=/d/static/oald9.css />`)))
return
Expand Down
44 changes: 33 additions & 11 deletions sources/mdx.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package sources
import (
"encoding/json"
"errors"
"fmt"
"log"
"os"
"strings"
Expand All @@ -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(`<img src="(.*?)\.png" style`)
// replaceImg := m1.ReplaceAllString(def, `<img src="`+"data/"+`${1}.png" style`)
// log.Printf("try to replace %v", replaceImg)
res = append(res, h.Render())
for _, dict := range defs {
for _, def := range dict.defs {
h := render.HTMLRender{Raw: def}
// m1 := regexp.MustCompile(`<img src="(.*?)\.png" style`)
// replaceImg := m1.ReplaceAllString(def, `<img src="`+"data/"+`${1}.png" style`)
// log.Printf("try to replace %v", replaceImg)
// TODO: it might be overriden
rs := fmt.Sprintf("<div>%s<style>%s</style></div> ", h.Render(), dict.css)
res = append(res, rs)
}
}
return strings.Join(res, "<br><br>")
}

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
}
Expand All @@ -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)
}
Expand Down

0 comments on commit 6628d38

Please sign in to comment.