We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
根据定制指南里的说明:
patch: "一級設定項/二級設定項/三級設定項": 新的設定值 "另一個設定項": 新的設定值 "再一個設定項": 新的設定值 "含列表的設定項/@n": 列表第n個元素新的設定值,从零开始计数 "含列表的設定項/@last": 列表最後一個元素新的設定值 "含列表的設定項/@before 0": 在列表第一個元素之前插入新的設定值(不建議在補靪中使用) "含列表的設定項/@after last": 在列表最後一個元素之後插入新的設定值(不建議在補靪中使用) "含列表的設定項/@next": 在列表最後一個元素之後插入新的設定值(不建議在補靪中使用)
然而对于这样的一个文件:
key1: subkey1: 1 subkey2: 2
两个.custom补丁
#Patch1 patch: key1/subkey1: 3
#Patch2 patch: key1: subkey1: 3
的行为是不一样的:Patch1只会更新subkey1的值;但是Patch2会让最后生成的文件的 key1 中只剩下 subkey1 (也就是说替换了key1树)。
key1
subkey1
我遇到的问题是: 我想用 symbols.custom.yaml 来扩充 symbols.yaml 的 punctuator/symbols 。 于是我写了这样的:
symbols.custom.yaml
symbols.yaml
punctuator/symbols
patch: # NO EFFECT: punctuator/import_preset: symbols punctuator/symbols: /tq: [ 晴, 阴, 多云, 霾, 雨 ]
显然的结果是:symbols.yaml 的 punctuator/symbols 的其他项目被替换掉了。 当然,这样也是不行的:
patch: punctuator/symbols//tq: [ 晴, 阴, 多云, 霾, 雨 ]
结果是symbols增加了一个空项,/tq变成了空项的子Hash array.
/tq
我也不知道在解析patch的时候是怎么转义 / 的。试了很多办法也没达到想要的效果。
/
P.S. 当然解决我的这个问题的方法有很多,比如复制 symbols.yaml 作为 symbols.custom.yaml 的模板,或者在 luna_pinyin.schema.yaml 的 import_preset 后修正。
luna_pinyin.schema.yaml
import_preset
但是我就是想知道能不能用优雅的方法解决这个问题 ,不改动所有的输入方案的配置文件就能达到效果。或者这个问题可能会出现在其他的 .custom 文件里。
The text was updated successfully, but these errors were encountered:
首先解釋一下 #Patch2 的效果是符合設計的。因爲「替換整個 map」也是一項要滿足的需求。patch 的語義就是替換 value 而不是合併節點樹,只有 patch 下一層的 key 纔是要替換的節點路徑。
#Patch2
patch
在 rime/librime#138 之前(http://rime.im/download 的當前版本),只用 symbols.yaml:/patch 做不到替換/增加部份包含 / 的 key。但是在輸入方案裏可以,因爲 punctuator 自己實現了以方案文件中定義的 punctuator/symbols 與 preset 合併。於是我能想到的最優雅(最少重複)的辦法是:
symbols.yaml:/patch
punctuator
more_symbols.yaml
patch: { punctuator/import_preset: more_symbols }
最新的 librime 1.2.10 有好辦法。我會把用法在這篇文章裏介紹: https://github.com/rime/home/wiki/Configuration
Sorry, something went wrong.
已更新文檔: https://github.com/rime/home/wiki/Configuration
用 librime>=1.3,原題的解法是:
# symbols.custom.yaml patch: punctuator/symbols/+: /tq: [ 晴, 阴, 多云, 霾, 雨 ]
No branches or pull requests
问题的原因
根据定制指南里的说明:
然而对于这样的一个文件:
两个.custom补丁
的行为是不一样的:Patch1只会更新subkey1的值;但是Patch2会让最后生成的文件的
key1
中只剩下subkey1
(也就是说替换了key1树)。原本的问题
我遇到的问题是:
我想用
symbols.custom.yaml
来扩充symbols.yaml
的punctuator/symbols
。于是我写了这样的:
显然的结果是:
symbols.yaml
的punctuator/symbols
的其他项目被替换掉了。当然,这样也是不行的:
结果是symbols增加了一个空项,
/tq
变成了空项的子Hash array.我也不知道在解析patch的时候是怎么转义
/
的。试了很多办法也没达到想要的效果。P.S. 当然解决我的这个问题的方法有很多,比如复制
symbols.yaml
作为symbols.custom.yaml
的模板,或者在luna_pinyin.schema.yaml
的import_preset
后修正。但是我就是想知道能不能用优雅的方法解决这个问题 ,不改动所有的输入方案的配置文件就能达到效果。或者这个问题可能会出现在其他的 .custom 文件里。
The text was updated successfully, but these errors were encountered: