Mercurial > yakumo_izuru > aya
comparison zs.go @ 6:cb66f5b86616 draft
rewritted default variables assignment
author | zaitsev.serge |
---|---|
date | Fri, 05 Dec 2014 18:26:15 +0000 |
parents | e0ee0721d34f |
children | 11073a30f71f |
comparison
equal
deleted
inserted
replaced
5:e0ee0721d34f | 6:cb66f5b86616 |
---|---|
30 } else { | 30 } else { |
31 return parts[0], "" | 31 return parts[0], "" |
32 } | 32 } |
33 } | 33 } |
34 | 34 |
35 func md(s string) (map[string]string, string) { | 35 func md(path, s string) (map[string]string, string) { |
36 v := map[string]string{} | 36 url := path[:len(path)-len(filepath.Ext(path))] + ".html" |
37 v := map[string]string{ | |
38 "file": path, | |
39 "url": url, | |
40 "outdir": PUBDIR, | |
41 "output": filepath.Join(PUBDIR, url), | |
42 "layout": "index.html", | |
43 } | |
37 if strings.Index(s, "\n\n") == -1 { | 44 if strings.Index(s, "\n\n") == -1 { |
38 return map[string]string{}, s | 45 return map[string]string{}, s |
39 } | 46 } |
40 header, body := split2(s, "\n\n") | 47 header, body := split2(s, "\n\n") |
41 for _, line := range strings.Split(header, "\n") { | 48 for _, line := range strings.Split(header, "\n") { |
42 key, value := split2(line, ":") | 49 key, value := split2(line, ":") |
43 v[strings.ToLower(strings.TrimSpace(key))] = strings.TrimSpace(value) | 50 v[strings.ToLower(strings.TrimSpace(key))] = strings.TrimSpace(value) |
51 } | |
52 if strings.HasPrefix(v["url"], "./") { | |
53 v["url"] = v["url"][2:] | |
44 } | 54 } |
45 return v, body | 55 return v, body |
46 } | 56 } |
47 | 57 |
48 func render(s string, vars map[string]string, eval EvalFn) (string, error) { | 58 func render(s string, vars map[string]string, eval EvalFn) (string, error) { |
126 func buildMarkdown(path string) error { | 136 func buildMarkdown(path string) error { |
127 b, err := ioutil.ReadFile(path) | 137 b, err := ioutil.ReadFile(path) |
128 if err != nil { | 138 if err != nil { |
129 return err | 139 return err |
130 } | 140 } |
131 v, body := md(string(b)) | 141 v, body := md(path, string(b)) |
132 defaultVars(v, path) | |
133 content, err := render(body, v, eval) | 142 content, err := render(body, v, eval) |
134 if err != nil { | 143 if err != nil { |
135 return err | 144 return err |
136 } | 145 } |
137 v["content"] = string(blackfriday.MarkdownBasic([]byte(content))) | 146 v["content"] = string(blackfriday.MarkdownBasic([]byte(content))) |
146 err = ioutil.WriteFile(v["output"], []byte(content), 0666) | 155 err = ioutil.WriteFile(v["output"], []byte(content), 0666) |
147 if err != nil { | 156 if err != nil { |
148 return err | 157 return err |
149 } | 158 } |
150 return nil | 159 return nil |
151 } | |
152 | |
153 func defaultVars(vars map[string]string, path string) { | |
154 if _, ok := vars["file"]; !ok { | |
155 vars["file"] = path | |
156 } | |
157 if _, ok := vars["url"]; !ok { | |
158 vars["url"] = path[:len(path)-len(filepath.Ext(path))] + ".html" | |
159 if strings.HasPrefix(vars["url"], "./") { | |
160 vars["url"] = vars["url"][2:] | |
161 } | |
162 } | |
163 if _, ok := vars["outdir"]; !ok { | |
164 vars["outdir"] = PUBDIR | |
165 } | |
166 if _, ok := vars["output"]; !ok { | |
167 vars["output"] = filepath.Join(PUBDIR, vars["url"]) | |
168 } | |
169 if _, ok := vars["layout"]; !ok { | |
170 vars["layout"] = "index.html" | |
171 } | |
172 } | 160 } |
173 | 161 |
174 func copyFile(path string) error { | 162 func copyFile(path string) error { |
175 if in, err := os.Open(path); err != nil { | 163 if in, err := os.Open(path); err != nil { |
176 return err | 164 return err |
247 if len(args) == 0 { | 235 if len(args) == 0 { |
248 log.Println("ERROR: filename expected") | 236 log.Println("ERROR: filename expected") |
249 return | 237 return |
250 } | 238 } |
251 if b, err := ioutil.ReadFile(args[0]); err == nil { | 239 if b, err := ioutil.ReadFile(args[0]); err == nil { |
252 vars, _ := md(string(b)) | 240 vars, _ := md(args[0], string(b)) |
253 defaultVars(vars, args[0]) | |
254 if len(args) > 1 { | 241 if len(args) > 1 { |
255 for _, a := range args[1:] { | 242 for _, a := range args[1:] { |
256 fmt.Println(vars[a]) | 243 fmt.Println(vars[a]) |
257 } | 244 } |
258 } else { | 245 } else { |