又一个类 Markdown 标记语言 Strictdown 诞生了,语法和转换工具应该会比较适合国人的书写习惯。

2014-03-16 00:25:21 +08:00
 jakwings
用 Javascript 为浏览器(应该支持 IE7)和 NodeJS 写的转换工具在 GitHub :
https://github.com/jakwings/strictdown

为了表示对外国人的谢意,先把英文说明文档搞定了,心累……(求英文大大修正)
快速语法参考: http://jakwings.github.io/strictdown/QuickReference.html
详细语法说明: http://jakwings.github.io/strictdown/Syntax.html
6577 次点击
所在节点    Markdown
34 条回复
jakwings
2014-03-17 17:58:43 +08:00
@SoloCompany 注释的话太好办了,Strictdown 有个 macro 语法,凡是没有合法 macro 名称的 macro 都不会被转换并输出,macro 也可以自定义。这应该可以在不影响文章转换的前提下自动添加比较简单的隐藏数据了。
jakwings
2014-03-17 17:59:55 +08:00
@SoloCompany macro 的内容支持换行,但是不支持用空白行分隔内容。
jakwings
2014-03-17 18:00:49 +08:00
@jakwings 或许我得修改一下 macro 的语法,让它可以像 fenced code block 一样没遇到结束符号就不中止内容匹配。
SoloCompany
2014-03-17 18:16:13 +08:00
@jakwings 既然是这样的话,我觉得还是官方把这个定义固定下来比较好

[[charset UTF-8]]

而且定义是最好要求必须出现在第一行
我觉得这样就足够好了,关键是大家都有一个标准可参考
jakwings
2014-03-17 19:01:12 +08:00
@SoloCompany 我就是为了尽量保持简单和提供方便自定义的接口才设计 macro 的。不常用的东西我不想加入到标准中,像 Markdown 我都没经常听到这类抱怨的,各种博客平台还是妥妥地运行着,想必这要求还是太小众了,Unicode 或者 UTF8 编码是目前的主流啊,其它编码的文本也有合适的转换方式。
jyz19880823
2014-03-18 14:12:10 +08:00
啥叫国人的书写习惯呢
jakwings
2014-03-18 14:55:50 +08:00
@jyz19880823 4 楼。试过就更清楚了。假如要执着中文特殊标点和全角符号的问题,那只能叹息中文没有什么特别合适的标点和特殊符号用于做标记了。
soli
2014-03-18 22:16:10 +08:00
@jakwings


> 除了搞开发的,我想没什么人愿意关注 metadata 的。自己添加 metadata 对于程序员也不是什么
> 难事,最常见的就是为特定博客系统写博文时固定用 "---" 来分隔 metadata 和文章内容,而且
> metadata 还不止编码,还有更多东西,转换工具得到 metadata 后还要指定接收 metadata 的对
> 象,而且数据结构也无法简单地统一。

我倒是觉得 metadata 是普遍存在的需求。比如现在最常见的 Yaml Front Matter。
因为标准没有这方面的规范,所以各个编辑器都无法正确的隐藏这些内容(我只记得 MarkdownPad是支持的)。

如果不想过于折腾,那可以只指定一种分隔方式,具体内容不做限制,由各个系统自行定义(我相信大部分人还是会用 YAML的)。

另外,Fenced Code Blocks 好像没有类似 PHPMarkdownExtra 那样的自定义 class?主要是语法高亮需要。否则还要专门写 js 来搞。
jakwings
2014-03-18 22:35:02 +08:00
@soli metadata 对于某些人做的博客系统来说或许并不重要,反而成了降低文件内容自由度的因素。
Macro 语法应该可以解决这个任务了,例如:
[[meta-yaml
title: "title"
date: "2014-01-01"
]]

fenced code block 可以指定代码语言啊,会产生 lang-python 这样的 class 。
jakwings
2014-03-18 22:36:01 +08:00
@jakwings 看来我还得再改进一下 macro 的语法,目前还不太适应换行。
soli
2014-03-19 09:25:01 +08:00
Macro 实现 meta 看着有点怪怪的。不过,也算曲线救国了吧。比如,我现在用

<!--
author: Soli
date: 2014-03-19
-->

这样在 Markdown 里实现的。虽然,能达到目的(编辑器自动忽略),但用的不是 Markdown 原生的语法,感觉不落地。如果我是一个编辑器的开发者的话,感觉无所适从。

现在 fenced code block 虽然可以指定代码语言,但对 google-code-prettify 这类(需要在 <pre> 里加 prettyprint class)的工具,就无能为力了。当然,还是有曲线救国的方法的。

只是,我觉得现在已经非常主流的 PHPMarkdownExtra 已经支持了的语法,如果能加进来的话,或许更有助于用户过渡。
jakwings
2014-03-19 15:28:16 +08:00
@soli 可以将设置中的 languagePrefix 修改为 "prettyprint lang-" 来适应 prettify 。

metadata 只要统一添加使用,就算不是用 macro 语法也可以轻松过滤的,我现在写博客时给 reStructuredText 的文档添加时也是这样。

PHPMarkdownExtra 的语法除了表格不一样之外,大概只差「元素属性列表」了吧。
标题的话可以用 {标题} ,然后 [链接]:[*标题] ,虽然标题过长的时候会不太方便。
代码块属性可以靠语言名称,语言名称中的空格会被转换成横杠,既然已经这么高要求了,那么肯定是要和 CSS 、JS 打交道的了,高亮函数在获取语言名称后可以进一步分析。

Strictdown 连最基本的斜体、粗体语法都和 Markdown 不同了,要过渡(修改已经有文章)也不是太容易的事情……
jakwings
2014-03-19 15:32:34 +08:00
@soli prettify 没有强制要求非要在 pre 上面加 class ,code 也可以的。
http://google-code-prettify.googlecode.com/svn/trunk/README.html
jakwings
2014-03-19 15:36:14 +08:00
@soli 看来我还是根据 sanitize 模式来决定是否将 language 中的空格转换为横杠好了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/104484

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX