aboutsummaryrefslogtreecommitdiff
path: root/server.go
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2020-05-01 13:30:42 +0700
committerShulhan <ms@kilabit.info>2020-05-01 13:30:42 +0700
commit9039448f8a91ee96ecea1c7c78ccaf81f4699e92 (patch)
tree376d09cdf6d18573ee334887b6c33a39910c501e /server.go
parentf6811267d6c7985d75f4bec491c26521e88ea514 (diff)
downloadciigo-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.go69
1 files changed, 43 insertions, 26 deletions
diff --git a/server.go b/server.go
index a9a0fa5..762d391 100644
--- a/server.go
+++ b/server.go
@@ -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