summaryrefslogtreecommitdiff
path: root/plugin/plaintext/common_in.go
diff options
context:
space:
mode:
authorLoyalsoldier <[email protected]>2024-08-06 04:48:42 +0800
committerLoyalsoldier <[email protected]>2024-08-06 04:48:42 +0800
commitb5b24293ef86fd00d2673b1133b853a511ef9211 (patch)
tree5c9019c9e6f840a5d251f3afd53aa44efedbf14f /plugin/plaintext/common_in.go
parentee3687e191acbde3aabc13cf4f5dca93a3d80af5 (diff)
Feat: support extended text format with prefix & suffix in line as input
IP and CIDR with prefix and suffix in one line now can be processed by using `text` format as input, specified by args `removePrefixesInLine` and `removeSuffixesInLine`.
Diffstat (limited to 'plugin/plaintext/common_in.go')
-rw-r--r--plugin/plaintext/common_in.go22
1 files changed, 18 insertions, 4 deletions
diff --git a/plugin/plaintext/common_in.go b/plugin/plaintext/common_in.go
index f5be6aa6..cbc64c00 100644
--- a/plugin/plaintext/common_in.go
+++ b/plugin/plaintext/common_in.go
@@ -17,6 +17,9 @@ type textIn struct {
URI string
InputDir string
OnlyIPType lib.IPType
+
+ RemovePrefixesInLine []string
+ RemoveSuffixesInLine []string
}
func (t *textIn) scanFile(reader io.Reader, entry *lib.Entry) error {
@@ -40,10 +43,8 @@ func (t *textIn) scanFile(reader io.Reader, entry *lib.Entry) error {
func (t *textIn) scanFileForTextIn(reader io.Reader, entry *lib.Entry) error {
scanner := bufio.NewScanner(reader)
for scanner.Scan() {
- line := strings.TrimSpace(scanner.Text())
- if line == "" {
- continue
- }
+ line := scanner.Text()
+
line, _, _ = strings.Cut(line, "#")
line, _, _ = strings.Cut(line, "//")
line, _, _ = strings.Cut(line, "/*")
@@ -51,6 +52,19 @@ func (t *textIn) scanFileForTextIn(reader io.Reader, entry *lib.Entry) error {
if line == "" {
continue
}
+
+ line = strings.ToLower(line)
+ for _, prefix := range t.RemovePrefixesInLine {
+ line = strings.TrimSpace(strings.TrimPrefix(line, strings.ToLower(strings.TrimSpace(prefix))))
+ }
+ for _, suffix := range t.RemoveSuffixesInLine {
+ line = strings.TrimSpace(strings.TrimSuffix(line, strings.ToLower(strings.TrimSpace(suffix))))
+ }
+ line = strings.TrimSpace(line)
+ if line == "" {
+ continue
+ }
+
if err := entry.AddPrefix(line); err != nil {
return err
}