Make ID expansion less strict for comment text.
authorW. Trevor King <wking@drexel.edu>
Sat, 3 Mar 2012 16:19:43 +0000 (11:19 -0500)
committerW. Trevor King <wking@drexel.edu>
Sat, 3 Mar 2012 16:19:49 +0000 (11:19 -0500)
This avoids errors if the comment text references a repository that
you don't have locally.

libbe/util/id.py

index 8dc607590e35aec55583f777c7bd8f1731183118..9a90af5caf0bb32bbc7fdee646c791bd2dc2513b 100644 (file)
@@ -471,17 +471,24 @@ class IDreplacer (object):
     --------
     short_to_long_text, long_to_short_text
     """
-    def __init__(self, bugdirs, replace_fn, wrap=True):
+    def __init__(self, bugdirs, replace_fn, wrap=True, strict=True):
         self.bugdirs = bugdirs
         self.replace_fn = replace_fn
         self.wrap = wrap
+        self.strict = strict
+
     def __call__(self, match):
         ids = []
         for m in match.groups():
             if m == None:
                 m = ''
             ids.append(m)
-        replacement = self.replace_fn(self.bugdirs, ''.join(ids))
+        try:
+            replacement = self.replace_fn(self.bugdirs, ''.join(ids))
+        except (MultipleIDMatches, NoIDMatches, InvalidIDStructure):
+            if self.strict:
+                raise
+            replacement = ''.join(ids)
         if self.wrap == True:
             return '#%s#' % replacement
         return replacement
@@ -496,7 +503,8 @@ def short_to_long_text(bugdirs, text):
     short_to_long_user : conversion on a single ID
     long_to_short_text : inverse
     """
-    return re.sub(REGEXP, IDreplacer(bugdirs, short_to_long_user), text)
+    return re.sub(
+        REGEXP, IDreplacer(bugdirs, short_to_long_user, strict=False), text)
 
 def long_to_short_text(bugdirs, text):
     """Convert long user IDs to short user IDs in text (see :class:`ID`).