diff options
author | Aldo Cortesi <aldo@nullcube.com> | 2012-04-29 12:05:38 +1200 |
---|---|---|
committer | Aldo Cortesi <aldo@nullcube.com> | 2012-04-29 12:05:38 +1200 |
commit | 2d88d88f8c27b50f5d4d532ae54a8c643e6dc868 (patch) | |
tree | 939eca7007597411b56c5990456f27f921798fa0 /libpathod/utils.py | |
parent | 7ca5c7ae90c32cfc238d893eb302acc06deb2e70 (diff) | |
download | mitmproxy-2d88d88f8c27b50f5d4d532ae54a8c643e6dc868.tar.gz mitmproxy-2d88d88f8c27b50f5d4d532ae54a8c643e6dc868.tar.bz2 mitmproxy-2d88d88f8c27b50f5d4d532ae54a8c643e6dc868.zip |
Basic anchor adding.
Diffstat (limited to 'libpathod/utils.py')
-rw-r--r-- | libpathod/utils.py | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/libpathod/utils.py b/libpathod/utils.py index 104ee148..daeccdea 100644 --- a/libpathod/utils.py +++ b/libpathod/utils.py @@ -1,4 +1,27 @@ -import copy, os +import copy, os, re +import rparse + +class AnchorError(Exception): pass + +def parse_anchor_spec(s, settings): + """ + For now, this is very simple, and you can't have an '=' in your regular + expression. + """ + if not "=" in s: + raise AnchorError("Invalid anchor definition: %s"%s) + rex, spec = s.split("=", 1) + try: + re.compile(rex) + except re.error: + raise AnchorError("Invalid regex in anchor: %s"%s) + try: + rparse.parse(settings, spec) + except rparse.ParseException, v: + raise AnchorError("Invalid page spec in anchor: '%s', %s"%(s, str(v))) + + return rex, spec + class Data: def __init__(self, name): |