From 1b42f5ab1f3e22c760d155c7e3dea283032a517e Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Fri, 29 Jun 2012 10:42:15 +1200 Subject: Allow naked literals for path specification. --- libpathod/rparse.py | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'libpathod/rparse.py') diff --git a/libpathod/rparse.py b/libpathod/rparse.py index 6306f746..e08da49f 100644 --- a/libpathod/rparse.py +++ b/libpathod/rparse.py @@ -155,20 +155,29 @@ class FileGenerator: return self.map.__getslice__(a, b) -class ValueLiteral: +class _Value: def __init__(self, val): self.val = val def get_generator(self, settings): return LiteralGenerator(self.val) + def __str__(self): + return self.val + + +class ValueLiteral(_Value): @classmethod def expr(klass): e = v_literal.copy() return e.setParseAction(lambda x: klass(*x)) - def __str__(self): - return self.val + +class ValueNakedLiteral(_Value): + @classmethod + def expr(klass): + e = v_naked_literal.copy() + return e.setParseAction(lambda x: klass(*x)) class ValueGenerate: @@ -238,6 +247,16 @@ Value = pp.MatchFirst( ) +NakedValue = pp.MatchFirst( + [ + ValueGenerate.expr(), + ValueFile.expr(), + ValueLiteral.expr(), + ValueNakedLiteral.expr(), + ] +) + + class ShortcutContentType: def __init__(self, value): self.value = value @@ -302,7 +321,7 @@ class Path: @classmethod def expr(klass): - e = v_naked_literal.copy() + e = NakedValue.copy() return e.setParseAction(lambda x: klass(*x)) -- cgit v1.2.3