{"id":17026089,"url":"https://github.com/yozorajs/yozora","last_synced_at":"2025-05-16T02:09:49.276Z","repository":{"id":39908461,"uuid":"234074252","full_name":"yozorajs/yozora","owner":"yozorajs","description":"A customizable markup parser for resolving markdown-like syntax strings into AST and vice versa.","archived":false,"fork":false,"pushed_at":"2025-02-26T14:32:22.000Z","size":47736,"stargazers_count":151,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-29T03:02:09.415Z","etag":null,"topics":["gfm","markdown","markdown-ast","markdown-parser","mdast","yozora"],"latest_commit_sha":null,"homepage":"https://yozora.guanghechen.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yozorajs.png","metadata":{"files":{"readme":"README-zh.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-15T12:18:20.000Z","updated_at":"2025-03-03T12:42:43.000Z","dependencies_parsed_at":"2024-05-02T10:54:51.627Z","dependency_job_id":"caf84203-9684-437d-9a1f-fbaca0ef44a9","html_url":"https://github.com/yozorajs/yozora","commit_stats":{"total_commits":1437,"total_committers":3,"mean_commits":479.0,"dds":"0.33263743910925536","last_synced_commit":"d125df1d679815b8acc36d8f1294ee02918110be"},"previous_names":["guanghechen/yozora"],"tags_count":75,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yozorajs%2Fyozora","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yozorajs%2Fyozora/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yozorajs%2Fyozora/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yozorajs%2Fyozora/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yozorajs","download_url":"https://codeload.github.com/yozorajs/yozora/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247838446,"owners_count":21004580,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gfm","markdown","markdown-ast","markdown-parser","mdast","yozora"],"created_at":"2024-10-14T07:30:27.773Z","updated_at":"2025-04-08T12:13:00.277Z","avatar_url":"https://github.com/yozorajs.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"\u003cheader\u003e\n  \u003ch1 align=\"center\"\u003e\n    \u003ca href=\"https://github.com/yozorajs/yozora#readme\"\u003eYozora\u003c/a\u003e\n    \u003cdiv align=\"center\"\u003e\n      \u003cimg alt=\"logo.png\" src=\"./logo.png\" width=\"400px\" /\u003e\n    \u003c/div\u003e\n  \u003c/h1\u003e\n  \u003cdiv align=\"center\"\u003e\n    \u003ca href=\"#license\"\u003e\n      \u003cimg\n        alt=\"License\"\n        src=\"https://img.shields.io/github/license/yozorajs/yozora\"\n      /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/yozorajs/yozora/tags\"\u003e\n      \u003cimg\n        alt=\"Package Version\"\n        src=\"https://img.shields.io/github/v/tag/yozorajs/yozora?include_prereleases\u0026sort=semver\"\n      /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/yozorajs/yozora/search?l=typescript\"\u003e\n      \u003cimg\n        alt=\"Github Top Language\"\n        src=\"https://img.shields.io/github/languages/top/yozorajs/yozora\"\n      /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/nodejs/node\"\u003e\n      \u003cimg\n        alt=\"Node.js Version\"\n        src=\"https://img.shields.io/node/v/@yozora/core-tokenizer\"\n      /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/yozorajs/yozora/actions/workflows/ci.yml\"\u003e\n      \u003cimg\n        alt=\"CI Workflow\"\n        src=\"https://github.com/yozorajs/yozora/actions/workflows/ci.yml/badge.svg\"\n      /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/facebook/jest\"\u003e\n      \u003cimg\n        alt=\"Tested with Jest\"\n        src=\"https://img.shields.io/badge/tested_with-jest-9c465e.svg\"\n      /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/prettier/prettier\"\u003e\n      \u003cimg\n        alt=\"Code Style: prettier\"\n        src=\"https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square\"\n      /\u003e\n    \u003c/a\u003e\n  \u003c/div\u003e\n\u003c/header\u003e\n\u003cbr /\u003e\n\n\u003e 参见 [Yozora 文档][yozora-docs] （或 [备用地址][yozora-docs2]） 以获得更多信息。\n\u003e\n\u003e https://user-images.githubusercontent.com/42513619/129205123-6a1983c4-6a86-4c80-83d6-02bdbf70edbf.mp4\n\n\u003cbr /\u003e\n\n## 🎉 什么是 \"yozora\" ?\n\n**_yozora_** 是日语「よぞら」的罗马音，意为“夜空”，取自*世界の終わり*乐队的『_花鳥風月_』中的歌词。\n\n此项目是一个 monorepo，目的是实现一个高度可扩展的、可插拔式 Markdown 解析器。它采用了中间件的思想，\n由核心算法 [@yozora/core-parser][] 调度分词器（如 [@yozora/tokenizer-autolink][]）完成解析工作。准确\n地说，_yozora_ 是一个将 Markdown 语法或其扩展语法编写的字符串解析成抽象语法树（AST）的算法。\n\n## ✨ Features\n\n- 🔖 完整地支持了 [GFM 规范][gfm-spec] 中提到的所有规则，并通过了几乎所有由规范中的示例改造成的测试\n  用例（除了由示例 https://github.github.com/gfm/#example-653 所展示的标签过滤规则， 因为我不打算让\n  [Yozora AST 的 React 渲染器][yozora-react] 支持原生的 HTML 标签，所以懒得做标签过滤，如果有需要可\n  以自行做一下过滤）。\n\n  可参见 [@yozora/parser-gfm] or [@yozora/parser-gfm-ex] 以获得进一步信息。\n\n- 🚀 健壮性：\n\n  - 所有代码都采用 Typescript 编写，拥有严格地静态类型检查的保障；\n  - 使用 eslint 和 prettier 约束编码风格，规避了偏僻语法及 shadow variables 之类易于出错的问题；\n  - 使用了大量的测试用例进行测试；\n\n- 💚 干净，零第三方依赖。\n\n- ⚡️ 高性能\n\n  - 解析复杂度为字符串长度乘以分词器列表长度，已经达到了理论复杂度的下界；\n\n  - 解析器的 API 支持流式读入（采用生成器/迭代器进行输入），支持边读入边解析（暂仅限于块级数据）；\n\n  - 在读入字符串时，会将其预处理成字符编码及位置信息，使用 [NodePoint][src-NodePoint] 数据类型承载。\n    在分词阶段通过扫描 [NodePoint][src-NodePoint] 的方式完成匹配，虽然匹配过程更麻烦些，但理论上性能\n    比正则表达式的匹配方式少一些常数；\n\n  - 小心地处理数组新建/连接操作，整个扫描阶段尽量复用数组，仅通过下标索引来圈定匹配范围，并应用了不\n    少策略减少重复匹配/解析操作。\n\n- 🩹 兼容性，解析器解析出的 AST 与 [Mdast][mdast-homepage] 中定义的相兼容。即便以后如果部分数据类型\n  不兼容，也可以很容易通过 [@yozora/ast-util][] 中提供的 API 去遍历 AST 以进行适配修改。\n\n- 🎨 可扩展性，yozora 采用中间件的方式，由内部算法驱动分词器列表完成解析工作，它带了如下能力：\n\n  - 易于创建并集成自定义的分词器\n  - 所有的分词器均可自由装载/卸载\n\n  此项目中已实现了一些 [GFM][gfm-spec] 中未提到的数据类型的分词器，如\n  [@yozora/tokenizer-admonition][], [@yozora/tokenizer-footnote][] 等，且均已默认内置于\n  [@yozora/parser][] 中。如果你不喜欢其中的某些，可以任意卸载它们。\n\n## Usage\n\n- [@yozora/parser][]: （**推荐**）内置了所有分词器的 Markdown 解析器。\n\n  ```typescript\n  import YozoraParser from '@yozora/parser'\n\n  const parser = new YozoraParser()\n  parser.parse('source content')\n  ```\n\n- [@yozora/parser-gfm][]: 支持 [GFM 规范][gfm-spec] 的 Markdown 解析器。内置了支持 [GFM 规\n  范][gfm-spec] 中提到的所有语法（**不包含**规范中提到的扩展语法，如\n  [table][@yozora/tokenizer-table]）的分词器。\n\n  ```typescript\n  import GfmParser from '@yozora/parser-gfm'\n\n  const parser = new GfmParser()\n  parser.parse('github flavor markdown contents')\n  ```\n\n- [@yozora/parser-gfm-ex][]: 支持 [GFM 规范][gfm-spec] 的 Markdown 解析器。内置了支持 [GFM 规\n  范][gfm-spec] 中提到的所有语法（**包括**规范中提到的扩展语法，如\n  [table][@yozora/tokenizer-table]）的分词器。\n\n  ```typescript\n  import GfmExParser from '@yozora/parser-gfm-ex'\n\n  const parser = new GfmExParser()\n  parser.parse('github flavor markdown contents (with gfm extensions enabled)')\n  ```\n\n- 将 AST 转换成标记语言（类似markdown）内容\n\n  ```typescript\n  import { DefaultMarkupWeaver } from '@yozora/markup-weaver'\n\n  const weaver = new DefaultMarkupWeaver()\n  weaver.weave({\n    \"type\": \"root\",\n    \"children\": [\n      {\n        \"type\": \"paragraph\",\n        \"children\": [\n          {\n            \"type\": \"text\",\n            \"value\": \"emphasis: \"\n          },\n          {\n            \"type\": \"strong\",\n            \"children\": [\n              {\n                \"type\": \"text\",\n                \"value\": \"foo \\\"\"\n              },\n              {\n                \"type\": \"emphasis\",\n                \"children\": [\n                  {\n                    \"type\": \"text\",\n                    \"value\": \"bar\"\n                  }\n                ]\n              },\n              {\n                \"type\": \"text\",\n                \"value\": \"\\\" foo\"\n              }\n            ]\n          }\n        ]\n      }\n    ]\n  })\n  // =\u003e emphasis: **foo \"*bar*\" foo**\n  ```\n\n### Overview\n\n- Parsers\n\n  | Parser                    | Description                                                                                                                 |\n  | :------------------------ | :-------------------------------------------------------------------------------------------------------------------------- |\n  | [@yozora/parser][]        | 内置了本仓库所有分词器的 Markdown 解析器                                                                                    |\n  | [@yozora/parser-gfm][]    | 内置了支持 [GFM 规范][gfm-spec] 中提到的所有语法（不包含规范中提到的扩展语法，如 [table][@yozora/tokenizer-table]）的分词器 |\n  | [@yozora/parser-gfm-ex][] | 内置了支持 [GFM 规范][gfm-spec] 中提到的所有语法（包括规范中提到的扩展语法，如 [table][@yozora/tokenizer-table]）的分词器   |\n\n- Weavers\n\n  | Weaver                    | Description                    |\n  | :------------------------ | :----------------------------- |\n  | [@yozora/markup-weaver][] | Weave AST into markup content. |\n\n- Tokenizers\n\n  | Tokenizer                                 | Description                                                                                                        |\n  | :---------------------------------------- | :----------------------------------------------------------------------------------------------------------------- |\n  | [@yozora/tokenizer-admonition][]          | Resolve admonitions                                                                                                |\n  | [@yozora/tokenizer-autolink][]            | Resolve [GFM Autolinks][gfm-autolink]                                                                              |\n  | [@yozora/tokenizer-autolink-extension][]  | Resolve [GFM Autolinks (extension)][gfm-autolink-extension]                                                        |\n  | [@yozora/tokenizer-blockquote][]          | Resolve [GFM blockquotes][gfm-blockquote]                                                                          |\n  | [@yozora/tokenizer-break][]               | Resolve [GFM hard line breaks][gfm-hard-line-break] and [GFM soft line breaks][gfm-soft-line-break]                |\n  | [@yozora/tokenizer-definition][]          | Resolve [GFM link reference definitions][gfm-link-reference]                                                       |\n  | [@yozora/tokenizer-delete][]              | Resolve [GFM strikethrough (extension)][gfm-delete]                                                                |\n  | [@yozora/tokenizer-ecma-import][]         | Resolve ECMAScript `import` statements                                                                             |\n  | [@yozora/tokenizer-emphasis][]            | Resolve [GFM emphasis and strong emphasis][gfm-emphasis]                                                           |\n  | [@yozora/tokenizer-fenced-code][]         | Resolve [GFM fenced code blocks][gfm-fenced-code]                                                                  |\n  | [@yozora/tokenizer-footnote][]            | Resolve footnotes                                                                                                  |\n  | [@yozora/tokenizer-footnote-definition][] | Resolve footnote definitions                                                                                       |\n  | [@yozora/tokenizer-footnote-reference][]  | Resolve footnote references                                                                                        |\n  | [@yozora/tokenizer-heading][]             | Resolve [GFM ATX headings][gfm-atx-heading]                                                                        |\n  | [@yozora/tokenizer-html-block][]          | Resolve [GFM HTML blocks][gfm-html-block]                                                                          |\n  | [@yozora/tokenizer-html-inline][]         | Resolve [GFM raw HTML][gfm-html-inline]                                                                            |\n  | [@yozora/tokenizer-image][]               | Resolve [GFM images][gfm-image]                                                                                    |\n  | [@yozora/tokenizer-image-reference][]     | Resolve [GFM reference images][gfm-image-reference]                                                                |\n  | [@yozora/tokenizer-indented-code][]       | Resolve [GFM indented code blocks][gfm-indented-code]                                                              |\n  | [@yozora/tokenizer-inline-code][]         | Resolve [GFM code spans][gfm-inline-code]                                                                          |\n  | [@yozora/tokenizer-inline-math][]         | Resolve inline formulas                                                                                            |\n  | [@yozora/tokenizer-link][]                | Resolve [GFM links][gfm-link]                                                                                      |\n  | [@yozora/tokenizer-link-reference][]      | Resolve [GFM reference links][gfm-link-reference]                                                                  |\n  | [@yozora/tokenizer-list][]                | Resolve [GFM lists][gfm-list] (with [GFM list items][gfm-list-item] and [GFM task list items][gfm-list-task-item]) |\n  | [@yozora/tokenizer-math][]                | Resolve block formulas                                                                                             |\n  | [@yozora/tokenizer-paragraph][]           | Resolve [GFM paragraphs][gfm-paragraph]                                                                            |\n  | [@yozora/tokenizer-setext-heading][]      | Resolve [GFM setext headings][gfm-setext-heading]                                                                  |\n  | [@yozora/tokenizer-table][]               | Resolve [GFM tables][gfm-table]                                                                                    |\n  | [@yozora/tokenizer-text][]                | Resolve [GFM textual contents][gfm-text]                                                                           |\n  | [@yozora/tokenizer-thematic-break][]      | Resolve [GFM thematic breaks][gfm-thematic-break]                                                                  |\n\n- Utils\n\n  | Package                    | Description                       |\n  | :------------------------- | :-------------------------------- |\n  | [@yozora/ast][]            | Yozora 中所有的 AST 节点类型      |\n  | [@yozora/ast-util][]       | 处理 AST 的工具函数库             |\n  | [@yozora/character][]      | 处理字符编码的工具库              |\n  | [@yozora/core-parser][]    | Yozora 解析器的核心算法           |\n  | [@yozora/core-tokenizer][] | Yozora 分词器相关的接口和工具函数 |\n  | [@yozora/invariant][]      | A simple invariant function       |\n\n- Scaffolds\n\n  | Package                        | Description                              |\n  | :----------------------------- | :--------------------------------------- |\n  | [@yozora/jest-for-tokenizer][] | 测试分词器的测试库，并包含大量的测试用例 |\n\n## 💡 FAQ\n\n- 如何在 gatsby 中使用 yozora？\n\n  - 参见 [@yozora/gatsby-transformer][] 和 [@yozora/gatsby-images][]\n\n- 如何实现自定义的分词器?\n\n  - 参见 [@yozora/core-tokenizer][] 以获得分词器的生命周期函数细节；\n\n  - 参见 [@yozora/jest-for-tokenizer][] 以获得测试自定义分词器相关的信息；\n\n  - 参考 [@yozora/core-parser][] 和 [@yozora/parser][] 以获得如何使用自定义分词器的信息；\n\n  另外，同样推荐参考现有的 [分词器][github-tokenizers]，以实现一个自定义的版本。\n\n## 💬 Contact\n\n- [Github issues](https://github.com/yozorajs/yozora/issues)\n\n## 📄 License\n\nYozora 使用 [MIT 许可证](https://github.com/yozorajs/yozora/blob/main/LICENSE) 进行授权。\n\n## Related\n\n- [✨光和尘一直想要一个清爽博客][ghc-post-yozora]: 为什么要写这个项目。\n- [@yozora/react-markdown][]: 一个用于将 Yozora AST 渲染成 React 组件的库。\n- [@yozora/html-markdown][]: 一个用于将 Yozora AST 渲染成 HTML 字符串的库。\n\n[ghc-post-yozora]: https://me.guanghechen.com/essay/tada/\n[gfm-spec]: https://github.github.com/gfm/\n[github-tokenizers]: https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers\n[src-NodePoint]: https://github.com/yozorajs/yozora/blob/main/packages/character/src/types.ts#L10\n[yozora-docs]: https://yozora.guanghechen.com/\n[yozora-docs2]: https://yozorajs.github.io/\n[yozora-react]: https://github.com/yozorajs/yozora-react\n[@yozora/gatsby-transformer]:\n  https://github.com/yozorajs/gatsby-scaffolds/blob/main/packages/gatsby-transformer#readme\n[@yozora/gatsby-images]:\n  https://github.com/yozorajs/gatsby-scaffolds/blob/main/packages/gatsby-images#readme\n[@yozora/html-markdown]: https://github.com/yozorajs/yozora-html/tree/main/packages/markdown\n[@yozora/react-markdown]: https://github.com/yozorajs/yozora-react/tree/main/packages/markdown\n\n\u003c!-- :begin use tokenizer/definitions --\u003e\n\n[live-examples]: https://yozora.guanghechen.com/docs/package/root#live-examples\n[docpage]: https://yozora.guanghechen.com/docs/package/root\n[homepage]: https://github.com/yozorajs/yozora/tree/release-2.x.x/.#readme\n[gfm-spec]: https://github.github.com/gfm\n[mdast-homepage]: https://github.com/syntax-tree/mdast\n[@yozora/ast]: https://github.com/yozorajs/yozora/tree/release-2.x.x/packages/ast#readme\n[@yozora/ast-util]: https://github.com/yozorajs/yozora/tree/release-2.x.x/packages/ast-util#readme\n[@yozora/character]: https://github.com/yozorajs/yozora/tree/release-2.x.x/packages/character#readme\n[@yozora/core-parser]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/packages/core-parser#readme\n[@yozora/core-tokenizer]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/packages/core-tokenizer#readme\n[@yozora/invariant]: https://github.com/yozorajs/yozora/tree/release-2.x.x/packages/invariant#readme\n[@yozora/markup-weaver]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/packages/markup-weaver#readme\n[@yozora/jest-for-tokenizer]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/packages/jest-for-tokenizer#readme\n[@yozora/parser]: https://github.com/yozorajs/yozora/tree/release-2.x.x/packages/parser#readme\n[@yozora/parser-gfm]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/packages/parser-gfm#readme\n[@yozora/parser-gfm-ex]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/packages/parser-gfm-ex#readme\n[@yozora/tokenizer-admonition]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/admonition#readme\n[@yozora/tokenizer-autolink]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/autolink#readme\n[@yozora/tokenizer-autolink-extension]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/autolink-extension#readme\n[@yozora/tokenizer-blockquote]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/blockquote#readme\n[@yozora/tokenizer-break]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/break#readme\n[@yozora/tokenizer-definition]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/definition#readme\n[@yozora/tokenizer-delete]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/delete#readme\n[@yozora/tokenizer-ecma-import]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/ecma-import#readme\n[@yozora/tokenizer-emphasis]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/emphasis#readme\n[@yozora/tokenizer-fenced-block]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/fenced-block#readme\n[@yozora/tokenizer-fenced-code]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/fenced-code#readme\n[@yozora/tokenizer-footnote]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/footnote#readme\n[@yozora/tokenizer-footnote-definition]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/footnote-definition#readme\n[@yozora/tokenizer-footnote-reference]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/footnote-reference#readme\n[@yozora/tokenizer-heading]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/heading#readme\n[@yozora/tokenizer-html-block]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/html-block#readme\n[@yozora/tokenizer-html-inline]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/html-inline#readme\n[@yozora/tokenizer-image]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/image#readme\n[@yozora/tokenizer-image-reference]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/image-reference#readme\n[@yozora/tokenizer-indented-code]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/indented-code#readme\n[@yozora/tokenizer-inline-code]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/inline-code#readme\n[@yozora/tokenizer-inline-math]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/inline-math#readme\n[@yozora/tokenizer-link]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/link#readme\n[@yozora/tokenizer-link-reference]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/link-reference#readme\n[@yozora/tokenizer-list]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/list#readme\n[@yozora/tokenizer-math]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/math#readme\n[@yozora/tokenizer-paragraph]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/paragraph#readme\n[@yozora/tokenizer-setext-heading]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/setext-heading#readme\n[@yozora/tokenizer-table]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/table#readme\n[@yozora/tokenizer-text]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/text#readme\n[@yozora/tokenizer-thematic-break]:\n  https://github.com/yozorajs/yozora/tree/release-2.x.x/tokenizers/thematic-break#readme\n[@yozora/react-admonition]:\n  https://github.com/yozorajs/yozora-react/tree/main/packages/admonition#readme\n[@yozora/react-blockquote]:\n  https://github.com/yozorajs/yozora-react/tree/main/packages/blockquote#readme\n[@yozora/react-break]: https://github.com/yozorajs/yozora-react/tree/main/packages/break#readme\n[@yozora/react-delete]: https://github.com/yozorajs/yozora-react/tree/main/packages/delete#readme\n[@yozora/react-emphasis]:\n  https://github.com/yozorajs/yozora-react/tree/main/packages/emphasis#readme\n[@yozora/react-code]: https://github.com/yozorajs/yozora-react/tree/main/packages/code#readme\n[@yozora/react-code-live]:\n  https://github.com/yozorajs/yozora-react/tree/main/packages/code-live#readme\n[@yozora/react-footnote-definitions]:\n  https://github.com/yozorajs/yozora-react/tree/main/packages/footnote-definitions#readme\n[@yozora/react-footnote-reference]:\n  https://github.com/yozorajs/yozora-react/tree/main/packages/footnote-reference#readme\n[@yozora/react-heading]: https://github.com/yozorajs/yozora-react/tree/main/packages/heading#readme\n[@yozora/react-image]: https://github.com/yozorajs/yozora-react/tree/main/packages/image#readme\n[@yozora/react-inline-code]:\n  https://github.com/yozorajs/yozora-react/tree/main/packages/inline-code#readme\n[@yozora/react-inline-math]:\n  https://github.com/yozorajs/yozora-react/tree/main/packages/inline-math#readme\n[@yozora/react-link]: https://github.com/yozorajs/yozora-react/tree/main/packages/link#readme\n[@yozora/react-list]: https://github.com/yozorajs/yozora-react/tree/main/packages/list#readme\n[@yozora/react-list-item]:\n  https://github.com/yozorajs/yozora-react/tree/main/packages/list-item#readme\n[@yozora/react-markdown]:\n  https://github.com/yozorajs/yozora-react/tree/main/packages/markdown#readme\n[@yozora/react-math]: https://github.com/yozorajs/yozora-react/tree/main/packages/math#readme\n[@yozora/react-paragraph]:\n  https://github.com/yozorajs/yozora-react/tree/main/packages/paragraph#readme\n[@yozora/react-strong]: https://github.com/yozorajs/yozora-react/tree/main/packages/strong#readme\n[@yozora/react-table]: https://github.com/yozorajs/yozora-react/tree/main/packages/table#readme\n[@yozora/react-text]: https://github.com/yozorajs/yozora-react/tree/main/packages/text#readme\n[@yozora/react-thematic-break]:\n  https://github.com/yozorajs/yozora-react/tree/main/packages/thematic-break#readme\n[doc-live-examples/gfm]: https://yozora.guanghechen.com/docs/example/gfm\n[doc-@yozora/ast]: https://yozora.guanghechen.com/docs/package/ast\n[doc-@yozora/ast-util]: https://yozora.guanghechen.com/docs/package/ast-util\n[doc-@yozora/core-parser]: https://yozora.guanghechen.com/docs/package/core-parser\n[doc-@yozora/core-tokenizer]: https://yozora.guanghechen.com/docs/package/core-tokenizer\n[doc-@yozora/parser]: https://yozora.guanghechen.com/docs/package/parser\n[doc-@yozora/parser-gfm]: https://yozora.guanghechen.com/docs/package/parser-gfm\n[doc-@yozora/parser-gfm-ex]: https://yozora.guanghechen.com/docs/package/parser-gfm-ex\n[doc-@yozora/tokenizer-admonition]: https://yozora.guanghechen.com/docs/package/tokenizer-admonition\n[doc-@yozora/tokenizer-autolink]: https://yozora.guanghechen.com/docs/package/tokenizer-autolink\n[doc-@yozora/tokenizer-autolink-extension]:\n  https://yozora.guanghechen.com/docs/package/tokenizer-autolink-extension\n[doc-@yozora/tokenizer-blockquote]: https://yozora.guanghechen.com/docs/package/tokenizer-blockquote\n[doc-@yozora/tokenizer-break]: https://yozora.guanghechen.com/docs/package/tokenizer-break\n[doc-@yozora/tokenizer-delete]: https://yozora.guanghechen.com/docs/package/tokenizer-delete\n[doc-@yozora/tokenizer-emphasis]: https://yozora.guanghechen.com/docs/package/tokenizer-emphasis\n[doc-@yozora/tokenizer-fenced-code]:\n  https://yozora.guanghechen.com/docs/package/tokenizer-fenced-code\n[doc-@yozora/tokenizer-heading]: https://yozora.guanghechen.com/docs/package/tokenizer-heading\n[doc-@yozora/tokenizer-html-block]: https://yozora.guanghechen.com/docs/package/tokenizer-html-block\n[doc-@yozora/tokenizer-html-inline]:\n  https://yozora.guanghechen.com/docs/package/tokenizer-html-inline\n[doc-@yozora/tokenizer-image]: https://yozora.guanghechen.com/docs/package/tokenizer-image\n[doc-@yozora/tokenizer-image-reference]:\n  https://yozora.guanghechen.com/docs/package/tokenizer-image-reference\n[doc-@yozora/tokenizer-indented-code]:\n  https://yozora.guanghechen.com/docs/package/tokenizer-indented-code\n[doc-@yozora/tokenizer-inline-code]:\n  https://yozora.guanghechen.com/docs/package/tokenizer-inline-code\n[doc-@yozora/tokenizer-inline-math]:\n  https://yozora.guanghechen.com/docs/package/tokenizer-inline-math\n[doc-@yozora/tokenizer-link]: https://yozora.guanghechen.com/docs/package/tokenizer-link\n[doc-@yozora/tokenizer-definition]: https://yozora.guanghechen.com/docs/package/tokenizer-definition\n[doc-@yozora/tokenizer-link-reference]:\n  https://yozora.guanghechen.com/docs/package/tokenizer-link-reference\n[doc-@yozora/tokenizer-list]: https://yozora.guanghechen.com/docs/package/tokenizer-list\n[doc-@yozora/tokenizer-math]: https://yozora.guanghechen.com/docs/package/tokenizer-math\n[doc-@yozora/tokenizer-paragraph]: https://yozora.guanghechen.com/docs/package/tokenizer-paragraph\n[doc-@yozora/tokenizer-setext-heading]:\n  https://yozora.guanghechen.com/docs/package/tokenizer-setext-heading\n[doc-@yozora/tokenizer-table]: https://yozora.guanghechen.com/docs/package/tokenizer-table\n[doc-@yozora/tokenizer-text]: https://yozora.guanghechen.com/docs/package/tokenizer-text\n[doc-@yozora/tokenizer-thematic-break]:\n  https://yozora.guanghechen.com/docs/package/tokenizer-thematic-break\n[doc-@yozora/jest-for-tokenizer]: https://yozora.guanghechen.com/docs/package/jest-for-tokenizer\n[doc-@yozora/parser-gfm]: https://yozora.guanghechen.com/docs/package/parser-gfm\n[gfm-atx-heading]: https://github.github.com/gfm/#atx-heading\n[gfm-autolink]: https://github.github.com/gfm/#autolinks\n[gfm-autolink-extension]: https://github.github.com/gfm/#autolinks-extension-\n[gfm-blockquote]: https://github.github.com/gfm/#block-quotes\n[gfm-bullet-list]: https://github.github.com/gfm/#bullet-list\n[gfm-delete]: https://github.github.com/gfm/#strikethrough-extension-\n[gfm-emphasis]: https://github.github.com/gfm/#can-open-emphasis\n[gfm-fenced-code]: https://github.github.com/gfm/#fenced-code-block\n[gfm-hard-line-break]: https://github.github.com/gfm/#hard-line-break\n[gfm-html-block]: https://github.github.com/gfm/#html-block\n[gfm-html-inline]: https://github.github.com/gfm/#raw-html\n[gfm-image]: https://github.github.com/gfm/#images\n[gfm-image-reference]: https://github.github.com/gfm/#example-590\n[gfm-indented-code]: https://github.github.com/gfm/#indented-code-block\n[gfm-inline-code]: https://github.github.com/gfm/#code-span\n[gfm-link]: https://github.github.com/gfm/#inline-link\n[gfm-definition]: https://github.github.com/gfm/#link-reference-definition\n[gfm-link-reference]: https://github.github.com/gfm/#reference-link\n[gfm-list]: https://github.github.com/gfm/#lists\n[gfm-list-item]: https://github.github.com/gfm/#list-items\n[gfm-list-task-item]: https://github.github.com/gfm/#task-list-items-extension-\n[gfm-paragraph]: https://github.github.com/gfm/#paragraph\n[gfm-setext-heading]: https://github.github.com/gfm/#setext-heading\n[gfm-soft-line-break]: https://github.github.com/gfm/#soft-line-breaks\n[gfm-strong]: https://github.github.com/gfm/#can-open-strong-emphasis\n[gfm-tab]: https://github.github.com/gfm/#tabs\n[gfm-table]: https://github.github.com/gfm/#table\n[gfm-text]: https://github.github.com/gfm/#soft-line-breaks\n[gfm-thematic-break]: https://github.github.com/gfm/#thematic-break\n\n\u003c!-- :end --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyozorajs%2Fyozora","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyozorajs%2Fyozora","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyozorajs%2Fyozora/lists"}