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()
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.
41def get_renderer(options: markdown_it.utils.OptionsDict) -> QuizComposerRendererCanvas: 42 """ Get this renderer and options. """ 43 44 return QuizComposerRendererCanvas()
Get this renderer and options.