又一个类 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
6699 次点击
所在节点    Markdown
34 条回复
rannnn
2014-03-16 01:04:53 +08:00
那条语法是比较适合国人的呢?
jprovim
2014-03-16 09:28:20 +08:00
支持,很像Python的代碼格式,使用indentation.
akfish
2014-03-16 13:19:42 +08:00
看了下,和markdown的差别不明显。
可以考虑提供完善的工具链,有利于被采用,比如:
- 做个live demo,左边编辑框,右边实时预览。
- 前端:只需要引用一个script+css,把strickdown写在tag里面,就会自动parse渲染
- 后端:给几个流行的博客框架写扩展,如wordpress,hexo,jekyll之类的

这样的话,别人看到能很方便的直接用于production,就更愿意去尝试下。
jakwings
2014-03-16 15:23:33 +08:00
@rannnn 粗体和斜体等格式都没有限制是否不能处于文字中间。转换工具提供了换行符号的各种处理模式,可根据需求适应各种应用环境或个人风格,例如评论框中可以直接让换行符变成 <br> 。
jakwings
2014-03-16 15:46:14 +08:00
@akfish 嗯,差别是不明显,不过已经解决了 Markdown 的几个老问题了。
忘了把早就用于测试的 live demo 也放上去了……补上了。
写完英文文档之后就累死了,先放上去让喜欢的人先尝尝鲜,或许别人会比我快搞定展示工具吧 →_→
sneezry
2014-03-16 17:51:41 +08:00
sexy job
SoloCompany
2014-03-17 03:27:00 +08:00
不错,表示支持,markdown有太多地方不爽了,结尾空格尤其可恨,直接就违反了代码规范了
jakwings
2014-03-17 14:04:13 +08:00
@SoloCompany 其实有些特殊情况也是要用到结尾空格的,例如让脚注包含块级元素,让列表项目的第一个子元素为块级元素。不过只要不太折腾就好。不过为什么文章也要遵循代码规范?
SoloCompany
2014-03-17 16:07:16 +08:00
@jakwings 说的不太正确,其实这应该是编辑器的规范,因为有代码规范的要求,一般编辑器都会配置为自动去掉行末空格的,而且一般是不区分文件类型的。实际上用行末空格来作为有意义字符这个定义我觉得是非常反人性的,这个其实和 python 刚好相反了
jakwings
2014-03-17 16:23:38 +08:00
@SoloCompany 编辑器自动去掉行末空格,我觉得对于代码块很不公平,因为有时候就是想让代码块里面有行末空格,或者保留空白行的空格,marked.js 和 reStructuredText 在处理这一块时让人不太爽。
SoloCompany
2014-03-17 16:32:08 +08:00
@jakwings 这点我持保留意见,行末任何空白字符不应该作为语意的一部分,这是我坚持的一点,因为这个只有机器能识别,人眼无法识别

另外,我加一个建议,就是在语意定义上预留一个文件头的 encoding 声明的支持
当然对于 node 或浏览器内部这个是毫无意义的
但对于第三方 app 的支持,这个预留是很有必要的

如果强制文件只能用 UTF8 编码的话,虽说也不是不可以,但还是有点不爽
SoloCompany
2014-03-17 16:33:22 +08:00
我建议最好在 strictdown 中去除对行末空格的支持
SoloCompany
2014-03-17 16:35:15 +08:00
其实我更希望是反过来的语意,和 sh / bash 一样
回车默认就是换行
除非行末加反斜杠转义,才表示一行未结束

现在 strictdown 的定义是反的,默认回车不换行,除非加反斜杠

这样会使得 shell user 不太适应
jakwings
2014-03-17 16:55:28 +08:00
@SoloCompany 目前行末空格只为某些比较折腾的用法保留(例如让列表项目的第一个子元素为非段落的块级元素),还有代码块。至于普通的段落和标题之类的,行首和行末的空格假如没有被转义,都不会保留的。代码块的空格我是绝对要保留的,至于那些比较折腾的语法,没想到有什么比较好的替代方法,我觉得一般人都不会太折腾这种事情的,不过复杂脚注的语法,倒是可以打算去掉第一行的行末空格,可能有不少人希望在脚注中使用块级元素,不强制那个空格也不会产生什么歧义。

至于默认回车换行,我觉得对于中文来说,换行一般就代表内容过长了,挤在一块不是很好看,在源代码里面更是难看,所以还是顺了英文用户,默认用空格连接多行了。

转换工具里面有提供默认换行的设置选项,也可设置忽略换行直接连接多行文本的。
jakwings
2014-03-17 17:00:31 +08:00
@SoloCompany 由于我本身写的 node 转换工具没提供别的编码格式,我也不想折腾编码格式,把 metadata 作为语义的一部分实在是没什么特别的价值。
建议个人自行添加 metadata ,自行(修改转换工具源代码)转换。
SoloCompany
2014-03-17 17:31:08 +08:00
@jakwings 编码方式肯定和 strictdown.js 无关的,至少希望要有这样的预留出来,strictdown.js 会忽略这个声明,而文件处理工具需要读取并且写入的时候添加
SoloCompany
2014-03-17 17:33:53 +08:00
@jakwings 代码块里面的所有内容都保留,包括空格,这个同意

但代码块之外也就是说语法本身,最好就不要支持行末空格了,直接 trim 掉都可以接受
jakwings
2014-03-17 17:39:17 +08:00
@SoloCompany 明白,可是我觉得这真的太影响普通用户的使用了。普通用户直接靠一些转换工具自动判断文件内容编码就可以快速转换了。

除了搞开发的,我想没什么人愿意关注 metadata 的。自己添加 metadata 对于程序员也不是什么难事,最常见的就是为特定博客系统写博文时固定用 "---" 来分隔 metadata 和文章内容,而且 metadata 还不止编码,还有更多东西,转换工具得到 metadata 后还要指定接收 metadata 的对象,而且数据结构也无法简单地统一。
jakwings
2014-03-17 17:44:10 +08:00
@SoloCompany 刚刚把复杂脚注定义的语法改了,去掉标记符号后面的行末空格要求了。

其它折腾块级元素的语法技巧,其实还是基于原来简单的语法推导出来的。我暂时不知道该怎么为了那些折腾的写作方式设计不影响可读性又不会过度增加语法复杂性的新语法。总之现在不过度折腾是不会遇到行末空格的问题的。
SoloCompany
2014-03-17 17:51:41 +08:00
@jakwings 我明白,这个让写工具的人来做肯定可以的,但因为 markdown 还是 strictdown 都没有注释语法。我的意思其实是希望引入一些标准的注释,然后在注释的前提下定义 charset 声明的标准

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

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

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

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

© 2021 V2EX