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