Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

jedi里打中文很蛋疼 #51

Open
HerringtonDarkholme opened this issue May 31, 2016 · 7 comments
Open

jedi里打中文很蛋疼 #51

HerringtonDarkholme opened this issue May 31, 2016 · 7 comments

Comments

@HerringtonDarkholme
Copy link
Contributor

' "这两个都是半角字符
在有大量零散文字出现的模板里要经常性的切换输入法状态
希望修改

@hax
Copy link
Contributor

hax commented May 31, 2016

大原则是:中文和西文是相同对待的。

所以不能

div 没有引号的文本

因为这在下面的情况导致歧义

div if x

实际上即使对中文作出特殊处理,但很多时候句子开始并不是中文,比如“Jedi是个好模板!”

jade有以下语法:

div.
  大段文本
  继续文本

jedi对应的方式是:

div "
  大段文本
  继续文本

在输入的方便性来说是一样的。jade的.也是半角字符。(jade的问题是 . 的用途过多,如 div.class.div .

Jade还有如下语法

div
  | 文本
  | 又是文本

jedi 对应的是

div
   "文本
   "又是文本

输入方便性也是一样的。jade的|也是半角。

实际 jedi 可以支持中文引号如:

div
  “来点中文
  “继续中文
  p “
    一大段
    中文

parser是可以解析的,只是code generator尚未实现。
不清楚这样的语法是否能满足你切换的问题?

也欢迎提出其他proposal。

@HerringtonDarkholme
Copy link
Contributor Author

HerringtonDarkholme commented Jun 1, 2016

那完全可以把字符串的delimiter换成text pipe,也就是 |

此外 后置if和后置for是不是实用还有待争议

@hax
Copy link
Contributor

hax commented Jun 1, 2016

@HerringtonDarkholme 后置if的问题在另一个issue里有了,这里我删了。

此处写 if 的歧义只是举一个例子,即使没有后置 if / for 也一样。Jade允许直接字符串,是因为它设计为单行除此之外没有其他结构了(将来也不能有)。而Jedi有。除了后置 if / for,还有 binding (element = data)、紧凑语法(element !,这个以后还会扩展如script !babel)。实际上Jade的这个写法还导致很容易出现诡异的错误,比如element (a=b)肉眼难以分辨是要输出属性还是输出一段以括号开始的文本。类似的还有element.aelement.a.element .aelement .a.根本看不清。

那完全可以把字符串的delimiter换成text pipe,也就是 |

这个的好处是啥?输入的角度和"似乎完全一样的情况啊。

@HerringtonDarkholme
Copy link
Contributor Author

HerringtonDarkholme commented Jun 1, 2016

我想了下text pipe的 | 比较合适
能保有“的好处的同时,中英文输入一样。
引号蛋疼的地方就是中英文输入不同。如果同时允许中英文标点那就又是多个需要lint的东西

另外一个好处是,和attributes里的字符串有区分,现在是 a @href='/src/src/src' 'text/text'
换成|后是 a @href='src/src/src' | text/text/text 而且有 @@ (这个叫什么名字?)后引号的混淆会更明显

Jade里单行直接输入文字也是有点问题,经常出现换行忘加|,或者单行多加|的问题
至于上面的.a.的错误有点硬造,圆括号开头的文字在中国网站里很少,其他.a.我好像没见过这样的错误。jedi的错误报告统计里有出现过类似的么?

@hax
Copy link
Contributor

hax commented Jun 1, 2016

mac上的简体拼音输入的是“|”(全角)。有一些输入法输入的是“·”、“¦”等符号。你多用几种不同的输入法就会发现只有比引号更糟糕。

同时允许中英文标点那就又是多个需要lint的东西

lint可以自动fix就没什么问题。

另外一个好处是,和attributes里的字符串有区分

为啥要有区分?都是文本/字符串,统一用引号不是更一致吗?理解成本也最低。

@@块里是和html几乎完全一致的属性(也就是可以直接从html里复制)。为什么会有混淆?

element (a=b)element.class.的例子是说明jade语法存在的问题,不是jedi的问题。

括号的例子是用来说明例外的存在其实是很麻烦的。正是因为小概率,所以容易被遗忘,且不会报错(这是致命的问题)。

@HerringtonDarkholme
Copy link
Contributor Author

HerringtonDarkholme commented Jun 2, 2016

你多用几种不同的输入法就会发现只有比引号更糟糕。

|不会比现在更糟糕,都是要按一下shift切换。而且编辑器都用phpstorm了,输入法有推荐也是可以的。当然不用的话就多一次按shift。

lint可以自动fix就没什么问题。

没有的东西就不要说了

@@块里是和html几乎完全一致的属性(也就是可以直接从html里复制)。为什么会有混淆?
混淆的是前面 attr='text' 和后面 textnode里的 'text'

element (a=b)、element.class.的例子是说明jade语法存在的问题

我想说的是jade里这些问题基本不存在。此外,如果加上了单行文字也要 |的话就更不容易出现element (a=b)的错误

@hax
Copy link
Contributor

hax commented Jun 2, 2016

|不会比现在更糟糕,都是要按一下shift切换。

关键是也没比现在用 " 好啊。

没有的东西就不要说了

我的意思是在这件事情上lint并不是问题。

我想说的是jade里这些问题基本不存在。

实际上是存在的。element (xxx)问题我自己就碰到过。

此外,如果加上了单行文字也要 |的话就更不容易出现element (a=b)的错误

你说写成 element | (a=b)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants