""" Ricos Document Converter for Wix Converts markdown content to Wix Ricos JSON format using either: 1. Wix's official Ricos Documents API (preferred) 2. Custom markdown parser (fallback) """ import json import requests import jwt from typing import Dict, Any, Optional from loguru import logger def markdown_to_html(markdown_content: str) -> str: """ Convert markdown content to HTML. Uses a simple markdown parser for basic conversion. Args: markdown_content: Markdown content to convert Returns: HTML string """ try: # Try using markdown library if available import markdown html = markdown.markdown(markdown_content, extensions=['fenced_code', 'tables']) return html except ImportError: # Fallback: Simple regex-based conversion for basic markdown logger.warning("markdown library not available, using basic markdown-to-HTML conversion") import re if not markdown_content or not markdown_content.strip(): return "

This is a post from ALwrity.

" lines = markdown_content.split('\n') result = [] in_list = False list_type = None # 'ul' or 'ol' in_code_block = False code_block_content = [] i = 0 while i < len(lines): line = lines[i].strip() # Handle code blocks first if line.startswith('```'): if not in_code_block: in_code_block = True code_block_content = [] i += 1 continue else: in_code_block = False result.append(f'
{"\n".join(code_block_content)}
') code_block_content = [] i += 1 continue if in_code_block: code_block_content.append(lines[i]) i += 1 continue # Close any open lists if in_list and not (line.startswith('- ') or line.startswith('* ') or re.match(r'^\d+\.\s+', line)): result.append(f'') in_list = False list_type = None if not line: i += 1 continue # Headers if line.startswith('###'): result.append(f'

{line[3:].strip()}

') elif line.startswith('##'): result.append(f'

{line[2:].strip()}

') elif line.startswith('#'): result.append(f'

{line[1:].strip()}

') # Lists elif line.startswith('- ') or line.startswith('* '): if not in_list or list_type != 'ul': if in_list: result.append(f'') result.append('