1
rannnn 2014-03-16 01:04:53 +08:00
那条语法是比较适合国人的呢?
|
2
jprovim 2014-03-16 09:28:20 +08:00 1
支持,很像Python的代碼格式,使用indentation.
|
3
akfish 2014-03-16 13:19:42 +08:00 1
看了下,和markdown的差别不明显。
可以考虑提供完善的工具链,有利于被采用,比如: - 做个live demo,左边编辑框,右边实时预览。 - 前端:只需要引用一个script+css,把strickdown写在tag里面,就会自动parse渲染 - 后端:给几个流行的博客框架写扩展,如wordpress,hexo,jekyll之类的 这样的话,别人看到能很方便的直接用于production,就更愿意去尝试下。 |
4
jakwings OP @rannnn 粗体和斜体等格式都没有限制是否不能处于文字中间。转换工具提供了换行符号的各种处理模式,可根据需求适应各种应用环境或个人风格,例如评论框中可以直接让换行符变成 <br> 。
|
5
jakwings OP @akfish 嗯,差别是不明显,不过已经解决了 Markdown 的几个老问题了。
忘了把早就用于测试的 live demo 也放上去了……补上了。 写完英文文档之后就累死了,先放上去让喜欢的人先尝尝鲜,或许别人会比我快搞定展示工具吧 →_→ |
6
sneezry 2014-03-16 17:51:41 +08:00 via iPhone 1
sexy job
|
7
SoloCompany 2014-03-17 03:27:00 +08:00 via iPad 1
不错,表示支持,markdown有太多地方不爽了,结尾空格尤其可恨,直接就违反了代码规范了
|
8
jakwings OP @SoloCompany 其实有些特殊情况也是要用到结尾空格的,例如让脚注包含块级元素,让列表项目的第一个子元素为块级元素。不过只要不太折腾就好。不过为什么文章也要遵循代码规范?
|
9
SoloCompany 2014-03-17 16:07:16 +08:00
@jakwings 说的不太正确,其实这应该是编辑器的规范,因为有代码规范的要求,一般编辑器都会配置为自动去掉行末空格的,而且一般是不区分文件类型的。实际上用行末空格来作为有意义字符这个定义我觉得是非常反人性的,这个其实和 python 刚好相反了
|
10
jakwings OP @SoloCompany 编辑器自动去掉行末空格,我觉得对于代码块很不公平,因为有时候就是想让代码块里面有行末空格,或者保留空白行的空格,marked.js 和 reStructuredText 在处理这一块时让人不太爽。
|
11
SoloCompany 2014-03-17 16:32:08 +08:00
@jakwings 这点我持保留意见,行末任何空白字符不应该作为语意的一部分,这是我坚持的一点,因为这个只有机器能识别,人眼无法识别
另外,我加一个建议,就是在语意定义上预留一个文件头的 encoding 声明的支持 当然对于 node 或浏览器内部这个是毫无意义的 但对于第三方 app 的支持,这个预留是很有必要的 如果强制文件只能用 UTF8 编码的话,虽说也不是不可以,但还是有点不爽 |
12
SoloCompany 2014-03-17 16:33:22 +08:00
我建议最好在 strictdown 中去除对行末空格的支持
|
13
SoloCompany 2014-03-17 16:35:15 +08:00
其实我更希望是反过来的语意,和 sh / bash 一样
回车默认就是换行 除非行末加反斜杠转义,才表示一行未结束 现在 strictdown 的定义是反的,默认回车不换行,除非加反斜杠 这样会使得 shell user 不太适应 |
14
jakwings OP @SoloCompany 目前行末空格只为某些比较折腾的用法保留(例如让列表项目的第一个子元素为非段落的块级元素),还有代码块。至于普通的段落和标题之类的,行首和行末的空格假如没有被转义,都不会保留的。代码块的空格我是绝对要保留的,至于那些比较折腾的语法,没想到有什么比较好的替代方法,我觉得一般人都不会太折腾这种事情的,不过复杂脚注的语法,倒是可以打算去掉第一行的行末空格,可能有不少人希望在脚注中使用块级元素,不强制那个空格也不会产生什么歧义。
至于默认回车换行,我觉得对于中文来说,换行一般就代表内容过长了,挤在一块不是很好看,在源代码里面更是难看,所以还是顺了英文用户,默认用空格连接多行了。 转换工具里面有提供默认换行的设置选项,也可设置忽略换行直接连接多行文本的。 |
15
jakwings OP @SoloCompany 由于我本身写的 node 转换工具没提供别的编码格式,我也不想折腾编码格式,把 metadata 作为语义的一部分实在是没什么特别的价值。
建议个人自行添加 metadata ,自行(修改转换工具源代码)转换。 |
16
SoloCompany 2014-03-17 17:31:08 +08:00
@jakwings 编码方式肯定和 strictdown.js 无关的,至少希望要有这样的预留出来,strictdown.js 会忽略这个声明,而文件处理工具需要读取并且写入的时候添加
|
17
SoloCompany 2014-03-17 17:33:53 +08:00
|
18
jakwings OP @SoloCompany 明白,可是我觉得这真的太影响普通用户的使用了。普通用户直接靠一些转换工具自动判断文件内容编码就可以快速转换了。
除了搞开发的,我想没什么人愿意关注 metadata 的。自己添加 metadata 对于程序员也不是什么难事,最常见的就是为特定博客系统写博文时固定用 "---" 来分隔 metadata 和文章内容,而且 metadata 还不止编码,还有更多东西,转换工具得到 metadata 后还要指定接收 metadata 的对象,而且数据结构也无法简单地统一。 |
19
jakwings OP @SoloCompany 刚刚把复杂脚注定义的语法改了,去掉标记符号后面的行末空格要求了。
其它折腾块级元素的语法技巧,其实还是基于原来简单的语法推导出来的。我暂时不知道该怎么为了那些折腾的写作方式设计不影响可读性又不会过度增加语法复杂性的新语法。总之现在不过度折腾是不会遇到行末空格的问题的。 |
20
SoloCompany 2014-03-17 17:51:41 +08:00
@jakwings 我明白,这个让写工具的人来做肯定可以的,但因为 markdown 还是 strictdown 都没有注释语法。我的意思其实是希望引入一些标准的注释,然后在注释的前提下定义 charset 声明的标准
|
21
jakwings OP @SoloCompany 注释的话太好办了,Strictdown 有个 macro 语法,凡是没有合法 macro 名称的 macro 都不会被转换并输出,macro 也可以自定义。这应该可以在不影响文章转换的前提下自动添加比较简单的隐藏数据了。
|
22
jakwings OP @SoloCompany macro 的内容支持换行,但是不支持用空白行分隔内容。
|
23
jakwings OP @jakwings 或许我得修改一下 macro 的语法,让它可以像 fenced code block 一样没遇到结束符号就不中止内容匹配。
|
24
SoloCompany 2014-03-17 18:16:13 +08:00
|
25
jakwings OP @SoloCompany 我就是为了尽量保持简单和提供方便自定义的接口才设计 macro 的。不常用的东西我不想加入到标准中,像 Markdown 我都没经常听到这类抱怨的,各种博客平台还是妥妥地运行着,想必这要求还是太小众了,Unicode 或者 UTF8 编码是目前的主流啊,其它编码的文本也有合适的转换方式。
|
26
jyz19880823 2014-03-18 14:12:10 +08:00
啥叫国人的书写习惯呢
|
27
jakwings OP @jyz19880823 4 楼。试过就更清楚了。假如要执着中文特殊标点和全角符号的问题,那只能叹息中文没有什么特别合适的标点和特殊符号用于做标记了。
|
28
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 来搞。 |
29
jakwings OP @soli metadata 对于某些人做的博客系统来说或许并不重要,反而成了降低文件内容自由度的因素。
Macro 语法应该可以解决这个任务了,例如: [[meta-yaml title: "title" date: "2014-01-01" ]] fenced code block 可以指定代码语言啊,会产生 lang-python 这样的 class 。 |
31
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 已经支持了的语法,如果能加进来的话,或许更有助于用户过渡。 |
32
jakwings OP @soli 可以将设置中的 languagePrefix 修改为 "prettyprint lang-" 来适应 prettify 。
metadata 只要统一添加使用,就算不是用 macro 语法也可以轻松过滤的,我现在写博客时给 reStructuredText 的文档添加时也是这样。 PHPMarkdownExtra 的语法除了表格不一样之外,大概只差「元素属性列表」了吧。 标题的话可以用 {标题} ,然后 [链接]:[*标题] ,虽然标题过长的时候会不太方便。 代码块属性可以靠语言名称,语言名称中的空格会被转换成横杠,既然已经这么高要求了,那么肯定是要和 CSS 、JS 打交道的了,高亮函数在获取语言名称后可以进一步分析。 Strictdown 连最基本的斜体、粗体语法都和 Markdown 不同了,要过渡(修改已经有文章)也不是太容易的事情…… |
33
jakwings OP @soli prettify 没有强制要求非要在 pre 上面加 class ,code 也可以的。
http://google-code-prettify.googlecode.com/svn/trunk/README.html |