...
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