diff options
| author | 2025-03-24 11:02:56 +0800 | |
|---|---|---|
| committer | 2025-03-24 11:02:56 +0800 | |
| commit | 4f56bec03e050678b706ff34a9c8db186b63a4e1 (patch) | |
| tree | 8eac0d3f3f36ec70f2d55fcf51c4fb7d367ec3be /src | |
| parent | 5319feea52f7266029b9a3a609a3f1ae494c6a60 (diff) | |
| download | conventional_role_play-4f56bec03e050678b706ff34a9c8db186b63a4e1.tar.gz conventional_role_play-4f56bec03e050678b706ff34a9c8db186b63a4e1.zip | |
style: :art: Update rule file format
Diffstat (limited to 'src')
| -rw-r--r-- | src/conventionalrp/core/parser.py | 50 |
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 |
