diff --git a/rtv/curses_helpers.py b/rtv/curses_helpers.py index a92c590..98604db 100644 --- a/rtv/curses_helpers.py +++ b/rtv/curses_helpers.py @@ -11,7 +11,7 @@ from .exceptions import EscapeInterrupt __all__ = ['ESCAPE', 'UARROW', 'DARROW', 'BULLET', 'show_notification', 'show_help', 'LoadScreen', 'Color', 'text_input', 'curses_session', - 'prompt_input', 'add_line'] + 'prompt_input', 'add_line', 'get_arrow'] ESCAPE = 27 @@ -25,6 +25,20 @@ DARROW = u'\u25bc'.encode('utf-8') BULLET = u'\u2022'.encode('utf-8') GOLD = u'\u272A'.encode('utf-8') +def get_arrow(likes): + """ + Return the vote symbol to display, based on the `likes` paramater. + """ + + if likes is None: + symbol, attr = BULLET, curses.A_BOLD + elif likes: + symbol, attr = UARROW, curses.A_BOLD | Color.GREEN + else: + symbol, attr = DARROW, curses.A_BOLD | Color.RED + return symbol, attr + + def add_line(window, text, row=None, col=None, attr=None): """ Unicode aware version of curses's built-in addnstr method. diff --git a/rtv/submission.py b/rtv/submission.py index c717d17..af20308 100644 --- a/rtv/submission.py +++ b/rtv/submission.py @@ -8,8 +8,8 @@ import praw.errors from .content import SubmissionContent from .page import BasePage, Navigator, BaseController from .helpers import open_browser, open_editor -from .curses_helpers import (BULLET, UARROW, DARROW, GOLD, Color, LoadScreen, - show_notification, text_input, add_line) +from .curses_helpers import (GOLD, Color, LoadScreen, get_arrow, add_line, + show_notification, text_input) from .docs import COMMENT_FILE __all__ = ['SubmissionController', 'SubmissionPage'] @@ -166,14 +166,8 @@ class SubmissionPage(BasePage): attr = curses.A_BOLD | Color.YELLOW add_line(win, u'{flair} '.format(**data), attr=attr) - if data['likes'] is None: - text, attr = BULLET, curses.A_BOLD - elif data['likes']: - text, attr = UARROW, (curses.A_BOLD | Color.GREEN) - else: - text, attr = DARROW, (curses.A_BOLD | Color.RED) + text, attr = get_arrow(likes) add_line(win, text, attr=attr) - add_line(win, u' {score} {created} '.format(**data)) if data['gold']: @@ -247,13 +241,7 @@ class SubmissionPage(BasePage): row = len(data['split_title']) + len(split_text) + 3 add_line(win, u'{score} '.format(**data), row, 1) - - if data['likes'] is None: - text, attr = BULLET, curses.A_BOLD - elif data['likes']: - text, attr = UARROW, curses.A_BOLD | Color.GREEN - else: - text, attr = DARROW, curses.A_BOLD | Color.RED + text, attr = get_arrow(data['likes']) add_line(win, text, attr=attr) add_line(win, u' {comments} '.format(**data)) diff --git a/rtv/subreddit.py b/rtv/subreddit.py index 4bac5b7..0f23bea 100644 --- a/rtv/subreddit.py +++ b/rtv/subreddit.py @@ -11,8 +11,8 @@ from .submission import SubmissionPage from .content import SubredditContent from .helpers import open_browser, open_editor from .docs import SUBMISSION_FILE -from .curses_helpers import (BULLET, UARROW, DARROW, GOLD, Color, add_line, - LoadScreen, show_notification, prompt_input) +from .curses_helpers import (GOLD, Color, LoadScreen, add_line, get_arrow, + show_notification, prompt_input) __all__ = ['opened_links', 'SubredditController', 'SubredditPage'] @@ -175,13 +175,7 @@ class SubredditPage(BasePage): row = n_title + offset + 1 if row in valid_rows: add_line(win, u'{score} '.format(**data), row, 1) - - if data['likes'] is None: - text, attr = BULLET, curses.A_BOLD - elif data['likes']: - text, attr = UARROW, curses.A_BOLD | Color.GREEN - else: - text, attr = DARROW, curses.A_BOLD | Color.RED + text, attr = get_arrow(data['likes']) add_line(win, text, attr=attr) add_line(win, u' {created} {comments} '.format(**data))