mirror of
https://git.mills.io/prologic/zs
synced 2024-11-25 14:56:12 +03:00
rewritted default variables assignment
This commit is contained in:
parent
9df80c20d5
commit
08b4928c10
41
zs.go
41
zs.go
@ -32,8 +32,15 @@ func split2(s, delim string) (string, string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func md(s string) (map[string]string, string) {
|
func md(path, s string) (map[string]string, string) {
|
||||||
v := map[string]string{}
|
url := path[:len(path)-len(filepath.Ext(path))] + ".html"
|
||||||
|
v := map[string]string{
|
||||||
|
"file": path,
|
||||||
|
"url": url,
|
||||||
|
"outdir": PUBDIR,
|
||||||
|
"output": filepath.Join(PUBDIR, url),
|
||||||
|
"layout": "index.html",
|
||||||
|
}
|
||||||
if strings.Index(s, "\n\n") == -1 {
|
if strings.Index(s, "\n\n") == -1 {
|
||||||
return map[string]string{}, s
|
return map[string]string{}, s
|
||||||
}
|
}
|
||||||
@ -42,6 +49,9 @@ func md(s string) (map[string]string, string) {
|
|||||||
key, value := split2(line, ":")
|
key, value := split2(line, ":")
|
||||||
v[strings.ToLower(strings.TrimSpace(key))] = strings.TrimSpace(value)
|
v[strings.ToLower(strings.TrimSpace(key))] = strings.TrimSpace(value)
|
||||||
}
|
}
|
||||||
|
if strings.HasPrefix(v["url"], "./") {
|
||||||
|
v["url"] = v["url"][2:]
|
||||||
|
}
|
||||||
return v, body
|
return v, body
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -128,8 +138,7 @@ func buildMarkdown(path string) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
v, body := md(string(b))
|
v, body := md(path, string(b))
|
||||||
defaultVars(v, path)
|
|
||||||
content, err := render(body, v, eval)
|
content, err := render(body, v, eval)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -150,27 +159,6 @@ func buildMarkdown(path string) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func defaultVars(vars map[string]string, path string) {
|
|
||||||
if _, ok := vars["file"]; !ok {
|
|
||||||
vars["file"] = path
|
|
||||||
}
|
|
||||||
if _, ok := vars["url"]; !ok {
|
|
||||||
vars["url"] = path[:len(path)-len(filepath.Ext(path))] + ".html"
|
|
||||||
if strings.HasPrefix(vars["url"], "./") {
|
|
||||||
vars["url"] = vars["url"][2:]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if _, ok := vars["outdir"]; !ok {
|
|
||||||
vars["outdir"] = PUBDIR
|
|
||||||
}
|
|
||||||
if _, ok := vars["output"]; !ok {
|
|
||||||
vars["output"] = filepath.Join(PUBDIR, vars["url"])
|
|
||||||
}
|
|
||||||
if _, ok := vars["layout"]; !ok {
|
|
||||||
vars["layout"] = "index.html"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func copyFile(path string) error {
|
func copyFile(path string) error {
|
||||||
if in, err := os.Open(path); err != nil {
|
if in, err := os.Open(path); err != nil {
|
||||||
return err
|
return err
|
||||||
@ -249,8 +237,7 @@ func main() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if b, err := ioutil.ReadFile(args[0]); err == nil {
|
if b, err := ioutil.ReadFile(args[0]); err == nil {
|
||||||
vars, _ := md(string(b))
|
vars, _ := md(args[0], string(b))
|
||||||
defaultVars(vars, args[0])
|
|
||||||
if len(args) > 1 {
|
if len(args) > 1 {
|
||||||
for _, a := range args[1:] {
|
for _, a := range args[1:] {
|
||||||
fmt.Println(vars[a])
|
fmt.Println(vars[a])
|
||||||
|
@ -32,7 +32,7 @@ func TestSplit2(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestMD(t *testing.T) {
|
func TestMD(t *testing.T) {
|
||||||
v, body := md(`
|
v, body := md("foo.md", `
|
||||||
title: Hello, world!
|
title: Hello, world!
|
||||||
keywords: foo, bar, baz
|
keywords: foo, bar, baz
|
||||||
empty:
|
empty:
|
||||||
@ -56,13 +56,13 @@ this: is a content`)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Test empty md
|
// Test empty md
|
||||||
v, body = md("")
|
v, body = md("foo.md", "")
|
||||||
if len(v) != 0 || len(body) != 0 {
|
if len(v) != 0 || len(body) != 0 {
|
||||||
t.Error(v, body)
|
t.Error(v, body)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test empty header
|
// Test empty header
|
||||||
v, body = md("Hello")
|
v, body = md("foo.md", "Hello")
|
||||||
if len(v) != 0 || body != "Hello" {
|
if len(v) != 0 || body != "Hello" {
|
||||||
t.Error(v, body)
|
t.Error(v, body)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user