diff --git a/writer/MoinMoinWriter.py b/writer/MoinMoinWriter.py new file mode 100644 index 0000000..ea5a590 --- /dev/null +++ b/writer/MoinMoinWriter.py @@ -0,0 +1,77 @@ +class MoinMoinWriter(): + """ + MoinMoin wiki syntax writer. + + Except for newline, linebreak, hrule, table_row_end and macro all commands don't add a newline at the end. + + Nothing is printed, all is returned. + """ + + def newline(self): + """ + Prints nothing and appends a newline. + """ + return "\n" + + def linebreak(self): + """ + Print a froced linebreak (
). + """ + return "<
>\n" + + def hrule(self): + """ + Print a horizontal rule. + """ + return "----\n" + + def ulitem(self, text, level=1): + """ + Print a unordered list item with given level. + """ + whitespace = " " * level + return f"{whitespace}* {text}" + + def olitem(self, text, level=1): + """ + Print a orderd list item with given level. + """ + whitespace = " " * level + return f"{whitespace}1. {text}" + + def text(self, text, bold=False, italics=False): + """ + Just print the given text. + """ + if bold and italics: + return f"*****{text}*****" + elif bold: + return f"***{text}***" + elif italics: + return f"**{text}**" + else: + return text + + def link(self, text, url, arguments="", display=False): + if display: + if arguments: + return "{{" + url + f"|{text}|" + arguments + "}}" + else: + return "{{" + url + f"|{text}" + "}}" + else: + if arguments: + return f"[[{url}|{text}|{arguments}]]" + else: + return f"[[{url}|{text}]]" + + def macro(self, macro, arguments=""): + return f"<<{macro}({arguments})>>" + + def table_cell(self, text, arguments=""): + if text: + return f"||<{arguments}> {text} " + else: + return "||" + + def table_row_end(self): + return "||\n"