quizcomp.converter.html

 1import logging
 2import os
 3import typing
 4
 5import edq.util.dirent
 6
 7import quizcomp.converter.template
 8import quizcomp.model.constants
 9import quizcomp.model.quiz
10import quizcomp.util.html
11
12THIS_DIR: str = os.path.abspath(os.path.dirname(os.path.realpath(__file__)))
13DEFAULT_TEMPLATE_DIR: str = os.path.join(THIS_DIR, '..', 'data', 'templates', 'edq-html')
14
15CSS_FILENAME: str = 'quiz.css'
16
17_logger = logging.getLogger(__name__)
18
19class HTMLTemplateConverter(quizcomp.converter.template.TemplateConverter):
20    """
21    A converter to convert a quiz to HTML using templates.
22    """
23
24    def __init__(self,
25            format: quizcomp.model.constants.Format = quizcomp.model.constants.Format.HTML,
26            template_dir: str = DEFAULT_TEMPLATE_DIR,
27            **kwargs: typing.Any) -> None:
28        super().__init__(format, template_dir, **kwargs)
29        css_path = os.path.join(template_dir, CSS_FILENAME)
30        if (not os.path.isfile(css_path)):
31            _logger.warning("Could not find CSS file: '%s'. Continuing without external CSS.", css_path)
32            self.env.globals['css_content'] = ''
33        else:
34            self.env.globals['css_content'] = edq.util.dirent.read_file(css_path)
35
36    def finalize(self, quiz: quizcomp.model.quiz.Quiz, text: str) -> str:
37        return quizcomp.util.html.clean(text, pretty = True)
38
39class CanvasTemplateConverter(HTMLTemplateConverter):
40    """
41    A converter to convert a quiz to Canvas-specific HTML using templates.
42    """
43
44    def __init__(self,
45            template_dir: str = DEFAULT_TEMPLATE_DIR,
46            **kwargs: typing.Any) -> None:
47        super().__init__(quizcomp.model.constants.Format.CANVAS, template_dir, **kwargs)
THIS_DIR: str = '/home/runner/work/quiz-composer/quiz-composer/quizcomp/converter'
DEFAULT_TEMPLATE_DIR: str = '/home/runner/work/quiz-composer/quiz-composer/quizcomp/converter/../data/templates/edq-html'
CSS_FILENAME: str = 'quiz.css'
class HTMLTemplateConverter(quizcomp.converter.template.TemplateConverter):
20class HTMLTemplateConverter(quizcomp.converter.template.TemplateConverter):
21    """
22    A converter to convert a quiz to HTML using templates.
23    """
24
25    def __init__(self,
26            format: quizcomp.model.constants.Format = quizcomp.model.constants.Format.HTML,
27            template_dir: str = DEFAULT_TEMPLATE_DIR,
28            **kwargs: typing.Any) -> None:
29        super().__init__(format, template_dir, **kwargs)
30        css_path = os.path.join(template_dir, CSS_FILENAME)
31        if (not os.path.isfile(css_path)):
32            _logger.warning("Could not find CSS file: '%s'. Continuing without external CSS.", css_path)
33            self.env.globals['css_content'] = ''
34        else:
35            self.env.globals['css_content'] = edq.util.dirent.read_file(css_path)
36
37    def finalize(self, quiz: quizcomp.model.quiz.Quiz, text: str) -> str:
38        return quizcomp.util.html.clean(text, pretty = True)

A converter to convert a quiz to HTML using templates.

HTMLTemplateConverter( format: quizcomp.model.constants.Format = <Format.HTML: 'html'>, template_dir: str = '/home/runner/work/quiz-composer/quiz-composer/quizcomp/converter/../data/templates/edq-html', **kwargs: Any)
25    def __init__(self,
26            format: quizcomp.model.constants.Format = quizcomp.model.constants.Format.HTML,
27            template_dir: str = DEFAULT_TEMPLATE_DIR,
28            **kwargs: typing.Any) -> None:
29        super().__init__(format, template_dir, **kwargs)
30        css_path = os.path.join(template_dir, CSS_FILENAME)
31        if (not os.path.isfile(css_path)):
32            _logger.warning("Could not find CSS file: '%s'. Continuing without external CSS.", css_path)
33            self.env.globals['css_content'] = ''
34        else:
35            self.env.globals['css_content'] = edq.util.dirent.read_file(css_path)
def finalize(self, quiz: quizcomp.model.quiz.Quiz, text: str) -> str:
37    def finalize(self, quiz: quizcomp.model.quiz.Quiz, text: str) -> str:
38        return quizcomp.util.html.clean(text, pretty = True)

A final chance for children to modify the output.

class CanvasTemplateConverter(HTMLTemplateConverter):
40class CanvasTemplateConverter(HTMLTemplateConverter):
41    """
42    A converter to convert a quiz to Canvas-specific HTML using templates.
43    """
44
45    def __init__(self,
46            template_dir: str = DEFAULT_TEMPLATE_DIR,
47            **kwargs: typing.Any) -> None:
48        super().__init__(quizcomp.model.constants.Format.CANVAS, template_dir, **kwargs)

A converter to convert a quiz to Canvas-specific HTML using templates.

CanvasTemplateConverter( template_dir: str = '/home/runner/work/quiz-composer/quiz-composer/quizcomp/converter/../data/templates/edq-html', **kwargs: Any)
45    def __init__(self,
46            template_dir: str = DEFAULT_TEMPLATE_DIR,
47            **kwargs: typing.Any) -> None:
48        super().__init__(quizcomp.model.constants.Format.CANVAS, template_dir, **kwargs)