Making site page initialization a bit more granular and accessible
authorspf13 <steve.francia@gmail.com>
Thu, 1 May 2014 17:20:58 +0000 (13:20 -0400)
committerspf13 <steve.francia@gmail.com>
Thu, 1 May 2014 17:20:58 +0000 (13:20 -0400)
hugolib/page.go
hugolib/site.go

index 1581091cb64ef5774bc83cb321542836e43ce7f2..052e4d9e8e49e4ab9748f72a0046289719758cd9 100644 (file)
@@ -138,8 +138,6 @@ func renderBytes(content []byte, pagefmt string) []byte {
        }
 }
 
-// TODO abstract further to support loading from more
-// than just files on disk. Should load reader (file, []byte)
 func newPage(filename string) *Page {
        page := Page{contentType: "",
                File:   File{FileName: filename, Extension: "html"},
@@ -207,7 +205,7 @@ func layouts(types string, layout string) (layouts []string) {
        return
 }
 
-func ReadFrom(buf io.Reader, name string) (page *Page, err error) {
+func NewPage(name string) (page *Page, err error) {
        if len(name) == 0 {
                return nil, errors.New("Zero length page name")
        }
@@ -215,6 +213,10 @@ func ReadFrom(buf io.Reader, name string) (page *Page, err error) {
        // Create new page
        p := newPage(name)
 
+       return p, nil
+}
+
+func (p *Page) ReadFrom(buf io.Reader) (err error) {
        // Parse for metadata & body
        if err = p.parse(buf); err != nil {
                jww.ERROR.Print(err)
@@ -224,7 +226,7 @@ func ReadFrom(buf io.Reader, name string) (page *Page, err error) {
        //analyze for raw stats
        p.analyzePage()
 
-       return p, nil
+       return nil
 }
 
 func (p *Page) analyzePage() {
index b4d39a6a4b67d1e89d13518307ed6fb7b9ca577a..e7b8badc8fbb11b5f7cf1b3e967afdc474d1c5b9 100644 (file)
@@ -231,6 +231,10 @@ func (s *Site) checkDescriptions() {
        }
 }
 
+func (s *Site) Initialise() (err error) {
+       return s.initialize()
+}
+
 func (s *Site) initialize() (err error) {
        if err = s.checkDirectories(); err != nil {
                return err
@@ -317,7 +321,11 @@ func (s *Site) CreatePages() (err error) {
                go func(file *source.File) (err error) {
                        defer wg.Done()
 
-                       page, err := ReadFrom(file.Contents, file.LogicalName)
+                       page, err := NewPage(file.LogicalName)
+                       if err != nil {
+                               return err
+                       }
+                       err = page.ReadFrom(file.Contents)
                        if err != nil {
                                return err
                        }