...

Source file src/codeberg.org/tslocum/sriracha/model/model_page.go

Documentation: codeberg.org/tslocum/sriracha/model

     1  package model
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  
     7  	. "codeberg.org/tslocum/sriracha/util"
     8  )
     9  
    10  var doctypePrefx = "<!DOCTYPE html>"
    11  
    12  type Page struct {
    13  	ID      int
    14  	Path    string
    15  	Content string
    16  }
    17  
    18  func (p *Page) Validate() error {
    19  	p.Path = strings.TrimSpace(p.Path)
    20  	if p.Path == "" || !FilePathPattern.MatchString(p.Path) || strings.HasPrefix(p.Path, ".") || strings.HasPrefix(p.Path, "/") || strings.HasPrefix(strings.ToLower(p.Path), "sriracha") {
    21  		return fmt.Errorf("invalid page path: %s", p.Path)
    22  	}
    23  	return nil
    24  }
    25  
    26  func (p *Page) URL() string {
    27  	url := "/" + p.Path
    28  	if strings.HasSuffix(url, "/index") {
    29  		return strings.TrimSuffix(url, "index")
    30  	}
    31  	return url + ".html"
    32  }
    33  
    34  func (p *Page) AddHeaderAndFooter() bool {
    35  	return !strings.HasPrefix(p.Content, doctypePrefx)
    36  }
    37  

View as plain text