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

现有笔记整理 #1

Open
12 of 23 tasks
umajho opened this issue Jul 13, 2023 · 3 comments
Open
12 of 23 tasks

现有笔记整理 #1

umajho opened this issue Jul 13, 2023 · 3 comments

Comments

@umajho
Copy link
Owner

umajho commented Jul 13, 2023

一部分马上就要改的就不放在这里了。

一般

  • 块级元素的标记与文本之间应该留有空白。(类似于严格模式的 Markdown。)
  • 支持嵌入图片。(如 {{#附件||1.png}}{{#附件||#42/1.jpg}}
    • 默认以缩略图形式?
  • 解析途中,容器嵌入过多时返回
    { type: "error", … },以及在渲染时显示错误。
  • 精简归为 “文本相关样式” 的行内元素,只保留 em.strongs
    • 去掉 em 是因为其容易被滥用在汉字上,去掉 u 是因为容易搞得花里胡哨,去掉
      em.dotted1 是因为想要限制行高(考虑到与 ruby 共用时)。
  • 补上 &…; 这类转义的测试与示例文档。(2024/10/22:不再考虑支持字符实体,不过实现了字符值引用。)
    • 这类转义是不是在出成品的时候处理更好?
    • \& -> &&
  • 感觉把 ruby 叫成 “旁注” 不太准确,但叫成 “注音” 也不完全符合用途…
  • 为黑幕文本准备一个行内元素?该如何表示?(2024/10/22:改用扩展实现。)
  • 输入文本中段落内的行内元素的开合标记之间应该允许换行。(2024/10/22:个别元素不支持。)
  • 子级串的标识从类似 TP.abc/def 改为 TP.abc.def(2024/10/22:新式解析器还没考虑子串。)
  • 解析时根据传入的选项决定是否解析 h1
  • 在行内代码中,将 ``转义为`(2024/10/22:已更换转义方式。)

Playground

  • 自动保存
  • 选择范例
  • 草稿存储?
  • 预览区域 AST 的标签页,以及在预览区域统计 AST JSON 的大小。
  • 让编辑器的最小高度依赖于其容器,而非只有一行?

成品

  • 修改行高,让 ruby 文本更容易被看出其所属的基础文本。(line-height: 2?)

Dicexp 整合

  • 确保内部的括号配对,
  • 以及未来引入字符串之类的东西时分辨出括号是否在其内。

杂项

  • package.jsons
    • 各种残留的 …rotext-lite… 包名改回 …rotext…
    • 补上 "packageManager": "[email protected]",
    • 像 dicexp 那边那样去掉没用的字段?

Footnotes

  1. 可以用 “•”(U+2022)作为 ruby 文本来模拟,不过点的位置会变为上方。

@umajho
Copy link
Owner Author

umajho commented Jul 20, 2023

其他值得加入的功能:

2024/10/22 编辑:

  • 外部链接、刮开(原 “黑幕”)会作为扩展实现。
  • “notes” 无论是指提示还是旁注,都会用扩展实现。
  • 代码块已实现。
  • 内部链接正在实现。

@umajho
Copy link
Owner Author

umajho commented Oct 22, 2024

  • 针对 WASM 的进一步优化:
    • no_std
    • no_panic
    • 将渲染函数从 “返回 String” 改为 “传入 Write”,从而让代码不再依赖 Vec
    • 上述改动后的代码移至 crate rotext_core,crate rotext 提供面向一般场景的 API。
    • 如果确保 rotext_core 不需要 allocator,那剩下需要 allocator 的应该只有 rotext_wasm_bindings 了。
      • 如果再考虑一些 hack(比如每次解析前重置内存),甚至可以用 leaking allocator。

其他方面的优化:

  • 去掉 enum Event 上的 #[subenum]
    • 考虑到类型安全,可以自行实现一个宏,再为每种情况提供各一个 guard 宏。
      • 自行实现的宏还可以一并生成 enum EventType,一箭双雕。

@umajho
Copy link
Owner Author

umajho commented Nov 1, 2024

在提交 4a7d7d2 中提及的之后要完成的事情:

  • 悬浮状态的挂件的悬浮框部分,其宽度目前会受到主要部分开头的位置的影
    响,这并非预期行为。理想情况下,悬浮框的最大宽度总应该是其所处容器
    的宽度,且悬浮框应尽量满足其内容的宽度。在可满足的宽度不大于从主要
    部分到容器右侧边界的距离时,悬浮框应该像现在这样,其左侧应该与主要
    部分的左侧对其。但当不能满足上述距离时,悬浮框的对其方式应该变为:
    悬浮框的右侧贴在容器的右侧边界。

    应将悬浮框固定时的实现方式回退到原先顶部偏移的方案(即悬浮时的方案),
    以确保不同的显示形式之间不存在不一致。之后,悬浮框的最大宽度应该由其
    容器的宽度决定。原先盛放主要部分以及固定的悬浮框的悬浮框依旧使用
    inline-grid,只是原先悬浮框的改为放置一个 dummy 元素:在挂件固定时,
    该元素的高度与宽度与悬浮框同步,其他情况下则不存在。

  • 改回使用顶部偏移的方案后,就可以考虑将悬浮框实现为 sticky 了。悬浮框
    应该根据其外层(如果存在)的悬浮框决定为顶部预留的空白高度,以实现头
    部嵌套堆叠的效果。

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

No branches or pull requests

1 participant