mdja 0.1.3

日本語に最適化されたMarkdownパーサー - CommonMark + GFM対応、目次生成、読了時間計算
Documentation
// mdja WASM bindings example
import { Document } from './pkg/mdja.js';

console.log('=== mdja WASM デモ ===\n');

// 基本的な使い方
console.log('【基本的なMarkdown変換】');
const markdown = '# はじめに\n\nこれは**太字**で、これは*斜体*です。';
const doc = Document.parse(markdown);
console.log(`:\n${markdown}\n`);
console.log(`HTML:\n${doc.html}\n`);

// frontmatter付き
console.log('【frontmatter解析】');
const markdownWithMeta = `---
title: RustMarkdown
author: Taro
date: 2025-01-17
---

# Markdown

**mdja**Markdown
`;

const doc2 = Document.parse(markdownWithMeta);
console.log('メタデータ:');
const metadata = doc2.metadata;
for (const [key, value] of Object.entries(metadata)) {
    console.log(`  ${key}: ${value}`);
}
console.log();

// 目次生成
console.log('【目次生成】');
const markdownWithToc = `
# 

## 

### Rust使

### Python使

## 使
`;

const doc3 = Document.parse(markdownWithToc);
console.log(`:\n${doc3.toc}`);

// 読了時間
console.log('【読了時間計算】');
const longText = ''.repeat(800);
const doc4 = Document.parse(longText);
console.log(`: ${longText.length}`);
console.log(`: ${doc4.readingTime}\n`);

// 見出し一覧
console.log('【見出し一覧】');
const jpHeadings = `
# 
## 
## 使
`;
const doc5 = Document.parse(jpHeadings);
console.log('見出し:');
for (const heading of doc5.headings) {
    const indent = '  '.repeat(heading.level - 1);
    console.log(`${indent}- ${heading.text} (id: ${heading.id})`);
}
console.log();

// シンプルな変換
console.log('【シンプルなHTML変換】');
const html = Document.toHtml('**太字** と *斜体*');
console.log(`HTML: ${html}`);