pgenr.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package pgenr
  2. import (
  3. "git.nspix.com/golang/pgenr/element"
  4. "golang.org/x/net/html/atom"
  5. "html"
  6. )
  7. type (
  8. Page struct {
  9. Title string
  10. Head string
  11. Intros []element.Element
  12. Entries []*element.Entry
  13. Actions []*element.Action
  14. Timelines []*element.Timeline
  15. Tables []*element.Table
  16. Outros []element.Element
  17. Copyright string
  18. }
  19. )
  20. func (page *Page) SetHead(s string) *Page {
  21. page.Head = s
  22. return page
  23. }
  24. func (page *Page) SetCopyright(s string) *Page {
  25. page.Copyright = s
  26. return page
  27. }
  28. func (page *Page) AddPlainIntro(s string) *Page {
  29. page.Intros = append(page.Intros, element.NewElement(atom.P, s))
  30. return page
  31. }
  32. func (page *Page) AddIntro(ele element.Element) *Page {
  33. page.Intros = append(page.Intros, ele)
  34. return page
  35. }
  36. func (page *Page) AddEntry(e *element.Entry) *Page {
  37. page.Entries = append(page.Entries, e)
  38. return page
  39. }
  40. func (page *Page) AddTable(t *element.Table) *Page {
  41. page.Tables = append(page.Tables, t)
  42. return page
  43. }
  44. func (page *Page) AddTimeline(t *element.Timeline) *Page {
  45. page.Timelines = append(page.Timelines, t)
  46. return page
  47. }
  48. func (page *Page) AddButtonAction(s string, btn *element.Button) *Page {
  49. page.Actions = append(page.Actions, &element.Action{Instructions: element.NewElement(atom.P, s), Button: btn})
  50. return page
  51. }
  52. func (page *Page) AddInviteCodeAction(s string, code string) *Page {
  53. page.Actions = append(page.Actions, &element.Action{Instructions: element.NewElement(atom.P, s), InviteCode: code})
  54. return page
  55. }
  56. func (page *Page) AddOutro(ele element.Element) *Page {
  57. page.Outros = append(page.Outros, ele)
  58. return page
  59. }
  60. func (page *Page) AddPlainOutro(s string) *Page {
  61. page.Outros = append(page.Outros, element.NewElement(atom.P, s))
  62. return page
  63. }
  64. func (page *Page) Escape() {
  65. page.Head = html.EscapeString(page.Head)
  66. page.Copyright = html.EscapeString(page.Copyright)
  67. }
  68. func NewPage(title string) *Page {
  69. return &Page{
  70. Title: title,
  71. Intros: make([]element.Element, 0),
  72. Entries: make([]*element.Entry, 0),
  73. Actions: make([]*element.Action, 0),
  74. Timelines: make([]*element.Timeline, 0),
  75. Outros: make([]element.Element, 0),
  76. Tables: make([]*element.Table, 0),
  77. }
  78. }