mirror of
https://github.com/bestnite/sub2clash.git
synced 2026-04-26 12:51:52 +00:00
refactor: preserve template yaml structure
This commit is contained in:
+11
-14
@@ -3,17 +3,11 @@ package common
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/bestnite/sub2clash/model"
|
||||
)
|
||||
|
||||
func PrependRuleProvider(
|
||||
sub *model.Subscription, providerName string, group string, provider model.RuleProvider,
|
||||
sub *generatedConfig, providerName string, group string,
|
||||
) {
|
||||
if sub.RuleProvider == nil {
|
||||
sub.RuleProvider = make(map[string]model.RuleProvider)
|
||||
}
|
||||
sub.RuleProvider[providerName] = provider
|
||||
PrependRules(
|
||||
sub,
|
||||
fmt.Sprintf("RULE-SET,%s,%s", providerName, group),
|
||||
@@ -21,26 +15,29 @@ func PrependRuleProvider(
|
||||
}
|
||||
|
||||
func AppenddRuleProvider(
|
||||
sub *model.Subscription, providerName string, group string, provider model.RuleProvider,
|
||||
sub *generatedConfig, providerName string, group string,
|
||||
) {
|
||||
if sub.RuleProvider == nil {
|
||||
sub.RuleProvider = make(map[string]model.RuleProvider)
|
||||
}
|
||||
sub.RuleProvider[providerName] = provider
|
||||
AppendRules(sub, fmt.Sprintf("RULE-SET,%s,%s", providerName, group))
|
||||
}
|
||||
|
||||
func PrependRules(sub *model.Subscription, rules ...string) {
|
||||
// PrependRules 用于在规则头部插入新规则。
|
||||
// 这通常对应用户显式要求 prepend 的场景。
|
||||
func PrependRules(sub *generatedConfig, rules ...string) {
|
||||
if sub.Rule == nil {
|
||||
sub.Rule = make([]string, 0)
|
||||
}
|
||||
sub.Rule = append(rules, sub.Rule...)
|
||||
}
|
||||
|
||||
func AppendRules(sub *model.Subscription, rules ...string) {
|
||||
// AppendRules 在规则尾部追加,但如果尾部已有 MATCH,则保持 MATCH 仍然是最后一条。
|
||||
func AppendRules(sub *generatedConfig, rules ...string) {
|
||||
if sub.Rule == nil {
|
||||
sub.Rule = make([]string, 0)
|
||||
}
|
||||
if len(sub.Rule) == 0 {
|
||||
sub.Rule = append(sub.Rule, rules...)
|
||||
return
|
||||
}
|
||||
matchRule := sub.Rule[len(sub.Rule)-1]
|
||||
if strings.Contains(matchRule, "MATCH") {
|
||||
sub.Rule = append(sub.Rule[:len(sub.Rule)-1], rules...)
|
||||
|
||||
Reference in New Issue
Block a user