quizcomp.parser.renderer.canvas

 1import re
 2import typing
 3
 4import markdown_it.token
 5
 6import quizcomp.model.constants
 7import quizcomp.parser.renderer.html
 8
 9class QuizComposerRendererCanvas(quizcomp.parser.renderer.html.QuizComposerRendererHTML):  # pylint: disable=abstract-method
10    """
11    Render to Canvas-specific HTML.
12    Canvas generally uses HTML, but has some special cases.
13    """
14
15    __output__ = quizcomp.model.constants.Format.CANVAS.value
16
17    def image(self,
18            *args: typing.Any,
19            **kwargs: typing.Any,
20            ) -> str:
21        # Override image behavior, don't try to base64 encode (unless explicitly told otherwise).
22        if ('force_raw_image_src' not in kwargs):
23            kwargs['force_raw_image_src'] = True
24
25        return super().image(*args, **kwargs)
26
27    def placeholder(self,
28            tokens: typing.List[markdown_it.token.Token],
29            token_index: int,
30            options: markdown_it.utils.OptionsDict,
31            env: typing.Dict[str, typing.Any],
32            **kwargs: typing.Any) -> str:
33        # Canvas placeholders cannot have spaces.
34        text = tokens[token_index].content.strip()
35        text = re.sub(r'\s+', ' ', text)
36        text = text.replace(' ', '_')
37
38        return f"[{text}]"
39
40def get_renderer(options: markdown_it.utils.OptionsDict) -> QuizComposerRendererCanvas:
41    """ Get this renderer and options. """
42
43    return QuizComposerRendererCanvas()
class QuizComposerRendererCanvas(quizcomp.parser.renderer.html.QuizComposerRendererHTML):
10class QuizComposerRendererCanvas(quizcomp.parser.renderer.html.QuizComposerRendererHTML):  # pylint: disable=abstract-method
11    """
12    Render to Canvas-specific HTML.
13    Canvas generally uses HTML, but has some special cases.
14    """
15
16    __output__ = quizcomp.model.constants.Format.CANVAS.value
17
18    def image(self,
19            *args: typing.Any,
20            **kwargs: typing.Any,
21            ) -> str:
22        # Override image behavior, don't try to base64 encode (unless explicitly told otherwise).
23        if ('force_raw_image_src' not in kwargs):
24            kwargs['force_raw_image_src'] = True
25
26        return super().image(*args, **kwargs)
27
28    def placeholder(self,
29            tokens: typing.List[markdown_it.token.Token],
30            token_index: int,
31            options: markdown_it.utils.OptionsDict,
32            env: typing.Dict[str, typing.Any],
33            **kwargs: typing.Any) -> str:
34        # Canvas placeholders cannot have spaces.
35        text = tokens[token_index].content.strip()
36        text = re.sub(r'\s+', ' ', text)
37        text = text.replace(' ', '_')
38
39        return f"[{text}]"

Render to Canvas-specific HTML. Canvas generally uses HTML, but has some special cases.

def image(self, *args: Any, **kwargs: Any) -> str:
18    def image(self,
19            *args: typing.Any,
20            **kwargs: typing.Any,
21            ) -> str:
22        # Override image behavior, don't try to base64 encode (unless explicitly told otherwise).
23        if ('force_raw_image_src' not in kwargs):
24            kwargs['force_raw_image_src'] = True
25
26        return super().image(*args, **kwargs)

Render an image.

def placeholder( self, tokens: List[markdown_it.token.Token], token_index: int, options: markdown_it.utils.OptionsDict, env: Dict[str, Any], **kwargs: Any) -> str:
28    def placeholder(self,
29            tokens: typing.List[markdown_it.token.Token],
30            token_index: int,
31            options: markdown_it.utils.OptionsDict,
32            env: typing.Dict[str, typing.Any],
33            **kwargs: typing.Any) -> str:
34        # Canvas placeholders cannot have spaces.
35        text = tokens[token_index].content.strip()
36        text = re.sub(r'\s+', ' ', text)
37        text = text.replace(' ', '_')
38
39        return f"[{text}]"

Render an answer placeholder.

def get_renderer( options: markdown_it.utils.OptionsDict) -> QuizComposerRendererCanvas:
41def get_renderer(options: markdown_it.utils.OptionsDict) -> QuizComposerRendererCanvas:
42    """ Get this renderer and options. """
43
44    return QuizComposerRendererCanvas()

Get this renderer and options.