#!/usr/bin/env python3
"""将 Markdown 转换为 HTML，处理前端元数据 (front-matter)"""

import sys
import re
import markdown

def strip_frontmatter(text):
    """去掉 YAML front-matter (--- ... ---)，返回 (标题行号偏移, 纯markdown内容)"""
    lines = text.split('\n')
    if lines and lines[0].strip() == '---':
        end = -1
        for i in range(1, len(lines)):
            if lines[i].strip() == '---':
                end = i
                break
        if end > 0:
            # 去掉 front-matter
            new_lines = lines[end+1:]
            # 如果去掉前导空行
            while new_lines and new_lines[0].strip() == '':
                new_lines = new_lines[1:]
            return '\n'.join(new_lines)
    return text

def extract_title(md_text):
    """从 markdown 中提取第一个 # 标题"""
    for line in md_text.split('\n'):
        if line.startswith('# '):
            return line[2:].strip()
    return None

def md_to_html(md_text):
    """转换 markdown 为完整 HTML"""
    # 转换为 HTML
    html = markdown.markdown(
        md_text,
        extensions=['extra', 'codehilite', 'toc'],
        output_format='html5'
    )
    return html

def main():
    import argparse
    
    parser = argparse.ArgumentParser(description='Convert Markdown to HTML for Z-Blog/WordPress')
    parser.add_argument('input', help='Input markdown file')
    parser.add_argument('--output', '-o', help='Output HTML file (default: stdout)')
    parser.add_argument('--title-only', action='store_true', help='Only extract title')
    
    args = parser.parse_args()
    
    with open(args.input, 'r', encoding='utf-8') as f:
        raw = f.read()
    
    # 去掉 front-matter
    md_text = strip_frontmatter(raw)
    
    if args.title_only:
        title = extract_title(md_text)
        if title:
            print(title)
        return
    
    title = extract_title(md_text)
    
    # 去掉第一个 # 标题行（html中不再重复）
    body_lines = md_text.split('\n')
    if body_lines and body_lines[0].startswith('# '):
        body_lines = body_lines[1:]
    body_md = '\n'.join(body_lines).strip()
    
    html_body = md_to_html(body_md)
    
    # 构建完整 HTML
    full_html = f"""<h1>{title}</h1>
{html_body}
"""
    
    if args.output:
        with open(args.output, 'w', encoding='utf-8') as f:
            f.write(full_html)
        print(f'HTML 已保存到: {args.output}', file=sys.stderr)
        print(f'标题: {title}', file=sys.stderr)
    else:
        print(full_html)

if __name__ == '__main__':
    main()
