Skip to content

Commit

Permalink
Update float parsing regex and add new test cases
Browse files Browse the repository at this point in the history
Updated the regex in `ArgumentsParser` to handle floats with leading or trailing decimal points. Added new test cases in `TestArgumentsParser` to verify parsing of `.5`, `7.`, `-.5`, `-7.`, `+.5`, and `+7.`.
  • Loading branch information
KubaZ2 committed Jan 24, 2025
1 parent 8c0f6d9 commit 08cf43d
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ def __init__(self, extra_parsers: Optional[List[IParsable]] = None):
self._name_parser = NameArgumentParser()
self._parsers = []
self._parsers.append(ArgumentGenericTypeParser(r"(?P<value>[+-]?\d+)", lambda v, _: int(v)))
self._parsers.append(ArgumentGenericTypeParser(r"(?P<value>[+-]?\d+\.?\d*)", lambda v, _: float(v)))
self._parsers.append(ArgumentGenericTypeParser(r"(?P<value>[+-]?(?:\.\d+|\d+\.?\d*))", lambda v, _: float(v)))
self._parsers.append(ListArgumentParser())
self._parsers.append(ArgumentGenericTypeParser(r'(\"(?P<value>.*)\")', lambda v, _: v))
self._parsers.append(ArgumentGenericTypeParser( r'(?P<value>true)', lambda v, _: True))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,16 +31,34 @@ def test_parse_float(self):
result = tokenizer.tokenize("7.5")
self.assertEqual([7.5], result)

result = tokenizer.tokenize(".5")
self.assertEqual([.5], result)

result = tokenizer.tokenize("7.")
self.assertEqual([7.], result)

def test_parse_minus_float(self):
tokenizer = ArgumentsParser()
result = tokenizer.tokenize("-7.5")
self.assertEqual([-7.5], result)

result = tokenizer.tokenize("-.5")
self.assertEqual([-.5], result)

result = tokenizer.tokenize("-7.")
self.assertEqual([-7.], result)

def test_parse_plus_float(self):
tokenizer = ArgumentsParser()
result = tokenizer.tokenize("+7.5")
self.assertEqual([7.5], result)

result = tokenizer.tokenize("+.5")
self.assertEqual([+.5], result)

result = tokenizer.tokenize("+7.")
self.assertEqual([+7.], result)

def test_parse_string(self):
tokenizer = ArgumentsParser()
result = tokenizer.tokenize('"test str"')
Expand Down

0 comments on commit 08cf43d

Please sign in to comment.