MoonMarkMind

Markdown mind-map toolkit and browser application built with MoonBit

markdown
mindmap
outline
svg
html
cli
moon add Xiao-li-He/MoonMarkMind@0.1.0
Download zip
Version
0.1.0
License
Apache-2.0
Last updated
last month
Downloads
10
README

#MoonMarkMind

MoonMarkMind 是一个用 MoonBit 编写的 Markdown 脑图工具包与浏览器应用。它把 Markdown 大纲解析为结构树,并提供浏览器编辑、脑图渲染、布局切换、节点编辑和 PNG/SVG/HTML 导出能力。

MoonMarkMind 界面预览

#Packages

定位适用场景
lib/outline_parserMarkdown 大纲解析、OutlineNode 构建、结构编辑、Markdown 回写需要把 Markdown 当作可编辑大纲模型处理
lib/latex_math_renderLaTeX 行内/块级公式到 HTML/SVG fragment需要在 Markdown 节点中渲染轻量公式
lib/markdown_renderMarkdown fragment/body 到安全 HTML需要在无 DOM 环境渲染脑图节点标题和正文 Markdown
packages/markdown_to_htmlMarkdown 文本到安全 HTML fragment推荐给用户直接调用的 Markdown to HTML 包
packages/markdown_to_mindmapMarkdown 文本到静态 SVG 脑图推荐给用户直接调用的 Markdown to mindmap 包
lib/mindmap_renderOutlineNode 或 Markdown 到静态 HTML/SVG 脑图字符串需要服务端、CLI 或测试环境生成脑图片段
app/web浏览器端 MoonMarkMind 应用DOM 交互、编辑器、工具栏、Canvas PNG 导出
cmd/cli命令行导出入口本地终端将单个 Markdown 文件导出为 PNG/SVG/HTML

#Install / Import

moon.mod 中依赖本模块后,可以在 moon.pkg 中按需导入子包:

import { "Xiao-li-He/MoonMarkMind/lib/outline_parser" @outline "Xiao-li-He/MoonMarkMind/lib/mindmap_render" @mindmap "Xiao-li-He/MoonMarkMind/lib/latex_math_render" @math "Xiao-li-He/MoonMarkMind/lib/markdown_render" @markdown "Xiao-li-He/MoonMarkMind/packages/markdown_to_html" @markdown_to_html "Xiao-li-He/MoonMarkMind/packages/markdown_to_mindmap" @markdown_to_mindmap }

浏览器应用入口由 cmd/main 构建,Web 集成包路径为:

Xiao-li-He/MoonMarkMind/app/web

#Quick Start

#在线使用

打开:

https://xiao-li-he.github.io/MoonMarkMind/

#本地构建与预览

在项目根目录运行:

powershell -ExecutionPolicy Bypass -File .\build-web.ps1

只构建、不启动服务:

powershell -ExecutionPolicy Bypass -File .\build-web.ps1 -NoServe

默认预览地址:

http://127.0.0.1:8000/index.html

#库包调用

///|
test {
let markdown = "# Root\n## Child"
let outline = @outline.build_outline(markdown)
let html = @mindmap.render_outline_html(outline)
let formula = @math.render_latex_math_inline_html("\\frac{x}{y}")
let body = @markdown.render_markdown_html("Hello **MoonBit**")
let user_html = @markdown_to_html.render("Hello **MoonBit**")
let svg = @markdown_to_mindmap.render_svg(markdown)
ignore(html)
ignore(formula)
ignore(body)
ignore(user_html)
ignore(svg)
}

#CLI 单文件导出

cmd/cli 是命令行导出入口,参数设计与 Web 端布局、样式和详情级别保持一致:

moon run cmd/cli samples/example1.md --format svg --layout mindmap --style line --layer layer2 moon run cmd/cli samples/example1.md --format html -o output/example1.html moon run cmd/cli samples/example1.md -o output/example1.png

默认导出 PNG,输出到 output/<input-stem>.<format>--format 支持 pngsvghtml-o/--output 可指定输出文件路径;当输出路径以 .png.svg.html 结尾时,CLI 会自动推断导出格式。CLI 每次接受一个 Markdown 文件和一种格式;目录输入、多文件输入和逗号分隔的多格式会被拒绝。所有格式都走 Web 端动态渲染导出,PNG 需要本机可用的 Chrome 或 Edge,也可通过 --browser <path> 指定。

#Core APIs

  • outline_parserparse_headingsparse_markdown_nodesbuild_outlineoutline_jsonrename_headingrender_markdown_nodes
  • markdown_to_htmlrenderrender_inlinerender_titlerender_blocks
  • markdown_to_mindmaprender_svgbuild_svg_documentdefault_render_optionsnormalize_layoutnormalize_stylenormalize_layer
  • markdown_renderrender_markdown_htmlrender_markdown_inline_htmlrender_markdown_title_htmlrender_markdown_blocks_html
  • mindmap_renderdefault_render_optionsrender_markdown_htmlrender_markdown_svgrender_outline_htmlrender_outline_svg
  • latex_math_renderrender_latex_math_inline_htmlrender_latex_math_block_htmlrender_latex_math_inline_svgrender_latex_math_block_svg

#Web App Features

  • Markdown 实时转换为结构化脑图。
  • 支持 Markdown 编辑区按标题层级折叠/展开。
  • 支持 Markdown 文档的 HTML 富文本预览。
  • 支持脑图、树状图、逻辑图三种布局。
  • 支持填充卡片和线框/分支线两种样式。
  • 支持完整、中等、精简详情级别。
  • 支持节点选择、折叠、隐藏、拖拽调整层级、新增、删除、移动、缩进和提升。
  • 支持常见 Markdown 富文本、图片和 LaTeX 公式。
  • 支持导出 PNG、SVG 和 HTML。

#Project Layout

  • lib/outline_parser:可复用大纲解析和编辑模型。
  • lib/latex_math_render:可复用公式 fragment 渲染。
  • lib/markdown_render:可复用 Markdown fragment/body HTML 渲染。
  • packages/markdown_to_html:面向用户的 Markdown 文本到 HTML fragment 包。
  • packages/markdown_to_mindmap:面向用户的 Markdown 文本到静态 SVG 脑图包。
  • lib/mindmap_render:可复用静态脑图字符串渲染。
  • app/web:浏览器端应用。
  • cmd/main:Web bundle 导出入口。
  • cmd/cli:命令行入口。
  • web/index.html:静态 Web 页面入口。
  • build-web.ps1:构建并预览 Web 版本。

更完整的结构规则见 docs/SPEC.md,验收说明见 docs/ACCEPTANCE.md

#Development

常用验证命令:

moon check moon test --no-render moon info

如果修改 Web 入口、样式、导出逻辑或前端交互,请重新构建 Web bundle:

powershell -ExecutionPolicy Bypass -File .\build-web.ps1 -NoServe

#Notes

  • MoonMarkMind 采用单仓多包结构,顶层模块名为 Xiao-li-He/MoonMarkMind
  • lib/* 包保持纯模型或纯字符串能力,避免依赖 DOM、Canvas 或浏览器 API。
  • app/web 负责浏览器交互、真实布局测量和 Canvas PNG 导出。
  • 当前 LaTeX 渲染是轻量公式子集渲染,不是完整 LaTeX 引擎。

#License

Apache-2.0。详见 LICENSE