diff options
Diffstat (limited to 'page')
| -rw-r--r-- | page/misc.go | 15 | ||||
| -rw-r--r-- | page/page.go | 19 | ||||
| -rw-r--r-- | page/renderJson.go | 7 | ||||
| -rw-r--r-- | page/renderMarkdown.go | 12 |
4 files changed, 51 insertions, 2 deletions
diff --git a/page/misc.go b/page/misc.go index e8bdfb7..e603458 100644 --- a/page/misc.go +++ b/page/misc.go @@ -35,3 +35,18 @@ func (p Page) EncodeJSON(data interface{}) string { return string(b) } + +// EncodeJSON is meant to be used in templating functions to encode +// arbitrary information as a JSON string. +func (p Page) EncodeJSONCompact(data interface{}) string { + if data == nil { + data = p + } + + b, err := json.Marshal(data) + if err != nil { + Logger.Println("Encountered error in EncodeJSONCompact: ", err) + } + + return string(b) +} diff --git a/page/page.go b/page/page.go index 29b35bc..214021e 100644 --- a/page/page.go +++ b/page/page.go @@ -33,6 +33,8 @@ import ( "log" "os" "path/filepath" + "regexp" + "strings" "text/template" "github.com/russross/blackfriday" @@ -67,7 +69,22 @@ type Page struct { var Global interface{} // Funcs accessible to the templates. -var Funcs template.FuncMap +var Funcs template.FuncMap = template.FuncMap{ + "join": strings.Join, + "split": strings.Split, + "toLower": strings.ToLower, + "toUpper": strings.ToUpper, + "replace": strings.Replace, + "replaceAll": strings.ReplaceAll, + "toTitle": strings.ToTitle, + "hasPrefix": strings.HasPrefix, + "hasSuffix": strings.HasSuffix, + "trimPrefix": strings.TrimPrefix, + "trimSuffix": strings.TrimSuffix, + "regexpReplaceAll": func(s, regex, rep string) string { + return regexp.MustCompile(regex).ReplaceAllString(s, rep) + }, +} // CacheIndex determines whether or not the index will be cached in memory // or rebuilt on each call. diff --git a/page/renderJson.go b/page/renderJson.go index 52e707d..9359b69 100644 --- a/page/renderJson.go +++ b/page/renderJson.go @@ -66,6 +66,13 @@ func RenderJson(w http.ResponseWriter, r *http.Request, } if r.URL.Query().Get("markdown") == "1" { + if p.Vars != nil { + p.Vars["RenderingMarkdownOnly"] = true + } else { + p.Vars = map[string]interface{}{ + "RenderingMarkdownOnly": true, + } + } // Tossing the error, since it would've been revealed above md, _ := p.GetMarkdown() out["Markdown"] = md diff --git a/page/renderMarkdown.go b/page/renderMarkdown.go index c876169..7a365e6 100644 --- a/page/renderMarkdown.go +++ b/page/renderMarkdown.go @@ -9,7 +9,9 @@ import ( ) // RenderMarkdown is analogous to Render, except it spits out rendered markdown -// as text/plain +// as text/plain. It also sets .Vars.RenderingMarkdownOnly so templates can +// vary on whether or not they're plain markdown. For instance, not including +// some HTML tags func RenderMarkdown(w http.ResponseWriter, r *http.Request, path string, vars map[string]interface{}, statusCode int) { u := getURLPath(r) @@ -23,6 +25,14 @@ func RenderMarkdown(w http.ResponseWriter, r *http.Request, p.Vars = vars } + if p.Vars != nil { + p.Vars["RenderingMarkdownOnly"] = true + } else { + p.Vars = map[string]interface{}{ + "RenderingMarkdownOnly": true, + } + } + buf := &bytes.Buffer{} err := p.Render(buf) |
