diff mercurial/templater.py @ 28630:bf35644b9f3a

templater: relax unquotestring() to fall back to bare string This is convenient for our use case where quotes are optional except in a map file.
author Yuya Nishihara <yuya@tcha.org>
date Sat, 26 Mar 2016 18:12:12 +0900
parents ed1d90f6e921
children 29c249dfb4ef
line wrap: on
line diff
--- a/mercurial/templater.py	Sat Mar 26 19:01:12 2016 +0900
+++ b/mercurial/templater.py	Sat Mar 26 18:12:12 2016 +0900
@@ -867,9 +867,9 @@
                     yield j
 
 def unquotestring(s):
-    '''unwrap quotes'''
+    '''unwrap quotes if any; otherwise returns unmodified string'''
     if len(s) < 2 or s[0] != s[-1]:
-        raise SyntaxError(_('unmatched quotes'))
+        return s
     return s[1:-1]
 
 class engine(object):
@@ -980,10 +980,10 @@
             if not val:
                 raise error.ParseError(_('missing value'), conf.source('', key))
             if val[0] in "'\"":
-                try:
-                    self.cache[key] = unquotestring(val)
-                except SyntaxError as inst:
-                    raise error.ParseError(inst.args[0], conf.source('', key))
+                if val[0] != val[-1]:
+                    raise error.ParseError(_('unmatched quotes'),
+                                           conf.source('', key))
+                self.cache[key] = unquotestring(val)
             else:
                 val = 'default', val
                 if ':' in val[1]: