Failed Conditions
Pull Request — master (#1522)
by Abdeali
01:30
created

bears.natural_language.MarkdownBear.run()   B

Complexity

Conditions 1

Size

Total Lines 42

Duplication

Lines 0
Ratio 0 %
Metric Value
cc 1
dl 0
loc 42
rs 8.8571
1
import json
2
import re
3
4
from coalib.bearlib.abstractions.Lint import Lint
5
from coalib.bears.LocalBear import LocalBear
6
7
8
class MarkdownBear(Lint, LocalBear):
9
    executable = 'remark'
10
    diff_message = "The text does not comply to the set style."
11
    arguments = '--no-color --quiet'
12
    gives_corrected = True
13
    use_stdin = True
14
15
    def run(self, filename, file,
16
            markdown_bullets: str="-",
17
            markdown_use_closed_headings: bool=False,
18
            markdown_use_setext_headings: bool=False,
19
            markdown_emphasis: str="_",
20
            markdown_strong: str="*",
21
            markdown_encode_entities: bool=False,
22
            markdown_codefence: str="`",
23
            markdown_usefences: bool=False,
24
            markdown_list_indent: str="tab",
25
            markdown_loose_tables: bool=False,
26
            markdown_spaced_tables: bool=True,
27
            markdown_list_increment: bool=True,
28
            markdown_horizontal_rule: str='*',
29
            markdown_horizontal_rule_spaces: bool=False,
30
            markdown_horizontal_rule_repeat: int=3):
31
        """
32
        Raises issues against style violations on markdown files.
33
        """
34
        self.remark_configs = {
35
            "bullet": markdown_bullets,                         # - or *
36
            "closeAtx": markdown_use_closed_headings,           # Bool
37
            "setext": markdown_use_setext_headings,             # Bool
38
            "emphasis": markdown_emphasis,                      # char (_ or *)
39
            "strong": markdown_strong,                          # char (_ or *)
40
            "entities": markdown_encode_entities,               # Bool
41
            "fence": markdown_codefence,                        # char (~ or `)
42
            "fences": markdown_usefences,                       # Bool
43
            "listItemIndent": markdown_list_indent,             # int or "tab"
44
                                                                # or "mixed"
45
            "looseTable": markdown_loose_tables,                # Bool
46
            "spacedTable": markdown_spaced_tables,              # Bool
47
            "incrementListMarker": markdown_list_increment,     # Bool
48
            "rule": markdown_horizontal_rule,                   # - or * or _
49
            "ruleSpaces": markdown_horizontal_rule_spaces,      # Bool
50
            "ruleRepetition": markdown_horizontal_rule_repeat,  # int
51
        }
52
        config_json = json.dumps(self.remark_configs)
53
        # Remove { and } (remark adds it on its own) and escape it
54
        settings = re.escape(config_json[1:-1])
55
        self.arguments += " --setting " + settings
56
        return self.lint(filename, file)
57