feat: add seat firmware workbench and OTA delivery
This commit is contained in:
@@ -170,11 +170,13 @@
|
||||
if (!compact || !context?.name) return false;
|
||||
const politePrefix = "(?:(?:请|麻烦)(?:帮我|帮忙|给我)?|帮我|帮忙|给我)?";
|
||||
const prefixUpdateVerb = "(?:修改一下|修改|调整|更改|更新|改一下|变更)";
|
||||
const changePredicate = "(?:修改|改成|改为|更改|更新|变更|变为|变成|换成|调整|调节|调高|调低|调到|调成|调为|调至|设置|设为|设成|设到|设至|打开|开启|启动|关闭|关掉|关上|全关|停止|停用|切换|进入|退出|移动|前移|后退|前进|升高|降低|抬高|放低|降下|升起|调直|放倒|复位|半开|开到|关到|拉开|拉上|上锁|解锁)";
|
||||
const addPredicate = "(?:加入|添加|增加|补充|加上|追加|新增)";
|
||||
const changePredicate = `(?:${addPredicate}|修改|改成|改为|更改|更新|变更|变为|变成|换成|调整|调节|调高|调低|调到|调成|调为|调至|设置|设为|设成|设到|设至|打开|开启|启动|关闭|关掉|关上|全关|停止|停用|切换|进入|退出|移动|前移|后退|前进|升高|降低|抬高|放低|降下|升起|调直|放倒|复位|半开|开到|关到|拉开|拉上|上锁|解锁)`;
|
||||
const modeName = "([^,。!?!?、;;::]{1,64}?模式)";
|
||||
const modePossessiveBoundary = "(?:中的|里的|内的|之中的|的|中|里|内)";
|
||||
const modeMemberBoundary = `(?:${modePossessiveBoundary}|[,,::])`;
|
||||
const question = /为什么|什么|怎么|如何|介绍|解释|作用|区别|原理|哪些|多少|几(?:度|档|级|个|项)?|是否|能否|可不可以|合适吗|合理吗|会怎样|列出|告诉我|[??]|(?:吗|么|呢)[。.!!]?$/;
|
||||
const declinedAddition = new RegExp(`^(?:先|暂时)?(?:不要|别|不用|不必|无需|取消|撤销)(?:再|继续)?${addPredicate}`);
|
||||
const candidates = [
|
||||
{
|
||||
pattern: new RegExp(`^${politePrefix}${prefixUpdateVerb}${modeName}${modeMemberBoundary}[,,::]?(.*)$`),
|
||||
@@ -188,14 +190,29 @@
|
||||
pattern: new RegExp(`^${politePrefix}${modeName}${modeMemberBoundary}[,,::]?(.+)$`),
|
||||
predicateRequired: true,
|
||||
},
|
||||
{
|
||||
pattern: new RegExp(`^${politePrefix}(?:在|给|为|往|向)${modeName}(?:${modePossessiveBoundary})?[,,::]?(.+)$`),
|
||||
predicateRequired: true,
|
||||
},
|
||||
{
|
||||
pattern: new RegExp(`^${politePrefix}${modeName}((?:再|也|还)?${addPredicate}.+)$`),
|
||||
predicateRequired: true,
|
||||
},
|
||||
{
|
||||
pattern: new RegExp(`^${politePrefix}(?:把|将)(.+?)${addPredicate}(?:到|进)?${modeName}(?:中|里|内)?[。.!!]?$`),
|
||||
predicateRequired: false,
|
||||
nameIndex: 2,
|
||||
changeIndex: 1,
|
||||
},
|
||||
];
|
||||
return candidates.some(({ pattern, predicateRequired }) => {
|
||||
return candidates.some(({ pattern, predicateRequired, nameIndex = 1, changeIndex = 2 }) => {
|
||||
const matched = compact.match(pattern);
|
||||
const change = String(matched?.[2] || "");
|
||||
const change = String(matched?.[changeIndex] || "");
|
||||
return Boolean(
|
||||
matched
|
||||
&& normalizeModeName(matched[1]) === normalizeModeName(context.name)
|
||||
&& normalizeModeName(matched[nameIndex]) === normalizeModeName(context.name)
|
||||
&& !question.test(change)
|
||||
&& !declinedAddition.test(change)
|
||||
&& (!predicateRequired || new RegExp(changePredicate).test(change))
|
||||
);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user