Beispiel #1
0
 def __handle_start_list_token(
     cls,
     output_html: str,
     next_token: MarkdownToken,
     transform_state: TransformState,
 ) -> str:
     """
     Handle the start unordered list token.
     """
     list_token = cast(ListStartMarkdownToken, next_token)
     transform_state.is_in_loose_list = (
         TransformToGfmListLooseness.calculate_list_looseness(
             transform_state.actual_tokens,
             transform_state.actual_token_index,
             list_token,
         ))
     if list_token.is_ordered_list_start:
         token_parts = ["<ol"]
         if list_token.list_start_content != "1":
             token_parts.extend(
                 [' start="',
                  str(int(list_token.list_start_content)), '"'])
         token_parts.extend([">", ParserHelper.newline_character, "<li>"])
         transform_state.add_leading_text = "".join(token_parts)
     else:
         transform_state.add_leading_text = "".join(
             ["<ul>", ParserHelper.newline_character, "<li>"])
     return output_html
Beispiel #2
0
    def __apply_transformation(
        self,
        transform_state: TransformState,
        actual_tokens: List[MarkdownToken],
        actual_tokens_size: int,
        next_token: MarkdownToken,
        output_html: str,
    ) -> str:
        transform_state.add_trailing_text = None
        transform_state.add_leading_text = None
        transform_state.next_token = None

        if (transform_state.actual_token_index + 1) < actual_tokens_size:
            transform_state.next_token = actual_tokens[
                transform_state.actual_token_index + 1]
        if next_token.token_name in self.start_token_handlers:
            start_handler_fn = self.start_token_handlers[next_token.token_name]
            output_html = start_handler_fn(output_html, next_token,
                                           transform_state)

        elif next_token.is_end_token:
            end_token = cast(EndMarkdownToken, next_token)
            if end_token.type_name in self.end_token_handlers:
                end_handler_fn = self.end_token_handlers[end_token.type_name]
                output_html = end_handler_fn(output_html, end_token,
                                             transform_state)
            else:
                raise AssertionError(
                    f"Markdown token end type {end_token.type_name} not supported."
                )
        else:
            raise AssertionError(
                f"Markdown token type {type(next_token)} not supported.")
        return output_html