1
0
mirror of https://github.com/makew0rld/amfora.git synced 2024-06-15 19:15:24 +00:00
amfora/structs/structs.go

47 lines
1.7 KiB
Go
Raw Normal View History

2021-02-28 04:55:26 +00:00
//nolint:lll
2020-06-18 20:54:48 +00:00
package structs
2020-12-20 20:54:47 +00:00
import "time"
type Mediatype string
const (
TextGemini Mediatype = "text/gemini"
TextPlain Mediatype = "text/plain"
2020-07-10 21:45:14 +00:00
TextAnsi Mediatype = "text/x-ansi"
)
type PageMode int
const (
ModeOff PageMode = iota // Regular mode
ModeLinkSelect // When the enter key is pressed, allow for tab-based link navigation
2020-07-10 23:16:13 +00:00
ModeSearch // When a keyword is being searched in a page - TODO: NOT USED YET
)
2020-06-18 20:54:48 +00:00
// Page is for storing UTF-8 text/gemini pages, as well as text/plain pages.
type Page struct {
URL string
Mediatype Mediatype // Used for rendering purposes, generalized
RawMediatype string // The actual mediatype sent by the server
Raw string // The raw response, as received over the network
Content string // The processed content, NOT raw. Uses cview color tags. It will also have a left margin.
Links []string // URLs, for each region in the content.
2021-02-27 23:17:49 +00:00
Row int // Vertical scroll position
Column int // Horizontal scroll position - does not map exactly to a cview.TextView because it includes left margin size changes, see #197
TermWidth int // The terminal width when the Content was set, to know when reformatting should happen.
Selected string // The current text or link selected
SelectedID string // The cview region ID for the selected text/link
Mode PageMode
2020-12-20 20:54:47 +00:00
MadeAt time.Time // When the page was made. Zero value indicates it should stay in cache forever.
2020-06-18 20:54:48 +00:00
}
// Size returns an approx. size of a Page in bytes.
func (p *Page) Size() int {
n := len(p.Raw) + len(p.Content) + len(p.URL) + len(p.Selected) + len(p.SelectedID)
2020-06-18 20:54:48 +00:00
for i := range p.Links {
2020-07-10 23:16:13 +00:00
n += len(p.Links[i])
2020-06-18 20:54:48 +00:00
}
2020-07-10 23:16:13 +00:00
return n
2020-06-18 20:54:48 +00:00
}