comparison mercurial/templater.py @ 3642:5c9a36210662

templater: simplify parsestring
author Matt Mackall <mpm@selenic.com>
date Mon, 13 Nov 2006 13:26:57 -0600
parents 7b064d8bac5e
children 1b2cd5dceca2
comparison
equal deleted inserted replaced
3641:7b064d8bac5e 3642:5c9a36210662
12 12
13 def parsestring(s, quoted=True): 13 def parsestring(s, quoted=True):
14 '''parse a string using simple c-like syntax. 14 '''parse a string using simple c-like syntax.
15 string must be in quotes if quoted is True.''' 15 string must be in quotes if quoted is True.'''
16 if quoted: 16 if quoted:
17 first = s[0] 17 if len(s) < 2 or s[0] != s[-1]:
18 if len(s) < 2: raise SyntaxError(_('string too short')) 18 raise SyntaxError(_('unmatched quotes'))
19 if first not in "'\"": raise SyntaxError(_('invalid quote')) 19 return s[1:-1].decode('string_escape')
20 if s[-1] != first: raise SyntaxError(_('unmatched quotes'))
21 s = s[1:-1].decode('string_escape')
22 if first in s: raise SyntaxError(_('string ends early'))
23 return s
24 20
25 return s.decode('string_escape') 21 return s.decode('string_escape')
26 22
27 class templater(object): 23 class templater(object):
28 '''template expansion engine. 24 '''template expansion engine.