资讯动态

一篇样例文档看懂 MarkdownEngine 全部核心特性:官方 Demo 项目深度详解

发布时间:2026/10/13 23:33:48 来源:尧图企业网站定制
【免费下载链接】swift-markdown-engineA native AppKit Markdown editor for macOS, built on TextKit 2 and bridged to SwiftUI.项目地址https://gitcode.com/gh_mirrors/sw/swift-markdown-engine点击查看免费下载MarkdownEngine 是一款基于 TextKit 2 构建的原生 macOS Markdown 编辑器通过 SwiftUI 桥接使用零外部依赖。官方仓库中的 Demo 项目内置了一篇精心设计的样例文档把核心 Markdown、可选产品、两条可选缝隙Extensions 与 Directives全部特性按来源分层展示——只要读懂这一篇文档就等于把整个编辑器过了一遍。为什么官方 Demo 是最好的学习入口大多数开源项目的文档是说明书而 Demo/ 目录下的示例工程是活教材样例文档的章节顺序刻意不按功能点排列而是按每个构造从哪来排列一眼分清哪些是引擎内置、哪些要加依赖、哪些要手动注册工具栏提供 6 个实时开关可以在不重新编译的情况下切换引擎模式源码极简入口只有 ContentView.swift全部特性装配逻辑集中在一个configuration计算属性里非常适合作为二次开发模板。如何运行 MarkdownEngine 官方 Demogit clone https://gitcode.com/gh_mirrors/sw/swift-markdown-engine用 Xcode 打开 MarkdownEngineDemo.xcodeproj 后直接Run。Demo 通过本地路径引用包任何引擎侧的改动都会在下次运行时自动生效。窗口入口见 MarkdownEngineDemoApp.swift最小尺寸 640×480。⚠️ 如果遇到 missing package product 报错通常是过期的包缓存导致执行File → Packages → Reset Package Caches后重新构建即可官方 README 中明确提示了这一点。样例文档的三段式结构核心特性分层速览打开 Demo样例文档以三条分隔线切成三部分这也是理解整个项目设计哲学的钥匙部分内容启用方式关闭后的表现Part 1 · Core markdown行内样式、引用、列表、任务列表、表格链接MarkdownEngine即得两个工具栏开关都不影响此部分Part 2 · Optional products代码块高亮、LaTeX 公式各多依赖一个 SPM 产品Markdown 照常解析只是回退为朴素外观Part 3 · Opt-in seams高亮/删除线扩展、指令在配置中注册同一串字符原地退化为纯文本Part 2 与 Part 3 的区别正是项目反复强调的一点Part 2 只改变看起来如何从不改变能否解析而 Part 3 的构造完全由注册表决定未注册就是普通文字。Part 1 核心 Markdown 特性实时样式一览链接MarkdownEngine后无需任何额外代码以下特性开箱即用样例片段见 ContentView.swift行内格式化**粗体**、*斜体*、***两者兼得***、反引号行内代码边输入边变样式引用与列表引用块保留完整行内样式引用标记自动隐藏列表按 Return 自动续行Tab / Shift-Tab 缩进/反缩进嵌套层级有序列表编辑时自动重新编号任务列表Task ListsGitHub 风格- [x]复选框点击即可切换勾选状态图标是 SF Symbols可通过config.taskCheckbox定制GFM 表格单元格按可用宽度自动换行列数过多放不下时保持宽度并横向滚动而不是把单元格挤扁——样例文档里那张 12 列的小说速查表就是专门演示这一点的分隔线、标题缩放标题字号按基础字号工具栏可在 10–28pt 间调节相对缩放。这些渲染能力由 Sources/MarkdownEngine/Parser/ 下的两阶段 AST 管线BlockParser → InlineParser和 Sources/MarkdownEngine/Styling/ 下的样式器实现增量解析保证每次按键只重解析被编辑的块长文档也能保持流畅。Part 2 可选产品代码高亮与 LaTeX 公式两个重特性因为要引入第三方依赖被拆成了独立 SPM 产品见 Package.swift代码块语法高亮开启方法依赖MarkdownEngineCodeBlocks产品并注入官方桥接configuration.services.syntaxHighlighter HighlighterSwiftBridge()桥接层HighlighterSwiftBridge.swift基于 HighlighterSwift自动跟随系统深浅色切换atom-one-light/atom-one-dark主题并处理行高、外观监听、布局时机等细节。未链接该产品时围栏代码块仍被解析、仍占据代码块外观只是回退为纯等宽字体。LaTeX 数学公式渲染配置依赖MarkdownEngineLatex产品并注入 SwiftMathBridge 后行内$e^{i\pi} 1 0$与块级$$\int …$$都会渲染为数学符号样例文档里的欧拉恒等式和高斯积分就是演示。注意$…$语法本身是核心语法——解析器无论如何都会认领它缺的只是渲染产品这正是 Part 2 的定义。Part 3 可选缝隙Extensions 与 Directives这是 MarkdownEngine 最有特色的部分两条可选缝隙让你在不改引擎的前提下扩展语法。工具栏的Opt-in seams开关会同时注销两侧你会看到 Part 3 原地坍缩为纯文本而 Part 1、Part 2 纹丝不动。缝隙一Extensions分隔符形状扩展 一对定界符 中间内容如何着色例如高亮与~~删除线~~并不是核心语法的一部分而是由HighlightExtension和StrikethroughExtension提供的config.extensions [HighlightExtension(), StrikethroughExtension()]注册后即可与核心语法自由嵌套with *italic* inside未注册的写法保持为字面文字。核心引擎掌握所有几何、标记隐藏、光标显隐与增量重着色扩展行为与内置构造完全一致。接口定义在 MarkdownExtension.swift。缝隙二Directives命名指令需要名称 类型化参数而分隔符表达不了的构造交给指令font(size: 18){eighteen point} color(red){tinted} flag(JP) emoji(rocket) icon(star.fill, color: yellow) pagebreak两种形态容器式带正文字体变换可双向组合——font(size: 20){**bold**}同时放大且加粗放进标题里仍保持标题字重与自含式无正文原地绘制一个随上下文缩放的图标/文字源字符只是收缩为零宽度选区、查找、复制、撤销全部照常。引擎只内置FontDirective和ColorDirective两个纯展示参考实现icon、flag、emoji、pagebreak则由 Demo 自己在 DemoDirectives.swift 中实现每个 30–60 行含参数 schema、字形与补全——这就是自定义指令的完整样板例如 FlagDirective 无需内置数据集即可匹配全部 ISO 国家代码。指令自动补全输入 即可体验引擎负责检测触发符、排序候选并路由 ↑/↓/↵/Esc 按键你只需要画列表。Demo 的整个补全弹层约 60 行 SwiftUIContentView.swift同时服务指令名和参数值两类补全输入列出所有已注册指令输入flag(jap会按代码或国家名匹配出JP并预览国旗输入emoji(则带表情预览。每个指令通过valueCompletions(for:prefix:)自行声明候选来源编辑器无需了解国旗、表情或符号的任何细节。工具栏 6 个实时开关编辑器模式速查Demo 工具栏ContentView.swift是观察引擎能力最快的方式开关作用对应配置Focus editor让编辑器获得焦点isFocused绑定Read-only只读模式样式文档仍可滚动、选择编辑关闭isEditableRaw source原始源码模式无样式、无语法隐藏config.rawSourceModeReading column居中固定宽度阅读栏620pt宽表格自动撑满全窗config.readingWidthOpt-in seams同时注销 Part 3 的全部扩展与指令config.extensions/config.directives字号 ±基础字号 10–28pt标题/代码/公式相对缩放fontSize参数另有Header菜单可开启滚动消失头部一个由宿主提供的 SwiftUI 视图托管在文档上方随文档滚动、可折叠为 40pt 吸顶行——适合放文档元信息或属性表。源码导读Demo 其实只做了三件事想在自己的项目里复刻这套能力只需关注三个位置装配配置ContentView.swift 的configuration属性——按需注入高亮桥接、公式桥接、扩展与指令这是全文最重要的 50 行样例文档同文件 sampleMarkdown 及各分区字符串常量展示了每一部分未启用时的诚实回退文案写法应用层指令DemoDirectives.swift——携带业务数据图标目录、国旗、表情与文档策略分页符的指令应留在应用侧这正是官方对引擎边界的划法。更深入的管线细节两阶段 AST、token 投影、增量解析不变量可阅读 ARCHITECTURE.md完整 API 文档以 DocC 形式随包发布在 Xcode 中Product → Build Documentation⇧⌃⌘D即可查看。常见问题遇到 missing package product 怎么办这几乎总是过期的包缓存而非配置错误。执行一次File → Packages → Reset Package Caches后重新构建即可。另外注意核心MarkdownEngine产品零外部依赖只有你显式引入MarkdownEngineCodeBlocks或MarkdownEngineLatex时才会带入 HighlighterSwift 与 SwiftMath。结语从 Demo 出发三步上手 一句话总结链接MarkdownEngine—— Part 1 全部核心特性立即可用按需加产品—— 代码高亮、LaTeX 各一个依赖只换外观不破坏解析注册自己的缝隙—— 一对定界符写扩展一个名字加参数写指令30–60 行即可上线。官方 Demo 就是这三步的活样本样例文档就是特性清单本身。跑起来、开着 6 个开关来回拨动MarkdownEngine 的设计边界会自己浮出水面。赞分享【免费下载链接】swift-markdown-engineA native AppKit Markdown editor for macOS, built on TextKit 2 and bridged to SwiftUI.项目地址https://gitcode.com/gh_mirrors/sw/swift-markdown-engine点击查看免费下载相关推荐Universal-Updater快捷键与快捷方式功能详解提升使用效率的10个技巧Universal Updater快捷键与快捷方式功能详解提升使用效率的10个技巧 Universal Updater是一款专为3DS自制软件设计的安装与更新包管理器Universal Ctags 项目完全指南文档体系、构建方式与核心特性详解Universal Ctags 项目完全指南文档体系、构建方式与核心特性详解 导读 本文以 Universal Ctags Hacking Guide即开发工具CLISpring Modulith 入门指南如何构建模块化 Spring Boot 应用Spring Modulith 入门指南如何构建模块化 Spring Boot 应用 Spring Modulith 是一款强大的工具能帮助开发者轻松构建模创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑