Mercurial > hg > mercurial-crew-with-dirclash
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. |