Orga, 终极org-mode解析器 in JavaScript

最近搞了一个JavaScript 版 org-mode parser。原因很简单,org-mode parser 很少。这个 还不错,但是基本已经荒废了,好多功能都没有。其他的不管是质量还是功能都比较堪忧。于是我自己搞了一个。

特色:

我的parser会把org-mode string 转换为 AST (Abstract Syntax Tree)。这样就不仅仅是org-mode → html这种简单的应用。能够限制你的只有你的想象力。而且这个AST是完全跟unified.js 兼容。这样 unified.js 生态圈里的工具基本都可以很轻松的拿来就用。举几个例子:

  • retext生态系统做自然语言 lint. 检查拼写,语法,统计等等。
  • rehype生态系统做html之类的转换(已实现)。
  • command line interface (正在做)。不需要依赖 emacs 的 org-mode 工具。
  • 生成静态网站(已实现)。Gatsbyjs 版本的插件已经全面上线。starter project and demo.

感兴趣的大侠们可以看下官方文档,目前上面有一些基本应用教程和完整AST说明。后续会有更多文档跟进。当然,欢迎各种PR。测试,文档,bug fix都可以。新feature请在issue里讨论。Repo这在

24 个赞

哇哇哇居然支持Gatsby了!给大佬打call!!!从swift-org起就一直关注你啦! 看了下语法支持 很全面啊!

:pray:感谢支持。swift-org的强化版很快就要公开了。iOS app 也在 roadmap 中。

2 个赞

AST会考虑加入inline math支持吗? (以及其他种类的latex environment)

会的,这个 parser 会尽量跟org-mode syntax保持一致。对于parser本身,我觉得最make sense 的实现是直接返回node:

{
  type: “latex”,
  name: “equation”,
  value: “x=\sqrt{b}”
}

具体的render可以在org-mode to HTML 层用其他包来实现。这样其实就没有多少工作在parser这边。

3 个赞

cool 给大佬膜拜~

嗯嗯 我是这个意思,有这个type的话就可以直接把remark markdown的KaTeX插件拿来改两行就能用了~

和 org-mode 社区多交流, 甚至可以入住 code.orgmode.org, 单打独斗太吃力,发展成team才是王道。

3 个赞

是的,等api稳定稳定,会尽量进军org-mode community.

1 个赞

我只想说,你牛,加油。。。。

1 个赞

你这个好赞,我去好好研究一下

给大佬疯狂打call,很早前就痛苦与没有org的解析器,导致博客都很久没有更新了

纠正一个小错误:https://xiaoxinghu.github.io/orgajs/ 首页上的这一行字:“Orga is the ultimate org-mode parser, writen in JavaScript.” 这里应该是written而非writen吧(双写t)

@Roife Fixed. Thanks!

静态网站的话 hexo 不了解一下吗

@dawn Orga不支持中文标签的吗?

@yqu212 如果方便的话可以在这里 create an issue. 我稍后会处理。最近憋大招呢 :wink:.

1 个赞

好奇,支持 #+include: xxx.org 这样的嘛?

Even better (至少我这么觉得😄)

#+html: import Box from './components/box'
* hello headline
#+begin_export html
<Box>and this is react.</Box>
#+end_export

基本上就是 mdx for org-mode.

唔…不行.

我大量使用了 include xxx xx行-xx行…