Antoine Millet avatar Antoine Millet committed 463e1b8

Added Regex type

Comments (0)

Files changed (2)

docs/schema/types.rst

 ------------------
 
 .. autoclass:: dotconf.schema.types.String
+.. autoclass:: dotconf.schema.types.Regex
 .. autoclass:: dotconf.schema.types.IPAddress
 .. autoclass:: dotconf.schema.types.IPNetwork
 .. autoclass:: dotconf.schema.types.Url

dotconf/schema/types.py

 """ Builtin types of dotconf.schema
 """
 
+import re
 import urlparse
 
 try:
         return value
 
 
+class Regex(String):
+
+    """ A string base type validated against a regex.
+    """
+
+    def __init__(self, regex, error='value doesn\'t match'):
+        super(String, self).__init__()
+        self._regex = re.compile(regex)
+        self._error = error
+
+    def validate(self, value):
+        value = super(Regex, self).validate(value)
+        if not self._regex.match(value):
+            raise ValidationError(self._error)
+        return value
+
+
 class IPAddress(String):
 
     """ A string based type representing an ipv4 or ipv6 address.
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.