Sfoglia il codice sorgente

reex: added prefix_group_names()

Fabian Peter Hammerle 8 anni fa
parent
commit
bcb18fd80d
3 ha cambiato i file con 21 aggiunte e 1 eliminazioni
  1. 7 0
      ioex/reex.py
  2. 1 1
      setup.py
  3. 13 0
      tests/reex/test_prefix_group_names.py

+ 7 - 0
ioex/reex.py

@@ -9,3 +9,10 @@ def rename_groups(pattern, name_repl):
         pattern_repl,
         pattern,
     )
+
+
+def prefix_group_names(pattern, prefix):
+    return rename_groups(
+        pattern=pattern,
+        name_repl=lambda group_name: prefix + group_name,
+    )

+ 1 - 1
setup.py

@@ -5,7 +5,7 @@ import glob
 setup(
     name = 'ioex',
     packages = ['ioex'],
-    version = '0.13.0',
+    version = '0.14.0',
     description = 'extension for python\'s build-in input / output interface',
     author = 'Fabian Peter Hammerle',
     author_email = 'fabian.hammerle@gmail.com',

+ 13 - 0
tests/reex/test_prefix_group_names.py

@@ -0,0 +1,13 @@
+# -*- coding: utf-8 -*-
+import pytest
+
+import ioex.reex
+
+
+@pytest.mark.parametrize(('source', 'prefix', 'expected'), [
+    ['(?P<a>a)', 'pre_', '(?P<pre_a>a)'],
+    ['(?P<a>a(?P<a1>1))', 'pre_', '(?P<pre_a>a(?P<pre_a1>1))'],
+    ['(?P<a>a)(?P<b>b)', 'pre_', '(?P<pre_a>a)(?P<pre_b>b)'],
+])
+def test_prefix_group_names(source, prefix, expected):
+    assert expected == ioex.reex.prefix_group_names(source, prefix)