Exemplo n.º 1
0
    def _print_stream_item(self, item, pattern=None):
        print("")

        term = Terminal()
        time_label = "%s at %s" % (term.yellow(item.time.strftime("%a, %d %b %Y")),
                                   term.yellow(item.time.strftime("%H:%M")))
        print("%s on %s:" % (term.cyan(item.source), time_label))

        title = item.title
        if title is not None:
            if pattern is not None:
                title = pattern.sub(term.bold_black_on_bright_yellow("\\g<0>") + term.bold, title)
            print("   %s" % term.bold(title))

        excerpter = TextExcerpter()
        excerpt, clipped_left, clipped_right = excerpter.get_excerpt(item.text, 220, pattern)

        # Hashtag or mention
        excerpt = re.sub("(?<!\w)([#@])(\w+)",
                         term.green("\\g<1>") + term.bright_green("\\g<2>"), excerpt)
        # URL in one of the forms commonly encountered on the web
        excerpt = re.sub("(\w+://)?[\w.-]+\.[a-zA-Z]{2,4}(?(1)|/)[\w#?&=%/:.-]*",
                         term.bright_magenta_underline("\\g<0>"), excerpt)

        if pattern is not None:
            # TODO: This can break previously applied highlighting (e.g. URLs)
            excerpt = pattern.sub(term.black_on_bright_yellow("\\g<0>"), excerpt)

        print("   %s%s%s" % ("... " if clipped_left else "", excerpt,
                             " ..." if clipped_right else ""))
        print("   %s" % term.bright_blue_underline(item.link))