add function to mixin, support removed

This commit is contained in:
2dust
2022-08-30 10:50:10 +08:00
parent 7955ff5415
commit f43e34cdba
2 changed files with 27 additions and 4 deletions

View File

@@ -181,7 +181,9 @@ namespace clashN.Handler
continue;
}
if (item.Key.StartsWith("prepend-") || item.Key.StartsWith("append-"))
if (item.Key.StartsWith("prepend-")
|| item.Key.StartsWith("append-")
|| item.Key.StartsWith("removed-"))
{
ModifyContentMerge(fileContent, item.Key, item.Value);
}
@@ -207,6 +209,7 @@ namespace clashN.Handler
private static void ModifyContentMerge(Dictionary<string, object> fileContent, string key, object value)
{
bool blPrepend = false;
bool blRemoved = false;
if (key.StartsWith("prepend-"))
{
blPrepend = true;
@@ -217,17 +220,33 @@ namespace clashN.Handler
blPrepend = false;
key = key.Replace("append-", "");
}
else
else if (key.StartsWith("removed-"))
{
return;
blRemoved = true;
key = key.Replace("removed-", "");
}
if (!fileContent.ContainsKey(key))
else
{
return;
}
var lstOri = (List<object>)fileContent[key];
var lstValue = (List<object>)value;
if (blRemoved)
{
foreach (var item in lstValue)
{
lstOri.RemoveAll(t => t.ToString().StartsWith(item.ToString()));
}
return;
}
if (!fileContent.ContainsKey(key))
{
fileContent.Add(key, value);
return;
}
if (blPrepend)
{
lstValue.Reverse();

View File

@@ -5,12 +5,16 @@
#
# 使用clash配置文件关键字则覆盖原配置
#
# removed-rules 循环匹配rules数组每行,符合则移除当前行 (此规则请放最前面)
#
# append-rules 数组合并至原配置rules数组后
# prepend-rules 数组合并至原配置rules数组前
# append-proxies 数组合并至原配置proxies数组后
# prepend-proxies 数组合并至原配置proxies数组前
# append-proxy-groups 数组合并至原配置proxy-groups数组后
# prepend-proxy-groups 数组合并至原配置proxy-groups数组前
# append-rule-providers 数组合并至原配置rule-providers数组后
# prepend-rule-providers 数组合并至原配置rule-providers数组前
#
dns: