Tune up md for prettiness

master
Bel LaPointe 2020-09-28 13:34:29 -06:00
parent db6caf7c28
commit 06b849ed2e
2 changed files with 91 additions and 16 deletions

52
main.go
View File

@ -8,7 +8,7 @@ import (
"io/ioutil" "io/ioutil"
"local/args" "local/args"
"local/gziphttp" "local/gziphttp"
"local/notes-server/notes" "local/notes-server/notes/md"
"local/simpleserve/simpleserve" "local/simpleserve/simpleserve"
"log" "log"
"net/http" "net/http"
@ -32,6 +32,8 @@ func main() {
fs = args.NewArgSet() fs = args.NewArgSet()
fs.Append(args.STRING, "p", "port to serve", "8100") fs.Append(args.STRING, "p", "port to serve", "8100")
fs.Append(args.BOOL, "md", "whether to render markdown as html", true) fs.Append(args.BOOL, "md", "whether to render markdown as html", true)
fs.Append(args.STRING, "md-css", "css to load for md", "./public/bundle.css")
fs.Append(args.STRING, "md-class", "class to wrap md", "phb")
fs.Append(args.STRING, "d", "static path to serve", "./public") fs.Append(args.STRING, "d", "static path to serve", "./public")
if err := fs.Parse(); err != nil { if err := fs.Parse(); err != nil {
panic(err) panic(err)
@ -39,17 +41,49 @@ func main() {
d := fs.Get("d").GetString() d := fs.Get("d").GetString()
md := fs.Get("md").GetBool() md := fs.Get("md").GetBool()
mdCss := fs.Get("md-css").GetString()
mdClass := fs.Get("md-class").GetString()
if mdCss != "" {
b, err := ioutil.ReadFile(mdCss)
if err != nil {
panic(err)
}
mdCss = fmt.Sprintf(`
<style>
body > div {
margin: auto;
overflow: auto;
}
.%s {
width: auto !important;
/*height: auto !important;*/
height: 100%% !important;
column-count: auto !important;
-webkit-column-count: auto !important;
overflow: auto !important;
}
.%s h1 {
column-span: none !important;
-webkit-column-span: none !important;
}
%s
</style>`,
mdClass,
mdClass,
b,
)
}
p := strings.TrimPrefix(fs.Get("p").GetString(), ":") p := strings.TrimPrefix(fs.Get("p").GetString(), ":")
http.Handle("/", http.HandlerFunc(handler(d, md))) http.Handle("/", http.HandlerFunc(handler(d, md, mdCss, mdClass)))
log.Printf("Serving %s on HTTP port: %s\n", d, p) log.Printf("Serving %s on HTTP port: %s\n", d, p)
log.Fatal(http.ListenAndServe(":"+p, nil)) log.Fatal(http.ListenAndServe(":"+p, nil))
} }
func handler(d string, md bool) http.HandlerFunc { func handler(d string, md bool, mdCss, mdClass string) http.HandlerFunc {
return gzip(endpoints(withDel(withMD(d, md, fserve(d))))) return gzip(endpoints(withDel(withMD(d, md, mdCss, mdClass, fserve(d)))))
} }
func writeMeta(w http.ResponseWriter) { func writeMeta(w http.ResponseWriter) {
@ -125,22 +159,24 @@ func isDir(r *http.Request) bool {
return true return true
} }
func withMD(dir string, md bool, foo http.HandlerFunc) http.HandlerFunc { func withMD(dir string, enabled bool, mdCss, mdClass string, foo http.HandlerFunc) http.HandlerFunc {
n := &notes.Notes{RO: true}
return func(w http.ResponseWriter, r *http.Request) { return func(w http.ResponseWriter, r *http.Request) {
realpath := toRealPath(r.URL.Path) realpath := toRealPath(r.URL.Path)
if md && !isDir(r) && path.Ext(realpath) == ".md" { if enabled && !isDir(r) && path.Ext(realpath) == ".md" {
b, err := ioutil.ReadFile(realpath) b, err := ioutil.ReadFile(realpath)
if err != nil { if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError) http.Error(w, err.Error(), http.StatusInternalServerError)
return return
} }
s, err := n.Gomarkdown(r.URL.Path, b) s, err := md.Gomarkdown(b, nil)
if err != nil { if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError) http.Error(w, err.Error(), http.StatusInternalServerError)
return return
} }
fmt.Fprintln(w, mdCss)
fmt.Fprintf(w, "<div class=%q>", mdClass)
fmt.Fprintln(w, s) fmt.Fprintln(w, s)
fmt.Fprintf(w, "</div>")
} else { } else {
foo(w, r) foo(w, r)
} }

View File

@ -1,10 +1,3 @@
<head>
<!--<link rel="stylesheet" href="/phb.standalone.css" type="text/css">-->
<link rel="stylesheet" href="/bundle.css" type="text/css">
</head>
<body>
<div class="phb">
# Hello # Hello
Teehee xddd Teehee xddd
@ -15,4 +8,50 @@ For I am
**MARKDOWN** **MARKDOWN**
</div> ## h2
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum maximus eleifend. Pellentesque viverra dapibus magna ac viverra. Proin viverra a nunc in condimentum. Sed a faucibus mauris. Mauris fringilla lacus in nulla egestas fermentum. Nunc porta sed libero a facilisis. Donec nisi sem, dictum vel nisl quis, tincidunt ultrices sapien. Nam posuere, nibh eu commodo laoreet, lacus eros malesuada mi, id suscipit metus nisl vitae massa. Sed pellentesque sapien sit amet dui tempor, nec facilisis eros hendrerit. Donec feugiat justo eros, nec faucibus sapien ultrices eget. Sed tincidunt elit id viverra suscipit. Integer efficitur, turpis ac pharetra bibendum, metus mauris elementum sem, vel luctus lectus libero in elit. Vestibulum pulvinar faucibus fringilla. Proin lobortis risus ex, vel cursus metus tincidunt et.
Quisque gravida velit nec rhoncus consectetur. Nulla vitae interdum metus, in sodales arcu. Nulla vel maximus neque. Interdum et malesuada fames ac ante ipsum primis in faucibus. Morbi sed imperdiet justo. Nulla mollis quam et mi volutpat, dictum accumsan ante luctus. Duis pharetra eu turpis non semper. Ut elementum dignissim eros. Sed facilisis erat ligula, quis mollis ex dignissim sit amet. Nunc at massa volutpat risus faucibus elementum non sit amet nulla. Quisque sodales tempor ligula, in tincidunt elit pulvinar ac. Nunc tincidunt mauris at ligula fermentum, ut sodales sapien efficitur. Nam iaculis erat pellentesque est venenatis pharetra. Aenean venenatis fermentum nunc at efficitur. Nulla ac nunc bibendum justo ornare tristique. Vivamus condimentum placerat mi.
### h3
Duis eget scelerisque nisi, in laoreet erat. In hac habitasse platea dictumst. Proin faucibus et felis sit amet mattis. Vivamus lobortis porta nibh non tincidunt. In congue varius lacus sit amet volutpat. Aenean consequat lorem at congue aliquet. Aliquam finibus facilisis ligula et dictum. Cras pretium nunc cursus, consectetur ante vel, luctus lacus. Cras convallis elit lectus, quis lobortis turpis ultricies tincidunt. Etiam metus elit, finibus condimentum neque vitae, eleifend lacinia nulla. Aliquam erat volutpat. Ut placerat nisi et ligula auctor laoreet. Ut suscipit tristique mollis. Vestibulum cursus ac mi vitae mollis.
Mauris finibus turpis felis, at porttitor mauris condimentum in. Pellentesque aliquam vehicula nisl in interdum. Mauris nec urna ullamcorper, tincidunt nisl sit amet, vestibulum massa. Proin at eros massa. Etiam ut tempor ipsum. Nam in aliquet nunc. Ut varius molestie vestibulum. Fusce eget dui magna. Suspendisse convallis nisi est, in accumsan ligula consequat ac. Ut blandit mauris ultricies dui scelerisque interdum. Quisque at vestibulum elit. In hac habitasse platea dictumst. Cras nec pellentesque nunc. Etiam quis tristique sapien, et porttitor ipsum.
### h3
In ligula dolor, blandit quis neque eget, aliquam pretium nunc. Etiam posuere sapien diam, nec lobortis eros blandit nec. Nunc augue risus, accumsan vel mi id, facilisis varius arcu. Donec varius finibus imperdiet. Etiam orci lacus, interdum nec quam sed, sollicitudin consectetur turpis. Proin porttitor id purus ut commodo. Donec eget dapibus lacus. Vivamus consequat arcu lacus, quis elementum lacus commodo vitae. Donec lobortis accumsan enim, id pretium sem gravida vel. Aliquam sit amet est velit.
Duis cursus tortor vel dolor tempus tristique. Nunc elementum pulvinar semper. Fusce in auctor nulla. Praesent convallis arcu eu turpis mattis efficitur. Fusce justo nunc, ullamcorper in leo vitae, lobortis scelerisque risus. Suspendisse pellentesque nunc nulla, et dignissim lectus porta sed. Curabitur eu lacinia odio. In molestie, quam nec hendrerit efficitur, est diam condimentum ligula, a luctus sem metus quis arcu. Praesent varius, tellus ac lobortis commodo, nulla lectus rhoncus quam, elementum mollis tellus sapien sit amet tellus. Quisque tincidunt risus in lectus sollicitudin blandit. Pellentesque ultrices mollis tellus sed mollis. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Duis a velit ligula. Curabitur feugiat condimentum dui eget tempus. Praesent in ex malesuada, suscipit dui et, vehicula felis. Praesent faucibus vestibulum sapien, in facilisis est iaculis nec.
Phasellus porttitor ultrices orci, ac elementum elit hendrerit non. In iaculis imperdiet augue sed dignissim. Sed bibendum velit metus, in interdum sem mollis a. Nullam dignissim dolor at tortor volutpat, et sagittis est ultricies. Cras vel justo malesuada, pellentesque tortor eget, condimentum est. Vestibulum posuere tortor quis porttitor varius. Phasellus facilisis augue sed augue suscipit, nec imperdiet enim posuere. Suspendisse commodo ipsum eros, quis hendrerit nisl aliquet non. Morbi tincidunt enim tortor, ac rutrum lacus tristique non.
### h3
Mauris pellentesque ac urna vel molestie. Duis eget facilisis mi. Maecenas tempus elit vitae nibh vulputate venenatis. Nunc luctus ex ut metus condimentum, vitae molestie nisl maximus. Cras finibus mi suscipit, egestas arcu quis, condimentum libero. Aliquam ornare elit erat, eget facilisis ipsum faucibus in. Donec vitae diam ac ex egestas aliquet vel vitae dui. Mauris commodo sed turpis id feugiat. Mauris finibus felis eget est suscipit, quis sollicitudin augue dictum.
Maecenas viverra ipsum et sem tempor, in venenatis tellus venenatis. Mauris quis dignissim odio. Mauris pulvinar nunc at tellus molestie, id tincidunt massa pellentesque. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Curabitur ut molestie erat, non dignissim sapien. Morbi vehicula nulla vitae lectus vulputate posuere. Donec eget enim rutrum, consectetur nisi sit amet, convallis purus. Nam ultrices felis ut velit hendrerit volutpat. Mauris commodo malesuada nisl. Quisque cursus commodo nunc, eu vulputate justo gravida ac.
Nullam quis vulputate mauris. Ut elementum suscipit magna sit amet facilisis. Maecenas luctus placerat leo et eleifend. Aliquam est tortor, efficitur eget placerat nec, tincidunt vel mauris. Quisque pellentesque sit amet mauris vel imperdiet. Pellentesque mollis felis vulputate, pellentesque justo ut, suscipit magna. Donec pulvinar ligula nec volutpat feugiat. Integer vel vulputate ex. Cras in dui dui. Integer ut rhoncus erat. Praesent et nulla laoreet, hendrerit neque nec, egestas lorem. Aenean fringilla mollis diam ac luctus. Etiam porta placerat eros, vel sagittis turpis tincidunt ac.
## h2
Aliquam eget ultricies arcu. Integer lobortis semper dignissim. Fusce accumsan sapien et vehicula condimentum. Nunc pharetra lorem in ultricies volutpat. Pellentesque pellentesque velit egestas justo viverra, sed dapibus diam laoreet. Donec placerat tellus lacinia ipsum cursus, quis mollis lectus interdum. Quisque sit amet est magna. Nullam vulputate lacinia nulla ac condimentum. Pellentesque gravida malesuada ornare.
## h2
Fusce convallis imperdiet nisl, sit amet gravida ante congue in. Pellentesque molestie ante sed mauris scelerisque, suscipit laoreet sem vulputate. Nulla vulputate eget mi ut ullamcorper. Phasellus efficitur efficitur dui, at sollicitudin tellus ultricies at. Nam non dapibus elit, id vehicula elit. Nullam sollicitudin placerat neque vel dictum. Aenean erat turpis, fermentum at enim a, dictum placerat leo. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Pellentesque ac lectus quam. Aliquam consequat justo nisl, eget dapibus risus commodo rhoncus. Donec ac quam et ipsum mollis imperdiet quis et diam. Integer porta posuere odio vitae bibendum. Fusce suscipit efficitur tellus tempus placerat. Integer vitae lectus pharetra, mollis justo sed, iaculis lorem. Donec maximus venenatis posuere.
Morbi et mauris purus. Morbi quis nisi libero. Ut tincidunt accumsan finibus. Ut tincidunt lobortis velit a tincidunt. Integer id dolor metus. Proin ac urna vitae quam iaculis interdum eu ultrices urna. Duis vel velit egestas, convallis quam quis, molestie velit. In eget libero quis quam lobortis dignissim id et augue.
## h2
Morbi molestie consectetur semper. Nunc vitae odio scelerisque, molestie justo ac, hendrerit dui. Quisque in ex leo. Pellentesque efficitur porta mauris id porta. Mauris tincidunt urna ullamcorper maximus feugiat. Aliquam augue justo, facilisis a orci quis, tristique accumsan orci. Mauris mollis ac quam laoreet tempor. Morbi et urna aliquam, porta ipsum sit amet, posuere purus. Duis nec vulputate nibh. Quisque nulla lectus, posuere vitae posuere id, vulputate vitae felis. Integer interdum massa eu libero vulputate, nec tempus ipsum porta. Donec id tortor vitae nisl lobortis pretium et dictum leo. Duis posuere, odio at imperdiet iaculis, arcu magna sollicitudin nisi, in iaculis mauris neque quis lorem. Aenean ullamcorper sagittis congue. Duis varius consequat velit, in iaculis urna finibus vitae.
#### h4
Maecenas consectetur, diam eget pellentesque sollicitudin, orci mauris malesuada erat, id placerat lorem neque et tortor. Sed a metus et elit varius egestas. Nam eget metus suscipit, cursus mi vel, rutrum sapien. Mauris ipsum arcu, vehicula id commodo sed, dignissim et neque. Nulla facilisi. Vestibulum nec erat a lorem tristique facilisis. Nam ac condimentum purus. Pellentesque porttitor odio sed quam fringilla, id mattis magna euismod. Nulla vehicula lectus vel tortor porttitor fringilla. Duis dictum massa eu accumsan posuere. Sed pretium vitae nulla at euismod. Etiam sodales lacus at leo iaculis, sed gravida velit luctus. Duis nec mauris ut dolor rutrum posuere. In ut mattis lorem. Duis in massa tortor. Donec non ex hendrerit, malesuada mi eget, iaculis turpis.