# HG changeset patch # User Yuya Nishihara # Date 1458983532 -32400 # Node ID bf35644b9f3a4608d18b7d7655d8831902235d93 # Parent d6f8a15352242b6cfedd077e984cc697fcffba82 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. diff -r d6f8a1535224 -r bf35644b9f3a mercurial/cmdutil.py --- a/mercurial/cmdutil.py Sat Mar 26 19:01:12 2016 +0900 +++ b/mercurial/cmdutil.py Sat Mar 26 18:12:12 2016 +0900 @@ -1542,11 +1542,7 @@ if not tmpl and not style: # template are stronger than style tmpl = ui.config('ui', 'logtemplate') if tmpl: - try: - tmpl = templater.unquotestring(tmpl) - except SyntaxError: - pass - return tmpl, None + return templater.unquotestring(tmpl), None else: style = util.expandpath(ui.config('ui', 'style', '')) diff -r d6f8a1535224 -r bf35644b9f3a mercurial/formatter.py --- a/mercurial/formatter.py Sat Mar 26 19:01:12 2016 +0900 +++ b/mercurial/formatter.py Sat Mar 26 18:12:12 2016 +0900 @@ -171,11 +171,7 @@ # perhaps it's a reference to [templates] t = ui.config('templates', tmpl) if t: - try: - tmpl = templater.unquotestring(t) - except SyntaxError: - tmpl = t - return tmpl, None + return templater.unquotestring(t), None if tmpl == 'list': ui.write(_("available styles: %s\n") % templater.stylelist()) diff -r d6f8a1535224 -r bf35644b9f3a mercurial/templater.py --- 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]: