Xiaocheng Song

Results 4 comments of Xiaocheng Song

@terasum Force push 了新的提交,也搞清楚一些原因了。 这里 https://github.com/terasum/js-mdict/pull/28#issuecomment-856377312 提到的排序与我实测一致: > 1. 当设定 this.header.KeyCaseSensitive 为 Yes, keyBlock 里的排列顺序是大小写分开的,先排序所有的大写,再排序所有的小写: A-Za-z,如 Holanda 会分 holanda 的前面且不在同一个 keyBlock > 2. 当设定 this.header.KeyCaseSensitive 为 No, keyBlock 里的排列顺序是大小写混合:aA-zZ,那么 Holanda...

原来的 `wordCompare` 我原以为只是 case insensitive 的比较,现在才注意到,它是,当精确匹配时返回0,否则再根据 case insensitive 的去比较的,但是 ”仅大小写不同的单词“ 该函数却返回 1,导致我的词典因为大小写不匹配找不到,所以之前某个 PR 中,我说进行两次查找,但没有注意这里的细节。两次查找仍是必要的,否则仅修改 `wordCompare` 无法解决 ”仅大小写不同的单词“ 被最先搜索到导致不再寻找更精确匹配的问题。但是在那个PR之后,我还会出现因为大小写不匹配找不到的问题,于是才发现问题提出本PR。

似乎不是多文件的问题,而是词典版本小于 2.0 的问题。我手头的 2.0 版本的词典没问题,1.x 版本的都有同样的问题。 断言失败是因为 `this.keyHeader.keyBlockInfoDecompSize` 为0,而查看了下代码,只有版本在2.0以上的情况下才设置了该属性,版本小于2.0时该属性就保持初始值0了,如下所示: https://github.com/terasum/js-mdict/blob/a3f75312071d0433ff808f994ce4f7fbf292ad03/src/mdict-base.js#L287-L293 另外,似乎不止这处,其余多处断言也会在版本 1.x 的情况下失败。 希望早日修复,支持 1.x 版本的词典。

@terasum 已经邮件私信发送到您的公开邮箱。