Highlight hashtags - toot - Unnamed repository; edit this file 'description' to name the repository.
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
 (DIR) commit cb1f7b4e61e66ceecf91fe286ac9f44166ef3b25
 (DIR) parent 3d44eeebba8c0bc166764d2f75dfa5c5ad12a200
 (HTM) Author: Ivan Habunek <ivan@habunek.com>
       Date:   Sun, 21 Jan 2018 15:45:07 +0100
       
       Highlight hashtags
       
       Diffstat:
         toot/ui/app.py                      |       2 ++
         toot/ui/utils.py                    |      14 ++++++++++++++
       
       2 files changed, 16 insertions(+), 0 deletions(-)
       ---
 (DIR) diff --git a/toot/ui/app.py b/toot/ui/app.py
       @@ -36,6 +36,8 @@ class Color:
                class_.WHITE_ON_BLUE = curses.color_pair(8)
                class_.WHITE_ON_RED = curses.color_pair(9)
        
       +        class_.HASHTAG = class_.BLUE | curses.A_BOLD
       +
        
        class HeaderWindow:
            def __init__(self, height, width, y, x):
 (DIR) diff --git a/toot/ui/utils.py b/toot/ui/utils.py
       @@ -1,3 +1,5 @@
       +import re
       +
        from textwrap import wrap
        
        
       @@ -33,6 +35,17 @@ def enumerate_lines(lines, text_width, default_color):
            return enumerate(wrap_lines(lines))
        
        
       +HASHTAG_PATTERN = re.compile(r'(?<!\w)(#\w+)\b')
       +
       +
       +def highlight_hashtags(window, y, padding, line):
       +    from toot.ui.app import Color
       +
       +    for match in re.finditer(HASHTAG_PATTERN, line):
       +        start, end = match.span()
       +        window.chgat(y, start + padding, end - start, Color.HASHTAG)
       +
       +
        def draw_lines(window, lines, start_y, padding, default_color):
            height, width = window.getmaxyx()
            text_width = width - 2 * padding
       @@ -41,5 +54,6 @@ def draw_lines(window, lines, start_y, padding, default_color):
                y = start_y + dy
                if y < height - 1:
                    window.addstr(y, padding, line.ljust(text_width), color)
       +            highlight_hashtags(window, y, padding, line)
        
            return y + 1