Xwiki Import Markdown -

# Wrap in markdown macro wiki_content = f"{{{{markdown}}}}\n{markdown_content}\n{{{{/markdown}}}}"

# Headers markdown_text = re.sub(r'^# (.*?)$', r'= \1 =', markdown_text, flags=re.M) markdown_text = re.sub(r'^## (.*?)$', r'== \1 ==', markdown_text, flags=re.M) markdown_text = re.sub(r'^### (.*?)$', r'=== \1 ===', markdown_text, flags=re.M)

# Inline code markdown_text = re.sub(r'`(.*?)`', r'{{code}}\1{{/code}}', markdown_text) xwiki import markdown

def escape_xwiki_syntax(self, content): """Escape XWiki special characters""" # Escape velocity syntax content = content.replace('#', '~#') content = content.replace('$', '~$') # Escape macro syntax content = content.replace('{{', '~{{') content = content.replace('}}', '~}}') return content

# Escape problematic characters content = content.replace('\\', '\\\\') content = content.replace('{{', '~{{') content = content.replace('}}', '~}}') Create a mapping for frontmatter: r'= \1 ='

# Code blocks markdown_text = re.sub(r'```(\w*)\n(.*?)```', r'{{code language="\1"}}\n\2\n{{/code}}', markdown_text, flags=re.DOTALL)

class XWikiMarkdownImporter: def (self, url, username, password): self.base_url = url.rstrip('/') self.auth = HTTPBasicAuth(username, password) self.session = requests.Session() self.session.auth = self.auth flags=re.M) markdown_text = re.sub(r'^## (.*?)$'

# Prepare API request url = f"{XWIKI_URL}/rest/wikis/xwiki/spaces/{SPACE}/pages/{page_name}"

# Import single file importer.import_file("document.md", space="Main")

--- title: My Document author: John Doe date: 2024-01-01 tags: [wiki, markdown] --- Convert to XWiki properties:

# Lists markdown_text = re.sub(r'^\- (.*?)$', r'* \1', markdown_text, flags=re.M) markdown_text = re.sub(r'^\* (.*?)$', r'* \1', markdown_text, flags=re.M) markdown_text = re.sub(r'^\+ (.*?)$', r'** \1', markdown_text, flags=re.M)