allow escaped quotes in topic values

This commit is contained in:
gmega 2024-02-05 18:33:56 -03:00
parent 0a18c3c092
commit aa1bd2e161
No known key found for this signature in database
GPG Key ID: FFD8DAF00660270F
3 changed files with 22 additions and 4 deletions

View File

@ -14,9 +14,9 @@ _LOG_LINE = re.compile(
r'count=(?P<count>\d+)$'
)
_TOPICS = re.compile(r'((\w+=("[^"]+"|\S+) )+)?\w+=("[^"]+"|\S+)$')
_TOPICS = re.compile(r'((\w+=("[^"]+"|\S+) )+)?\w+=("([^"\\]|\\")+"|\S+)$')
_TOPICS_KV = re.compile(r'(?P<key>\w+)=(?P<value>"[^"]+"|\S+)')
_TOPICS_KV = re.compile(r'(?P<key>\w+)=(?P<value>"(?:[^"\\]|\\")+"|\S+)')
class LogLevel(Enum):

View File

@ -52,7 +52,7 @@ def test_should_parse_chronicles_fields():
}
def test_should_parse_topics_with_non_alphanumeric_characters():
def test_should_parse_topics_with_non_alphanumeric_character_values():
source = ChroniclesRawSource(
StringLogSource(
lines='WRN 2024-02-02 20:38:47.316+00:00 a message topics="codex pendingblocks" address="cid: zDx*QP4zx9" '
@ -68,3 +68,21 @@ def test_should_parse_topics_with_non_alphanumeric_characters():
'topics': '"codex pendingblocks"',
'address': '"cid: zDx*QP4zx9"',
}
def test_should_parse_topics_with_escaped_quotes_in_values():
source = ChroniclesRawSource(
StringLogSource(
lines='WRN 2024-02-02 20:38:47.316+00:00 a message topics="codex pendingblocks" '
'address="cid: \\"zDx*QP4zx9\\"" count=10641'
)
).__iter__()
line = next(source)
assert line.message == "a message"
assert line.count == 10641
assert line.fields == {
'topics': '"codex pendingblocks"',
'address': '"cid: \\"zDx*QP4zx9\\""',
}

View File

@ -1,6 +1,6 @@
[tool.poetry]
name = "logtools"
version = "1.1.1"
version = "1.1.2"
description = ""
authors = ["gmega <giuliano@status.im>"]
readme = "README.md"