Closed ikey4u closed 2 years ago
現有的 MDict
源碼—— txt
文件編寫時,語法受限不少,代碼複用率偏低。
請教全新詞典格式標準中,在 源碼
編寫場景,能否引入類 YAML
語言的 __include
和 __patch
指令,
藉此提高代碼複用性,作者在 源碼
編寫完畢後,再使用 打包工具
編譯部署,生成平臺可調用的 詞典
文件格式。
PageDemo:
text: Demo
image: Demo.png
Abc:
__include: /PageDemo
Def:
__include: /PageDemo
__patch:
text: [ Def, Demo ]
@rainhear 是否能给一个稍微完整的, 能够体现你编辑痛点的例子? 我对 yaml 这种语法(指include, patch)不是特别熟悉, 也许可以用另一种方式解决.
MDict
中使用 @@@LINK=
指令執行後,當前節點
會重定向到 指定節點
,同時 當前節點
無法再 重寫
或 追加
任何 屬性
與 內容
,期待有一種更新型的指令可如 @@@INCLUDE=
原始代碼
TextArticle
<span> Proverb </span><br>
</>
PageA @@@INCLUDE=[TextArticle, ImageA] </>
PageB @@@INCLUDE=[TextArticle, ImageB] </>
KeyA
Love him love his dog
@@@INCLUDE=PageA
</>
KeyB
God Save the Queen
@@@INCLUDE=PageB
</>
- 期待打包工具編譯後的效果
``` html
TextArticle
<span> Proverb </span><br>
</>
ImageA
<img src="/ImageA.png" width="100%"><br><a href="entry://ImageZ">PageUp</a> <a href="entry://ImageB">PageDown</a>
</>
ImageB
<img src="/ImageB.png" width="100%"><br><a href="entry://ImageA">PageUp</a> <a href="entry://ImageC">PageDown</a>
</>
PageA
<span> Proverb </span><br><img src="/ImageA.png" width="100%"><br><a href="entry://ImageZ">PageUp</a> <a href="entry://ImageB">PageDown</a>
</>
PageB
<span> Proverb </span><br><img src="/ImageB.png" width="100%"><br><a href="entry://ImageA">PageUp</a> <a href="entry://ImageC">PageDown</a>
</>
KeyA
<span> Love him love his dog </span><br><span> Proverb </span><br><img src="/ImageA.png" width="100%"><br><a href="entry://ImageZ">PageUp</a> <a href="entry://ImageB">PageDown</a>
</>
KeyB
<span> God Save the Queen </span><br><span> Proverb </span><br><img src="/ImageB.png" width="100%"><br><a href="entry://ImageA">PageUp</a> <a href="entry://ImageC">PageDown</a>
</>
掌上百科
有網友提出使用 HTML
iframe
元素,可使 A
節點現有的 屬性
與 內容
保持不變,在此基礎上嵌套 B
節點內容。但各大詞典平臺對 iframe
元素支援度不一,GoldenDict
上無法實現。詳情可見 掌上百科如果著手引入 @@@INCLUDE=
指令,此時也當考慮 換行符號
是否會導致打包工具無法準確編譯的潛在風險。
現有 MDict
標準規定了 節點
須符合 三行式
編寫規範,多餘的 換行
與 縮進
可能會導致打包工具無法準確編譯。
個人認為源碼 txt
中應當能夠支援必要的排版 縮進
與 換行
,這樣在源碼編寫過程中,代碼可讀性會更高。
最終的數據格式化工序應該交由打包工具來實現。
TextArticle
<span> Proverb </span>
<br>
</>
ImageA
<img src="/ImageA.png" width="100%">
<br>
<a href="entry://ImageZ">PageUp</a>
 
<a href="entry://ImageB">PageDown</a>
</>
ImageB
<img src="/ImageB.png" width="100%">
<br>
<a href="entry://ImageA">PageUp</a>
 
<a href="entry://ImageC">PageDown</a>
</>
PageA
@@@INCLUDE=[TextArticle, ImageA]
</>
PageB
@@@INCLUDE=[TextArticle, ImageB]
</>
KeyA
<span> Love him love his dog </span>
<br>
@@@INCLUDE=PageA
</>
KeyB
<span> God Save the Queen </span>
<br>
@@@INCLUDE=PageB
</>
更近一步,敝人可能想到了數據的封裝性,比如提供類似 Java
語言中的 private
public
限定修飾符。
私有
節點僅平臺內部調用,公開
節點則用戶可見。
當然這種設計可能會加重作者的編寫難度和打包工具的編譯成本。
@private
TextArticle
<span> Proverb </span>
<br>
</>
@private
ImageA
<img src="/ImageA.png" width="100%">
<br>
<a href="entry://ImageZ">PageUp</a>
 
<a href="entry://ImageB">PageDown</a>
</>
@private
ImageB
<img src="/ImageB.png" width="100%">
<br>
<a href="entry://ImageA">PageUp</a>
 
<a href="entry://ImageC">PageDown</a>
</>
@public
PageA
@@@INCLUDE=[TextArticle, ImageA]
</>
@public
PageB
@@@INCLUDE=[TextArticle, ImageB]
</>
@public
KeyA
<span> Love him love his dog </span>
<br>
@@@INCLUDE=PageA
</>
@public
KeyB
<span> God Save the Queen </span>
<br>
@@@INCLUDE=PageB
</>
* 如果著手引入 `@@@INCLUDE=` 指令,此時也當考慮 `換行符號` 是否會導致打包工具無法準確編譯的潛在風險。 * 現有 `MDict` 標準規定了 `節點` 須符合 `三行式` 編寫規範,多餘的 `換行` 與 `縮進` 可能會導致打包工具無法準確編譯。 * 個人認為源碼 `txt` 中應當能夠支援必要的排版 `縮進` 與 `換行`,這樣在源碼編寫過程中,代碼可讀性會更高。 * 最終的數據格式化工序應該交由打包工具來實現。
TextArticle <span> Proverb </span> <br> </> ImageA <img src="/ImageA.png" width="100%"> <br> <a href="entry://ImageZ">PageUp</a>   <a href="entry://ImageB">PageDown</a> </> ImageB <img src="/ImageB.png" width="100%"> <br> <a href="entry://ImageA">PageUp</a>   <a href="entry://ImageC">PageDown</a> </> PageA @@@INCLUDE=[TextArticle, ImageA] </> PageB @@@INCLUDE=[TextArticle, ImageB] </> KeyA <span> Love him love his dog </span> <br> @@@INCLUDE=PageA </> KeyB <span> God Save the Queen </span> <br> @@@INCLUDE=PageB </>
对, 类似于格式化这种方便编辑人阅读, 这个我已经考虑到了.
* 更近一步,敝人可能想到了數據的封裝性,比如提供類似 `Java` 語言中的 `private` `public` 限定修飾符。 * `私有` 節點僅平臺內部調用,`公開` 節點則用戶可見。 * 當然這種設計可能會加重作者的編寫難度和打包工具的編譯成本。
@private TextArticle <span> Proverb </span> <br> </> @private ImageA <img src="/ImageA.png" width="100%"> <br> <a href="entry://ImageZ">PageUp</a>   <a href="entry://ImageB">PageDown</a> </> @private ImageB <img src="/ImageB.png" width="100%"> <br> <a href="entry://ImageA">PageUp</a>   <a href="entry://ImageC">PageDown</a> </> @public PageA @@@INCLUDE=[TextArticle, ImageA] </> @public PageB @@@INCLUDE=[TextArticle, ImageB] </> @public KeyA <span> Love him love his dog </span> <br> @@@INCLUDE=PageA </> @public KeyB <span> God Save the Queen </span> <br> @@@INCLUDE=PageB </>
这种做法, 如果对于有编程经验的人而言可能比较好理解, 但是对于普通人, 这种规则恐怕引入了不必要的复杂性.
wikit.db: sqlite 格式
wikit.cache: 用户查询缓存, 也就是 wikit.db 的一个子集
wikit.data: binary