diff options
| author | Shulhan <ms@kilabit.info> | 2020-05-01 13:30:42 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2020-05-01 13:30:42 +0700 |
| commit | 9039448f8a91ee96ecea1c7c78ccaf81f4699e92 (patch) | |
| tree | 376d09cdf6d18573ee334887b6c33a39910c501e /server.go | |
| parent | f6811267d6c7985d75f4bec491c26521e88ea514 (diff) | |
| download | ciigo-9039448f8a91ee96ecea1c7c78ccaf81f4699e92.tar.xz | |
all: embed the HTML template and the stylesheet
The parameter for template either in Convert or Generate functions or
in CLI now become pure optional, not default to "templates/html.tmpl"
anymore.
This will minimize steps for user to setup or run the library or program.
Diffstat (limited to 'server.go')
| -rw-r--r-- | server.go | 69 |
1 files changed, 43 insertions, 26 deletions
@@ -37,7 +37,7 @@ type Server struct { // // The address parameter is optional, if not set its default to ":8080". // The htmlTemplate parameter is optional, if not set its default to -// "templates/html.tmpl" in current directory. +// embedded HTML template. // func NewServer(root, address, htmlTemplate string) (srv *Server) { var err error @@ -76,31 +76,11 @@ func NewServer(root, address, htmlTemplate string) (srv *Server) { log.Fatal("ciigo: " + err.Error()) } - htmlTemplate = filepath.Clean(htmlTemplate) + srv.initHTMLGenerator(htmlTemplate) if srv.opts.Development { - bhtml, err := ioutil.ReadFile(htmlTemplate) - if err != nil { - log.Fatal("ciigo.Convert: " + err.Error()) - } - - srv.htmlg = newHTMLGenerator(htmlTemplate, string(bhtml)) srv.fileMarkups = listFileMarkups(root) srv.htmlg.convertFileMarkups(srv.fileMarkups, false) - } else { - tmplNode, err := srv.http.Memfs.Get(htmlTemplate) - if err != nil { - log.Fatalf("ciigo.NewServer: Memfs.Get %s: %s", - htmlTemplate, err.Error()) - } - - bhtml, err := tmplNode.Decode() - if err != nil { - log.Fatalf("ciigo.NewServer: tmplNode.decode: %s", - err.Error()) - } - - srv.htmlg = newHTMLGenerator("", string(bhtml)) } return srv @@ -144,12 +124,49 @@ func (srv *Server) autoGenerate() { log.Fatal("ciigo: autoGenerate: " + err.Error()) } - _, err = libio.NewWatcher(srv.htmlg.path, 0, srv.onChangeHTMLTemplate) - if err != nil { - log.Fatal("ciigo: autoGenerate: " + err.Error()) + if len(srv.htmlg.path) > 0 { + _, err = libio.NewWatcher(srv.htmlg.path, 0, srv.onChangeHTMLTemplate) + if err != nil { + log.Fatal("ciigo: autoGenerate: " + err.Error()) + } } } +func (srv *Server) initHTMLGenerator(htmlTemplate string) { + if len(htmlTemplate) == 0 { + srv.htmlg = newHTMLGenerator("", templateIndexHTML) + return + } + + var ( + bhtml []byte + err error + htmlContent string + ) + + htmlTemplate = filepath.Clean(htmlTemplate) + + if srv.opts.Development { + bhtml, err = ioutil.ReadFile(htmlTemplate) + if err != nil { + log.Fatal("Server.initHTMLGenerator: " + err.Error()) + } + } else { + tmplNode, err := srv.http.Memfs.Get(htmlTemplate) + if err != nil { + log.Fatalf("Server.initHTMLGenerator: Memfs.Get %s: %s", + htmlTemplate, err.Error()) + } + bhtml, err = tmplNode.Decode() + if err != nil { + log.Fatal("Server.initHTMLGenerator: " + err.Error()) + } + } + + htmlContent = string(bhtml) + srv.htmlg = newHTMLGenerator("", htmlContent) +} + // // onChangeFileMarkup watch the markup files inside the "content" directory, // and re-generate them into HTML file when changed. @@ -216,7 +233,7 @@ func (srv *Server) onChangeHTMLTemplate(ns *libio.NodeState) { fmt.Println("web: recompiling HTML template ...") - err := srv.htmlg.loadTemplate() + err := srv.htmlg.reloadTemplate() if err != nil { log.Println("watchHTMLTemplate: loadTemplate: " + err.Error()) return |
