SYMBOL INDEX (386 symbols across 40 files) FILE: client/cache/commentsCache.go type CommentsCache (line 17) | type CommentsCache interface type FileCommentsCache (line 23) | type FileCommentsCache struct method Get (line 37) | func (f FileCommentsCache) Get(filename string) (comments model.Commen... method Put (line 72) | func (f FileCommentsCache) Put(comments model.Comments, filename strin... method GetSubredditFromUrl (line 106) | func (f FileCommentsCache) GetSubredditFromUrl(commentsUrl string) str... method Clean (line 120) | func (f FileCommentsCache) Clean() { function NewFileCommentsCache (line 28) | func NewFileCommentsCache(baseUrl, cacheDir string) FileCommentsCache { type NoOpCommentsCache (line 200) | type NoOpCommentsCache struct method Get (line 206) | func (n NoOpCommentsCache) Get(cacheFilePath string) (comments model.C... method Put (line 210) | func (n NoOpCommentsCache) Put(comments model.Comments, cacheFilePath ... method Clean (line 214) | func (n NoOpCommentsCache) Clean() { function NewNoOpCommentsCache (line 202) | func NewNoOpCommentsCache() NoOpCommentsCache { FILE: client/cache/comments_cache_test.go constant testPostPoints (line 12) | testPostPoints = "5 points" constant testPostText (line 13) | testPostText = "text" constant testPostTimestamp (line 14) | testPostTimestamp = "5 mins ago" constant testCommentAuthor (line 15) | testCommentAuthor = "author" constant testCommentText (line 16) | testCommentText = "comments" constant testCommentPoints (line 17) | testCommentPoints = "5 points" constant testCommentTimestamp (line 18) | testCommentTimestamp = "5 mins ago" constant testBaseUrl (line 19) | testBaseUrl = "old.reddit.com" constant testCommentDepth (line 20) | testCommentDepth = 0 function TestCommentsCacheHappyPath (line 23) | func TestCommentsCacheHappyPath(t *testing.T) { function TestCommentsCacheCacheNotFound (line 43) | func TestCommentsCacheCacheNotFound(t *testing.T) { function assertComments (line 51) | func assertComments(expected, got model.Comments, t *testing.T) { function assertComment (line 74) | func assertComment(expectedComment, gotComment model.Comment, t *testing... function createTestComment (line 82) | func createTestComment() model.Comment { function createTestComments (line 92) | func createTestComments(expiry time.Time) model.Comments { function generateCommentsFileUrl (line 105) | func generateCommentsFileUrl(subreddit, filename string) string { FILE: client/cache/postsCache.go type PostsCache (line 15) | type PostsCache interface type FilePostsCache (line 21) | type FilePostsCache struct method Get (line 31) | func (f FilePostsCache) Get(filename string) (posts model.Posts, err e... method Put (line 60) | func (f FilePostsCache) Put(posts model.Posts, filename string) error { method Clean (line 87) | func (f FilePostsCache) Clean() { function NewFilePostsCache (line 25) | func NewFilePostsCache(cacheDir string) FilePostsCache { type NoOpPostsCache (line 135) | type NoOpPostsCache struct method Get (line 141) | func (n NoOpPostsCache) Get(cacheFilePath string) (posts model.Posts, ... method Put (line 145) | func (n NoOpPostsCache) Put(posts model.Posts, cacheFilePath string) e... method Clean (line 149) | func (f NoOpPostsCache) Clean() { function NewNoOpPostsCache (line 137) | func NewNoOpPostsCache() NoOpPostsCache { FILE: client/cache/posts_cache_test.go constant testTitle (line 14) | testTitle = "title" constant testDescription (line 15) | testDescription = "description" constant testAuthor (line 16) | testAuthor = "author" constant testSubreddit (line 17) | testSubreddit = "subreddit" constant testFriendlyDate (line 18) | testFriendlyDate = "5 mins ago" constant testPostUrl (line 19) | testPostUrl = "post.url" constant testCommentsUrl (line 20) | testCommentsUrl = "comments.url" constant testTotalComments (line 21) | testTotalComments = "5 comments" constant testTotalLikes (line 22) | testTotalLikes = "10 likes" constant testIsHome (line 23) | testIsHome = false constant testAfter (line 24) | testAfter = "after" function TestPostsCacheHappyPath (line 27) | func TestPostsCacheHappyPath(t *testing.T) { function TestPostsCacheNotFound (line 45) | func TestPostsCacheNotFound(t *testing.T) { function TestPostsCacheCannotDecodePosts (line 53) | func TestPostsCacheCannotDecodePosts(t *testing.T) { function TestPostsCacheCacheExpired (line 74) | func TestPostsCacheCacheExpired(t *testing.T) { function TestPostsCacheCleanCache (line 93) | func TestPostsCacheCleanCache(t *testing.T) { function assertPosts (line 126) | func assertPosts(expected, got model.Posts, t *testing.T) { function assertPost (line 147) | func assertPost(expected, got model.Post, t *testing.T) { function assertVal (line 159) | func assertVal[K comparable](context string, expected, got K, t *testing... function createTestPost (line 165) | func createTestPost() model.Post { function createTestPosts (line 178) | func createTestPosts(expiry time.Time) model.Posts { FILE: client/client.go type RedditClient (line 19) | type RedditClient struct method GetHomePosts (line 48) | func (r RedditClient) GetHomePosts(after string) (model.Posts, error) { method GetSubredditPosts (line 52) | func (r RedditClient) GetSubredditPosts(subreddit, after string) (mode... method GetComments (line 56) | func (r RedditClient) GetComments(url string) (model.Comments, error) { method CleanCache (line 60) | func (r RedditClient) CleanCache() { function NewRedditClient (line 25) | func NewRedditClient(configuration config.Config) RedditClient { function InitializeCaches (line 65) | func InitializeCaches(baseUrl string, bypassCache bool) (cache.PostsCach... FILE: client/comments/commentsClient.go constant defaultTtl (line 16) | defaultTtl = 1 * time.Hour type RedditCommentsClient (line 20) | type RedditCommentsClient struct method GetComments (line 47) | func (r RedditCommentsClient) GetComments(url string) (comments model.... function NewRedditCommentsClient (line 27) | func NewRedditCommentsClient(baseUrl, serverType string, httpClient *htt... FILE: client/comments/commentsParser.go type CommentsParser (line 13) | type CommentsParser interface type OldRedditCommentsParser (line 17) | type OldRedditCommentsParser struct method ParseComments (line 19) | func (p OldRedditCommentsParser) ParseComments(root common.HtmlNode, u... method parseCommentsList (line 41) | func (p OldRedditCommentsParser) parseCommentsList(node common.HtmlNod... method parseCommentNode (line 75) | func (p OldRedditCommentsParser) parseCommentNode(node common.HtmlNode... method getTitle (line 103) | func (p OldRedditCommentsParser) getTitle(root common.HtmlNode) string { method getPostContent (line 113) | func (p OldRedditCommentsParser) getPostContent(root common.HtmlNode) ... method getPostAuthor (line 148) | func (p OldRedditCommentsParser) getPostAuthor(root common.HtmlNode) s... method getPostTimestamp (line 158) | func (p OldRedditCommentsParser) getPostTimestamp(root common.HtmlNode... method getSubreddit (line 168) | func (p OldRedditCommentsParser) getSubreddit(root common.HtmlNode) st... method getPostPoints (line 178) | func (p OldRedditCommentsParser) getPostPoints(root common.HtmlNode) s... type RedlibCommentsParser (line 197) | type RedlibCommentsParser struct method ParseComments (line 199) | func (p RedlibCommentsParser) ParseComments(root common.HtmlNode, url ... method getTitle (line 231) | func (p RedlibCommentsParser) getTitle(root common.HtmlNode) string { method getPostAuthor (line 246) | func (p RedlibCommentsParser) getPostAuthor(root common.HtmlNode) stri... method getPostTimestamp (line 260) | func (p RedlibCommentsParser) getPostTimestamp(root common.HtmlNode) s... method getSubreddit (line 269) | func (p RedlibCommentsParser) getSubreddit(root common.HtmlNode) string { method getPostPoints (line 278) | func (p RedlibCommentsParser) getPostPoints(root common.HtmlNode) stri... method getPostContent (line 287) | func (p RedlibCommentsParser) getPostContent(root common.HtmlNode) (co... method parseCommentsList (line 309) | func (p RedlibCommentsParser) parseCommentsList(root common.HtmlNode, ... method parseThread (line 317) | func (p RedlibCommentsParser) parseThread(root common.HtmlNode, depth ... method parseCommentNode (line 333) | func (p RedlibCommentsParser) parseCommentNode(node common.HtmlNode, d... function renderHtmlNode (line 369) | func renderHtmlNode(node common.HtmlNode) string { function renderHtmlNodeHelper (line 383) | func renderHtmlNodeHelper(node common.HtmlNode, results *strings.Builder) { FILE: client/common/html.go constant UserAgentHeaderKey (line 15) | UserAgentHeaderKey = "User-Agent" constant UserAgentHeaderValue (line 16) | UserAgentHeaderValue = "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/... constant CacheControlHeader (line 17) | CacheControlHeader = "Cache-Control" constant CommentsCacheDirName (line 18) | CommentsCacheDirName = "comments" constant LimitQueryParameter (line 26) | LimitQueryParameter = "limit=500" type HtmlNode (line 28) | type HtmlNode struct method GetAttr (line 32) | func (n HtmlNode) GetAttr(key string) string { method Classes (line 44) | func (n HtmlNode) Classes() []string { method Class (line 55) | func (n HtmlNode) Class() string { method Id (line 59) | func (n HtmlNode) Id() string { method ClassContains (line 63) | func (n HtmlNode) ClassContains(classesToFind ...string) bool { method Text (line 73) | func (n HtmlNode) Text() string { method Tag (line 83) | func (n HtmlNode) Tag() string { method TagEquals (line 87) | func (n HtmlNode) TagEquals(tag string) bool { method NodeEquals (line 91) | func (n HtmlNode) NodeEquals(tag string, classes ...string) bool { method NodeEqualsById (line 95) | func (n HtmlNode) NodeEqualsById(tag string, id string) bool { method FindDescendant (line 99) | func (n HtmlNode) FindDescendant(tag string, classes ...string) (HtmlN... method FindDescendantById (line 114) | func (n HtmlNode) FindDescendantById(tag string, id string) (HtmlNode,... method FindDescendants (line 129) | func (n HtmlNode) FindDescendants(tag string, classes ...string) iter.... method FindChild (line 147) | func (n HtmlNode) FindChild(tag string, classes ...string) (HtmlNode, ... method FindChildren (line 162) | func (n HtmlNode) FindChildren(tag string, classes ...string) iter.Seq... function RenderAnchor (line 180) | func RenderAnchor(node HtmlNode) string { function AddQueryParameter (line 198) | func AddQueryParameter(url, query string) string { FILE: client/posts/postsClient.go type RedditPostsClient (line 18) | type RedditPostsClient struct method GetHomePosts (line 56) | func (r RedditPostsClient) GetHomePosts(after string) (model.Posts, er... method GetSubredditPosts (line 67) | func (r RedditPostsClient) GetSubredditPosts(subreddit string, after s... method tryGetCachedPosts (line 79) | func (r RedditPostsClient) tryGetCachedPosts(postsUrl string) (posts m... method getPosts (line 107) | func (r RedditPostsClient) getPosts(url string) (posts model.Posts, er... method filterPosts (line 149) | func (r RedditPostsClient) filterPosts(posts model.Posts) model.Posts { method BuildPostsUrl (line 176) | func (r RedditPostsClient) BuildPostsUrl(subreddit, after string) stri... function NewRedditPostsClient (line 28) | func NewRedditPostsClient( FILE: client/posts/postsParser.go type PostsParser (line 11) | type PostsParser interface type OldRedditPostsParser (line 15) | type OldRedditPostsParser struct method ParsePosts (line 17) | func (p OldRedditPostsParser) ParsePosts(root common.HtmlNode) model.P... method parsePost (line 61) | func (p OldRedditPostsParser) parsePost(n common.HtmlNode) model.Post { type RedlibParser (line 86) | type RedlibParser struct method ParsePosts (line 90) | func (p RedlibParser) ParsePosts(root common.HtmlNode) model.Posts { method parsePost (line 105) | func (p RedlibParser) parsePost(n common.HtmlNode) model.Post { method buildUrl (line 143) | func (p RedlibParser) buildUrl(part string) (string, error) { FILE: client/url.go function NormalizeBaseUrl (line 7) | func NormalizeBaseUrl(baseUrl string) (string, error) { function GetPostUrl (line 25) | func GetPostUrl(baseUrl, post string) (string, error) { FILE: components/colors/colors.go type Color (line 7) | type Color constant Red (line 10) | Red = iota constant Maroon (line 11) | Maroon constant Pink (line 12) | Pink constant Orange (line 13) | Orange constant Yellow (line 14) | Yellow constant Green (line 15) | Green constant Blue (line 16) | Blue constant Purple (line 17) | Purple constant Indigo (line 18) | Indigo constant Lavender (line 19) | Lavender constant Text (line 20) | Text constant Subtext (line 21) | Subtext constant Sand (line 22) | Sand constant White (line 23) | White type Palette (line 26) | type Palette struct method ToHex (line 43) | func (p Palette) ToHex(color Color) string { function AdaptiveColors (line 114) | func AdaptiveColors(light, dark Color) lipgloss.AdaptiveColor { function AdaptiveColor (line 121) | func AdaptiveColor(color Color) lipgloss.AdaptiveColor { FILE: components/comments/commentsPage.go type CommentsPage (line 16) | type CommentsPage struct method Init (line 37) | func (c CommentsPage) Init() tea.Cmd { method Update (line 41) | func (c CommentsPage) Update(msg tea.Msg) (CommentsPage, tea.Cmd) { method handleGlobalMessages (line 56) | func (c CommentsPage) handleGlobalMessages(msg tea.Msg) (CommentsPage,... method handleFocusedMessages (line 69) | func (c CommentsPage) handleFocusedMessages(msg tea.Msg) (CommentsPage... method View (line 89) | func (c CommentsPage) View() string { method SetSize (line 96) | func (c *CommentsPage) SetSize(w, h int) { method Focus (line 101) | func (c *CommentsPage) Focus() { method Blur (line 105) | func (c *CommentsPage) Blur() { method resizeComponents (line 109) | func (c *CommentsPage) resizeComponents() { method loadComments (line 121) | func (c *CommentsPage) loadComments(url string) tea.Cmd { method updateComments (line 133) | func (c *CommentsPage) updateComments(comments model.Comments) { function NewCommentsPage (line 25) | func NewCommentsPage(redditClient client.RedditClient) CommentsPage { FILE: components/comments/header.go type CommentsHeader (line 27) | type CommentsHeader struct method SetSize (line 42) | func (h *CommentsHeader) SetSize(width, height int) { method View (line 47) | func (h CommentsHeader) View() string { method SetContent (line 64) | func (h *CommentsHeader) SetContent(comments model.Comments) { function NewCommentsHeader (line 38) | func NewCommentsHeader() CommentsHeader { FILE: components/comments/keys.go type viewportKeyMap (line 5) | type viewportKeyMap struct method ShortHelp (line 63) | func (k viewportKeyMap) ShortHelp() []key.Binding { method FullHelp (line 67) | func (k viewportKeyMap) FullHelp() [][]key.Binding { FILE: components/comments/pager.go type CommentsViewport (line 16) | type CommentsViewport struct method Update (line 37) | func (c CommentsViewport) Update(msg tea.Msg) (CommentsViewport, tea.C... method View (line 58) | func (c CommentsViewport) View() string { method SetSize (line 64) | func (c *CommentsViewport) SetSize(w, h int) { method SetContent (line 72) | func (c *CommentsViewport) SetContent(comments model.Comments) { method ResizeComponents (line 83) | func (c *CommentsViewport) ResizeComponents() { method GetViewportView (line 90) | func (c *CommentsViewport) GetViewportView() string { method SetViewportContent (line 113) | func (c *CommentsViewport) SetViewportContent() { method formatComment (line 120) | func (c *CommentsViewport) formatComment(comment model.Comment, i int)... method toggleCollapseComments (line 184) | func (c *CommentsViewport) toggleCollapseComments() { method findAnchorComment (line 201) | func (c *CommentsViewport) findAnchorComment() (pos int, title string,... method findComment (line 246) | func (c *CommentsViewport) findComment(title, text string) int { function NewCommentsViewport (line 28) | func NewCommentsViewport() CommentsViewport { function renderPoints (line 162) | func renderPoints(pointsString string) string { FILE: components/messages/messages.go type ErrorModalMsg (line 9) | type ErrorModalMsg struct type CleanCacheMsg (line 15) | type CleanCacheMsg struct type GoBackMsg (line 16) | type GoBackMsg struct type LoadCommentsMsg (line 17) | type LoadCommentsMsg type LoadHomeMsg (line 18) | type LoadHomeMsg struct type LoadMorePostsMsg (line 19) | type LoadMorePostsMsg type LoadSubredditMsg (line 20) | type LoadSubredditMsg type UpdateCommentsMsg (line 21) | type UpdateCommentsMsg type UpdatePostsMsg (line 22) | type UpdatePostsMsg type AddMorePostsMsg (line 23) | type AddMorePostsMsg type LoadingCompleteMsg (line 24) | type LoadingCompleteMsg struct type OpenModalMsg (line 26) | type OpenModalMsg struct type ExitModalMsg (line 27) | type ExitModalMsg struct type ShowSpinnerModalMsg (line 28) | type ShowSpinnerModalMsg type ShowErrorModalMsg (line 30) | type ShowErrorModalMsg type OpenUrlMsg (line 32) | type OpenUrlMsg function CleanCache (line 35) | func CleanCache() tea.Msg { function GoBack (line 39) | func GoBack() tea.Msg { function LoadHome (line 43) | func LoadHome() tea.Msg { function LoadMorePosts (line 47) | func LoadMorePosts(home bool) tea.Cmd { function LoadSubreddit (line 53) | func LoadSubreddit(subreddit string) tea.Cmd { function LoadComments (line 59) | func LoadComments(url string) tea.Cmd { function LoadingComplete (line 65) | func LoadingComplete() tea.Msg { function OpenModal (line 69) | func OpenModal() tea.Msg { function ExitModal (line 73) | func ExitModal() tea.Msg { function ShowSpinnerModal (line 77) | func ShowSpinnerModal(loadingMsg string) tea.Cmd { function ShowErrorModal (line 83) | func ShowErrorModal(errorMsg string) tea.Cmd { function ShowErrorModalWithCallback (line 89) | func ShowErrorModalWithCallback(errorMsg string, callback tea.Cmd) tea.C... function HideSpinnerModal (line 95) | func HideSpinnerModal() tea.Msg { function OpenUrl (line 99) | func OpenUrl(url string) tea.Cmd { FILE: components/modal/error.go type ErrorModal (line 17) | type ErrorModal struct method Init (line 25) | func (e ErrorModal) Init() tea.Cmd { method Update (line 29) | func (e ErrorModal) Update(msg tea.Msg) (ErrorModal, tea.Cmd) { method View (line 39) | func (e ErrorModal) View() string { function NewErrorModal (line 21) | func NewErrorModal() ErrorModal { FILE: components/modal/modal.go type SessionState (line 12) | type SessionState constant defaultState (line 15) | defaultState SessionState = iota constant loading (line 16) | loading constant searching (line 17) | searching constant quitting (line 18) | quitting constant showingError (line 19) | showingError type ModalManager (line 28) | type ModalManager struct method Init (line 48) | func (m ModalManager) Init() tea.Cmd { method Update (line 52) | func (m ModalManager) Update(msg tea.Msg) (ModalManager, tea.Cmd) { method handleGlobalMessages (line 67) | func (m ModalManager) handleGlobalMessages(msg tea.Msg) (ModalManager,... method handleFocusedMessages (line 95) | func (m ModalManager) handleFocusedMessages(msg tea.Msg) (ModalManager... method View (line 116) | func (m ModalManager) View(background Viewer) string { method SetSize (line 132) | func (m *ModalManager) SetSize(w, h int) { method Blur (line 139) | func (m *ModalManager) Blur() tea.Cmd { method SetLoading (line 148) | func (m *ModalManager) SetLoading(message string) tea.Cmd { method SetSearching (line 154) | func (m *ModalManager) SetSearching() tea.Cmd { method SetQuitting (line 160) | func (m *ModalManager) SetQuitting() tea.Cmd { method SetError (line 165) | func (m *ModalManager) SetError(errorMsg string) tea.Cmd { method SetErrorWithCallback (line 171) | func (m *ModalManager) SetErrorWithCallback(errorMsg string, onClose t... function NewModalManager (line 38) | func NewModalManager() ModalManager { FILE: components/modal/quit.go constant quitMsg (line 13) | quitMsg = "Are you sure you want to quit?" constant yesNoMsg (line 14) | yesNoMsg = "(y/n)" type QuitModal (line 22) | type QuitModal struct method View (line 28) | func (q QuitModal) View() string { method Update (line 34) | func (q QuitModal) Update(msg tea.Msg) (QuitModal, tea.Cmd) { function NewQuitModal (line 24) | func NewQuitModal() QuitModal { FILE: components/modal/render.go constant maxModalWidthPercentage (line 14) | maxModalWidthPercentage = 0.66 type Viewer (line 20) | type Viewer interface function PlaceModal (line 25) | func PlaceModal(foreground, background Viewer, xPos, yPos lipgloss.Posit... function Place (line 65) | func Place( function getLines (line 146) | func getLines(s string) (lines []string, widest int) { function cutLeft (line 161) | func cutLeft(s string, cutWidth int) string { function clamp (line 200) | func clamp(v, lower, upper int) int { type whitespace (line 204) | type whitespace struct method render (line 210) | func (w whitespace) render(width int) string { type WhitespaceOption (line 240) | type WhitespaceOption FILE: components/modal/search.go constant searchHelpText (line 13) | searchHelpText = "Choose a subreddit:" constant searchPlaceholder (line 14) | searchPlaceholder = "subreddit" constant defaultSearchWidth (line 15) | defaultSearchWidth = 35 type SubredditSearchModal (line 23) | type SubredditSearchModal struct method Init (line 41) | func (s SubredditSearchModal) Init() tea.Cmd { method Update (line 45) | func (s SubredditSearchModal) Update(msg tea.Msg) (SubredditSearchModa... method View (line 61) | func (s SubredditSearchModal) View() string { method SetSize (line 68) | func (s *SubredditSearchModal) SetSize(w, h int) { method Blur (line 73) | func (s *SubredditSearchModal) Blur() { function NewSubredditSearchModal (line 28) | func NewSubredditSearchModal() SubredditSearchModal { FILE: components/modal/spinner.go type SpinnerModal (line 17) | type SpinnerModal struct method Init (line 32) | func (s SpinnerModal) Init() tea.Cmd { method Update (line 36) | func (s SpinnerModal) Update(msg tea.Msg) (SpinnerModal, tea.Cmd) { method View (line 42) | func (s SpinnerModal) View() string { method SetLoading (line 47) | func (s *SpinnerModal) SetLoading(message string) { function NewSpinnerModal (line 22) | func NewSpinnerModal() SpinnerModal { FILE: components/posts/header.go type PostsHeader (line 24) | type PostsHeader struct method SetSize (line 35) | func (h *PostsHeader) SetSize(width, height int) { method View (line 40) | func (h PostsHeader) View() string { method SetContent (line 48) | func (h *PostsHeader) SetContent(title, desc string) { function NewPostsHeader (line 31) | func NewPostsHeader() PostsHeader { FILE: components/posts/keys.go type postsKeyMap (line 5) | type postsKeyMap struct method ShortHelp (line 27) | func (k postsKeyMap) ShortHelp() []key.Binding { method FullHelp (line 31) | func (k postsKeyMap) FullHelp() []key.Binding { FILE: components/posts/postsPage.go constant defaultHeaderTitle (line 18) | defaultHeaderTitle = "reddit.com" constant defaultHeaderDescription (line 19) | defaultHeaderDescription = "The front page of the internet" constant postsErrorText (line 20) | postsErrorText = "Could not load posts. Please try again in a ... constant subredditNotFoundText (line 21) | subredditNotFoundText = "Subreddit not found" type PostsPage (line 24) | type PostsPage struct method Init (line 61) | func (p PostsPage) Init() tea.Cmd { method Update (line 65) | func (p PostsPage) Update(msg tea.Msg) (PostsPage, tea.Cmd) { method handleGlobalMessages (line 80) | func (p PostsPage) handleGlobalMessages(msg tea.Msg) (PostsPage, tea.C... method handleFocusedMessages (line 117) | func (p PostsPage) handleFocusedMessages(msg tea.Msg) (PostsPage, tea.... method View (line 150) | func (p PostsPage) View() string { method SetSize (line 161) | func (p *PostsPage) SetSize(w, h int) { method Focus (line 166) | func (p *PostsPage) Focus() { method Blur (line 170) | func (p *PostsPage) Blur() { method resizeComponents (line 174) | func (p *PostsPage) resizeComponents() { method loadHome (line 187) | func (p *PostsPage) loadHome() tea.Cmd { method loadMorePosts (line 199) | func (p *PostsPage) loadMorePosts() tea.Cmd { method loadSubreddit (line 226) | func (p PostsPage) loadSubreddit(subreddit string) tea.Cmd { method updatePosts (line 241) | func (p *PostsPage) updatePosts(posts model.Posts) { method addPosts (line 263) | func (p *PostsPage) addPosts(posts model.Posts) { function NewPostsPage (line 35) | func NewPostsPage(redditClient client.RedditClient, home bool) PostsPage { FILE: components/posts/styles.go function NewPostsDelegate (line 10) | func NewPostsDelegate() list.DefaultDelegate { FILE: components/tui.go constant defaultLoadingMessage (line 17) | defaultLoadingMessage = "loading reddit.com..." type pageType (line 20) | type pageType constant HomePage (line 24) | HomePage pageType = iota constant SubredditPage (line 25) | SubredditPage constant CommentsPage (line 26) | CommentsPage type RedditTui (line 29) | type RedditTui struct method Init (line 78) | func (r RedditTui) Init() tea.Cmd { method Update (line 82) | func (r RedditTui) Update(msg tea.Msg) (tea.Model, tea.Cmd) { method View (line 199) | func (r RedditTui) View() string { method goBack (line 223) | func (r *RedditTui) goBack() { method setPage (line 238) | func (r *RedditTui) setPage(page pageType) { method completeLoading (line 242) | func (r *RedditTui) completeLoading() tea.Cmd { method focusModal (line 258) | func (r *RedditTui) focusModal() { method focusActivePage (line 265) | func (r *RedditTui) focusActivePage() { function NewRedditTui (line 43) | func NewRedditTui(configuration config.Config, subreddit, post string) R... function getInitCmd (line 63) | func getInitCmd(baseUrl, subreddit, post string) tea.Cmd { FILE: config/config.go constant configFilename (line 13) | configFilename = "reddittui.toml" constant defaultDomainName (line 14) | defaultDomainName = "old.reddit.com" constant defaultServerType (line 15) | defaultServerType = "old" type Config (line 18) | type Config struct type CoreConfig (line 25) | type CoreConfig struct type FilterConfig (line 31) | type FilterConfig struct type ClientConfig (line 36) | type ClientConfig struct type ServerConfig (line 41) | type ServerConfig struct function NewConfig (line 46) | func NewConfig() Config { function LoadConfig (line 60) | func LoadConfig() (Config, error) { function mergeConfig (line 100) | func mergeConfig(left, right Config, meta toml.MetaData) Config { function createConfigFile (line 140) | func createConfigFile(configFilePath string) error { FILE: config/defaultConfig.go constant defaultConfiguration (line 3) | defaultConfiguration = ` FILE: integ_test.go constant testTimeout (line 16) | testTimeout = 20 * time.Second constant testDomain (line 17) | testDomain = "old.reddit.com" constant testServerType (line 18) | testServerType = "old" function TestStartup (line 21) | func TestStartup(t *testing.T) { function TestSwitchSubreddit (line 35) | func TestSwitchSubreddit(t *testing.T) { function TestReturnToHomePage (line 57) | func TestReturnToHomePage(t *testing.T) { function TestShowComments (line 84) | func TestShowComments(t *testing.T) { function TestLoadInitialPostFromId (line 110) | func TestLoadInitialPostFromId(t *testing.T) { function TestLoadInitialPostFromUrl (line 123) | func TestLoadInitialPostFromUrl(t *testing.T) { function TestLoadInitialSubredditAndCanGoBack (line 136) | func TestLoadInitialSubredditAndCanGoBack(t *testing.T) { function WaitFor (line 152) | func WaitFor(t *testing.T, tm *teatest.TestModel, messages ...string) { function WaitForWithInputs (line 156) | func WaitForWithInputs(t *testing.T, tm *teatest.TestModel, inputs strin... function getTestConfig (line 175) | func getTestConfig() config.Config { FILE: main.go constant version (line 15) | version = "v0.3.9" type CliArgs (line 17) | type CliArgs struct function main (line 23) | func main() { FILE: model/commentsModel.go type Comment (line 9) | type Comment struct method Title (line 29) | func (c Comment) Title() string { method Description (line 33) | func (c Comment) Description() string { method FilterValue (line 38) | func (c Comment) FilterValue() string { type Comments (line 17) | type Comments struct function formatDepth (line 42) | func formatDepth(s string, depth int) string { FILE: model/postModel.go type Post (line 9) | type Post struct method Title (line 30) | func (p Post) Title() string { method Description (line 34) | func (p Post) Description() string { method FilterValue (line 51) | func (p Post) FilterValue() string { type Posts (line 21) | type Posts struct FILE: utils/browser.go function OpenUrl (line 9) | func OpenUrl(url string) error { FILE: utils/files.go constant appName (line 9) | appName = "reddittui" constant defaultConfigDir (line 10) | defaultConfigDir = ".config" constant defaultStateDir (line 11) | defaultStateDir = ".local/state" constant defaultCacheDir (line 12) | defaultCacheDir = ".cache" constant logFileName (line 13) | logFileName = "reddittui.log" function GetConfigDir (line 16) | func GetConfigDir() (string, error) { function GetStateDir (line 25) | func GetStateDir() (string, error) { function GetCacheDir (line 34) | func GetCacheDir() (string, error) { function OpenLogFile (line 43) | func OpenLogFile() (*os.File, error) { function FileExists (line 58) | func FileExists(path string) bool { FILE: utils/logger.go function InitLogger (line 9) | func InitLogger(logLevel string) (*os.File, error) { FILE: utils/timer.go type Timer (line 9) | type Timer struct method Stop (line 23) | func (t *Timer) Stop() { method StopAndLog (line 28) | func (t *Timer) StopAndLog(args ...any) { function NewTimer (line 16) | func NewTimer(context string) Timer { FILE: utils/utils.go function NormalizeSubreddit (line 7) | func NormalizeSubreddit(subreddit string) string { function TruncateString (line 19) | func TruncateString(s string, w int) string { function Clamp (line 29) | func Clamp(min, max, val int) int { function GetSingularPlural (line 39) | func GetSingularPlural(s, singular, plural string) string { FILE: utils/utils_test.go function TestNormalizeSubreddit (line 5) | func TestNormalizeSubreddit(t *testing.T) { function TestTruncateString (line 22) | func TestTruncateString(t *testing.T) { function TestClamp (line 43) | func TestClamp(t *testing.T) { function TestGetSingularPlural (line 68) | func TestGetSingularPlural(t *testing.T) {