roundabout,
created on Wednesday, 27 March 2024, 18:53:35 (1711565615),
received on Wednesday, 31 July 2024, 06:54:43 (1722408883)
Author identity: vlad <vlad.muntoiu@gmail.com>
ff8856891ec842b2a26bed382178273e64b4da61
markdown.py
@@ -2,6 +2,13 @@ import re
import bs4 as beautifulsoup import sys def only_chars(string, chars): chars = set(chars) all_chars = set(string) return all_chars.issubset(chars) inlineRegex = r""" (?P<em>[*_]{1,7}) (?P<textEm>(?:\\[*]|[^*])*) (?P=em) # emphasis |
@@ -46,6 +53,30 @@ class Container(Element):
return "Generic container element: " + repr(self.content) class Rule(Element): def __init__(self): super().__init__() def __repr__(self): return "Rule" @property def tag_name(self): return "hr" class HardBreak(Element): def __init__(self): super().__init__() def __repr__(self): return "Hard break" @property def tag_name(self): return "br" class Heading(Container): def __init__(self, content, level): super().__init__(content)
@@ -170,7 +201,9 @@ class Image(Link):
def parse_line(source): if trailing(source, "\\") == 1: source = source.rstrip("\\") source += "\n"hard_break = True else: hard_break = Falsetokens = [] pattern = re.compile(inlineRegex, re.MULTILINE | re.DOTALL | re.VERBOSE)
@@ -200,6 +233,9 @@ def parse_line(source):
tokens.append(source[lookup:]) if hard_break: tokens.append(HardBreak()) return tokens
@@ -219,6 +255,13 @@ def tokenise(source):
tokens.append(current_block) current_block = Element() i += 1 elif only_chars(line.strip(), "-_* ") and len(line.strip()) >= 3: # Horizontal rule tokens.append(current_block) current_block = Rule() i += 1 elif line.startswith("#") and leading(line.lstrip("#"), " "): tokens.append(current_block)
@@ -287,7 +330,7 @@ def make_html(ast):
if __name__ == '__main__': # Generate an AST from a markdown file ast = tokenise( """r"""# Hello World! ## Title 1 ### Part 1
@@ -297,6 +340,11 @@ if __name__ == '__main__':
Lorem **i`p`sum** dolor `sit` amet consectetur \ *adipiscing* elit * * * > Make it as simple as possible, [but not simpler](https://wikipedia.org). > > If you can't explain it simply, you don't understand it well enough.
misc_utils.py
@@ -31,10 +31,9 @@ def git_command(repo, data, *args, return_err=False, return_exit=False):
def only_chars(string, chars): for i in string:if i not in chars:return Falsereturn Truechars = set(chars) all_chars = set(string) return all_chars.issubset(chars)def get_permission_level(logged_in, username, repository):