LincZero / obsidian-any-block

A Obsidian Plugin. You can flexibility to create a 'Block' by some means. It also provides some useful features, like `list to table`.
https://linczero.github.io/MdNote_Public/ProductDoc/AnyBlock/
GNU Affero General Public License v3.0
173 stars 8 forks source link

[bug] 复选框列表不识别、列表转表格时列表中的行内代码符”`` ` ` ``“无法正确渲染 #2

Closed Linzeal closed 1 year ago

Linzeal commented 1 year ago

列表转表格test

  1. 列表中有行内代码符` `无法正确渲染
  2. 列表中代码符` `里有<符号时渲染出错
  3. 复选框列表的勾选框无法正确渲染 @LincZero

测试环境:

image

LincZero commented 1 year ago
  1. 复选框和有序列表问题已记录
  2. 用md语法需要使用list2mdtable(而非list2table),哪怕是只使用了内联样式 _ list2mdtable会将单元格看成md、list2table会将单元格内容看成html内容 前者兼容后者,后者可以使用<br/><code><b><strong>来代替md语法,问题中有<符号出错是因为被识别为标签了 2mdtable更类似于原生的table,2table是简化版(节约性能啥的)
Linzeal commented 1 year ago

原来如此,明白了list2mdtable和list2table的区别及使用场景。

但我觉得在同一功能上给用户提供多个选择器,什么分为[list2mdtable]、[list2table]、[2lt]等等诸多个,不太适合,纯属在人为制造问题。

不论Any Block是否计划要做为一个平台提供API给其他插件,届时Any Block的用户肯定是世界各地、各式各样,一定会有很多用户不会去深入了解各选择器的使用要求,就会用着[list2table]但单元格里有MD的内联样式;或着是一开始有耐心去阅读使用须知从而知道各选择器的使用要求,看单元格没有MD的内联样式就使用了[list2table]选择器,但一段时间后单元格修改时无意间添加了MD的内联样式,这就出现了渲染出错,若是做为API数据出错就更麻烦。你无法预知用户会选择什么选择器、输入什么内容,性能更不是首要的,稳定及容错才是首要,性能待稳定后再去优化。因此,接口应当统一,少给用户做选择,就算有选择的事情也应当尽量交由代码代替人类去做。

而且从用户角度思考,用户只是想转换为表格,不会想去思考这是转mdtable、那是转listtable、那是转ut,懒得去费那脑筋。甚至用户连要把什么来转为表格的东西都不在乎,别管我是要把列表转表格,还是要把脑图转表格,反正就一个,只在乎简单的目的:[2table]。

因此,个人建议在用户层面无须提供多个同类的选择器,应当合并做减法,同功能只提供一个统一选择器即可,并提高容错。如转为表格,统一使用[2table],一律默认按同时有MD的内联样式和html语法标签以及可折叠来处理。如转为脑图,统一使用[2mermaid],等等。至于性能优化,放到代码中去选择去优化,比如[list2mdtable]、[list2table]、[2lt]等等选择器藏在代码里,供程序员和API使用。

LincZero commented 1 year ago

关了,复选框问题 #6,list2mdtable和list2table的问题需要先解决 #12