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
@staticmethod18
def _prep_grammar(grammar: str) -> str:
19
return grammar.replace("'\\n'", "'\n'")
20
21
@staticmethod22
def create_grammar() -> str:
23
grammar = SDocGrammarBuilder._prep_grammar(
24
DOCUMENT_GRAMMAR25
+ 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
@staticmethod34
def create_free_text_grammar() -> str:
35
return SDocGrammarBuilder._prep_grammar(
36
FREE_TEXT_PARSER_GRAMMAR + TEXT_TYPES_GRAMMAR
37
)38
39
@staticmethod40
def create_grammar_grammar() -> str:
41
grammar = SDocGrammarBuilder._prep_grammar(
42
GRAMMAR_WRAPPER43
+ GRAMMAR_GRAMMAR
44
+ STRICTDOC_BASIC_TYPE_SYSTEM
45
+ TEXT_TYPES_GRAMMAR
46
)47
return grammar
48
49
@staticmethod50
def create_raw_grammar() -> str:
51
grammar = (
52
DOCUMENT_GRAMMAR53
+ GRAMMAR_GRAMMAR
54
+ SECTION_GRAMMAR
55
+ FREE_TEXT_PARSER_GRAMMAR
56
+ TEXT_TYPES_GRAMMAR
57
+ STRICTDOC_BASIC_TYPE_SYSTEM
58
)59
return grammar