StrictDoc Documentation
strictdoc/backend/sdoc/grammar/grammar_builder.py
Source file coverage
Path:
strictdoc/backend/sdoc/grammar/grammar_builder.py
Lines:
59
Non-empty lines:
53
Non-empty lines covered with requirements:
53 / 53 (100.0%)
Functions:
6
Functions covered by requirements:
6 / 6 (100.0%)
1
from strictdoc.backend.sdoc.grammar.grammar import (
2
    DOCUMENT_GRAMMAR,
3
    FREE_TEXT_PARSER_GRAMMAR,
4
    SECTION_GRAMMAR,
5
    TEXT_TYPES_GRAMMAR,
6
)
7
from strictdoc.backend.sdoc.grammar.grammar_grammar import (
8
    GRAMMAR_GRAMMAR,
9
    GRAMMAR_WRAPPER,
10
)
11
from strictdoc.backend.sdoc.grammar.type_system import (
12
    STRICTDOC_BASIC_TYPE_SYSTEM,
13
)
14
 
15
 
16
class SDocGrammarBuilder:
17
    @staticmethod
18
    def _prep_grammar(grammar: str) -> str:
19
        return grammar.replace("'\\n'", "'\n'")
20
 
21
    @staticmethod
22
    def create_grammar() -> str:
23
        grammar = SDocGrammarBuilder._prep_grammar(
24
            DOCUMENT_GRAMMAR
25
            + GRAMMAR_GRAMMAR
26
            + SECTION_GRAMMAR
27
            + FREE_TEXT_PARSER_GRAMMAR
28
            + TEXT_TYPES_GRAMMAR
29
            + STRICTDOC_BASIC_TYPE_SYSTEM
30
        )
31
        return grammar
32
 
33
    @staticmethod
34
    def create_free_text_grammar() -> str:
35
        return SDocGrammarBuilder._prep_grammar(
36
            FREE_TEXT_PARSER_GRAMMAR + TEXT_TYPES_GRAMMAR
37
        )
38
 
39
    @staticmethod
40
    def create_grammar_grammar() -> str:
41
        grammar = SDocGrammarBuilder._prep_grammar(
42
            GRAMMAR_WRAPPER
43
            + GRAMMAR_GRAMMAR
44
            + STRICTDOC_BASIC_TYPE_SYSTEM
45
            + TEXT_TYPES_GRAMMAR
46
        )
47
        return grammar
48
 
49
    @staticmethod
50
    def create_raw_grammar() -> str:
51
        grammar = (
52
            DOCUMENT_GRAMMAR
53
            + GRAMMAR_GRAMMAR
54
            + SECTION_GRAMMAR
55
            + FREE_TEXT_PARSER_GRAMMAR
56
            + TEXT_TYPES_GRAMMAR
57
            + STRICTDOC_BASIC_TYPE_SYSTEM
58
        )
59
        return grammar