aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/conventionalrp
diff options
context:
space:
mode:
authorpine <dijsds@163.com>2025-03-24 11:02:56 +0800
committerpine <dijsds@163.com>2025-03-24 11:02:56 +0800
commit4f56bec03e050678b706ff34a9c8db186b63a4e1 (patch)
tree8eac0d3f3f36ec70f2d55fcf51c4fb7d367ec3be /src/conventionalrp
parent5319feea52f7266029b9a3a609a3f1ae494c6a60 (diff)
downloadconventional_role_play-4f56bec03e050678b706ff34a9c8db186b63a4e1.tar.gz
conventional_role_play-4f56bec03e050678b706ff34a9c8db186b63a4e1.zip
style: :art: Update rule file format
Diffstat (limited to 'src/conventionalrp')
-rw-r--r--src/conventionalrp/core/parser.py50
1 files changed, 25 insertions, 25 deletions
diff --git a/src/conventionalrp/core/parser.py b/src/conventionalrp/core/parser.py
index f451178..f214c4c 100644
--- a/src/conventionalrp/core/parser.py
+++ b/src/conventionalrp/core/parser.py
@@ -23,6 +23,7 @@ class Parser:
# to be continue...
self.rules = rules
+ print(f"Rules loaded: {rules}\n")
def parse_log(self, log_path: str):
"""Parse the TRPG log based on loaded rules."""
@@ -45,39 +46,38 @@ class Parser:
# metadata detect
is_metadata = False
- for rule in self.rules:
- if rule.get("type") == "metadata":
- patterns = rule.get("patterns", [])
- for pattern in patterns:
- match = re.search(pattern, line)
- if match:
- # If it's metadata, save the previous content
- if current_metadata:
- parsed_data.append({
- **current_metadata,
- "content": current_content
- })
- current_content = []
-
- # Parsing new metadata
- current_metadata = {}
- groups = rule.get("groups", [])
- for i, key in enumerate(groups):
- if i + 1 <= len(match.groups()): # Ensure effective
- current_metadata[key] = match.group(i + 1).strip()
- is_metadata = True
- break
- if is_metadata:
- break
+ metadata_content = self.rules.get("metadata")
+ patterns = metadata_content.get("patterns", [])
+ for pattern in patterns:
+ match = re.search(pattern, line)
+ if match:
+ # If it's metadata, save the previous content
+ if current_metadata:
+ parsed_data.append({
+ **current_metadata,
+ "content": current_content
+ })
+ current_content = []
+
+ # Parsing new metadata
+ current_metadata = {}
+ groups = metadata_content.get("groups", [])
+ for i, key in enumerate(groups):
+ if i + 1 <= len(match.groups()): # Ensure effective
+ current_metadata[key] = match.group(i + 1).strip()
+ is_metadata = True
+ break
if is_metadata:
continue # The metadata line has been processed, skip subsequent content matching
# content detect
remaining_line = line
+ rules = self.rules.get("content")
while remaining_line:
matched = False
- for rule in self.rules:
+
+ for rule in rules:
# pass metadata rule
if rule["type"] == "metadata":
continue