From a0dd7c8ab6d681932324e56ed101aba861a105a0 Mon Sep 17 00:00:00 2001 From: Miguel Grinberg Date: Sun, 21 May 2023 23:21:47 +0100 Subject: [PATCH] Support negative numbers for int path components (Fixes #137) --- src/microdot.py | 2 +- tests/test_url_pattern.py | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/microdot.py b/src/microdot.py index 196b3b5..030c6a3 100644 --- a/src/microdot.py +++ b/src/microdot.py @@ -736,7 +736,7 @@ class URLPattern(): if type_ == 'string': pattern = '[^/]+' elif type_ == 'int': - pattern = '\\d+' + pattern = '-?\\d+' elif type_ == 'path': pattern = '.+' elif type_.startswith('re:'): diff --git a/tests/test_url_pattern.py b/tests/test_url_pattern.py index d6520b5..7ea6a30 100644 --- a/tests/test_url_pattern.py +++ b/tests/test_url_pattern.py @@ -56,10 +56,12 @@ class TestURLPattern(unittest.TestCase): p = URLPattern('/users///') self.assertEqual(p.match('/users/123/456/'), {'id': 123, 'id2': 456}) + self.assertEqual(p.match('/users/123/-456/'), {'id': 123, 'id2': -456}) self.assertIsNone(p.match('/users/')) - self.assertIsNone(p.match('/users/123/456')) + self.assertIsNone(p.match('/users/123/-456')) self.assertIsNone(p.match('/users/123/abc/')) - self.assertIsNone(p.match('/users/123/456/abc')) + self.assertIsNone(p.match('/users/123/-456/abc')) + self.assertIsNone(p.match('/users/--123/456/')) def test_path_argument(self): p = URLPattern('/users/')