Exemplo n.º 1
0
    def _queue_item(self, item, patterns=None):
        self.item_count += 1
        self._queue.append("")

        term = Terminal()
        time_label = (
            " on %s at %s" % (term.yellow(item.time.strftime("%a, %d %b %Y")), term.yellow(item.time.strftime("%H:%M")))
            if item.time is not None
            else ""
        )
        self._queue.append("%s. %s%s:" % (self.item_count, term.cyan(item.source), time_label))

        indent = " " * (len(str(self.item_count)) + 2)

        if item.title is not None:
            self._queue.append(
                "%s%s"
                % (indent, self._highlight_pattern(item.title, patterns, term.bold_black_on_bright_yellow, term.bold))
            )

        if item.text is not None:
            (excerpt, clipped_left, clipped_right) = TextExcerpter.get_excerpt(item.text, 300, patterns)

            # Hashtag or mention
            excerpt = re.sub(r"(?<!\w)([#@])(\w+)", term.green("\\g<1>") + term.green("\\g<2>"), excerpt)

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

            excerpt = self._highlight_pattern(excerpt, patterns, term.black_on_yellow)

            self._queue.append(
                "%s%s%s%s" % (indent, "... " if clipped_left else "", excerpt, " ..." if clipped_right else "")
            )

        if item.link is not None:
            self._queue.append(
                "%s%s"
                % (
                    indent,
                    self._highlight_pattern(item.link, patterns, term.black_on_yellow_underline, term.blue_underline),
                )
            )