diff options
author | Arthur de Jong <arthur@arthurdejong.org> | 2012-03-16 15:00:02 +0000 |
---|---|---|
committer | Arthur de Jong <arthur@arthurdejong.org> | 2012-03-16 15:00:02 +0000 |
commit | 4c1d3d933e0b11c8226eec960ee370e2a6ca607b (patch) | |
tree | 5496679c25da7aca39ada794f621d6fb1298015c | |
parent | 9885131eb432c5033242025689c86f09edf7d658 (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.py | 19 |
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: |