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
|
|
|
|