summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur de Jong <arthur@arthurdejong.org>2012-03-16 15:00:02 +0000
committerArthur de Jong <arthur@arthurdejong.org>2012-03-16 15:00:02 +0000
commit4c1d3d933e0b11c8226eec960ee370e2a6ca607b (patch)
tree5496679c25da7aca39ada794f621d6fb1298015c
parent9885131eb432c5033242025689c86f09edf7d658 (diff)
support the upper and lower functions in attribute mapping expressions
git-svn-id: http://arthurdejong.org/svn/nss-pam-ldapd/nss-pam-ldapd@1642 ef36b2f9-881f-0410-afb5-c4e39611909c
-rw-r--r--pynslcd/attmap.py19
1 files changed, 17 insertions, 2 deletions
diff --git a/pynslcd/attmap.py b/pynslcd/attmap.py
index bb5c8cb..68d7e93 100644
--- a/pynslcd/attmap.py
+++ b/pynslcd/attmap.py
@@ -99,6 +99,16 @@ class DollarExpression(object):
return
self.op = c + value.next()
self.expr = Expression(value, endat='}')
+ elif c == '(':
+ self.name = None
+ self.op = value.get_name()
+ c = value.next()
+ if c != '(':
+ raise ValueError("Expecting '('")
+ self.expr = Expression(value, endat=')')
+ c = value.next()
+ if c != ')':
+ raise ValueError("Expecting ')'")
else:
value.back()
self.name = value.get_name()
@@ -111,11 +121,16 @@ class DollarExpression(object):
return value if value else self.expr.value(variables)
elif self.op == ':+':
return self.expr.value(variables) if value else ''
+ elif self.op == 'lower':
+ return self.expr.value(variables).lower()
+ elif self.op == 'upper':
+ return self.expr.value(variables).upper()
return value
def variables(self, results):
"""Add the variables used in the expression to results."""
- results.add(self.name)
+ if self.name:
+ results.add(self.name)
if self.expr:
self.expr.variables(results)
@@ -159,7 +174,7 @@ class Expression(object):
return res
def variables(self, results=None):
- """Return the attributes defined in the expression."""
+ """Return the variables defined in the expression."""
if not results:
results = set()
for x in self.expr: