FIXED: block & conditional expressions: support for CPPredicate -predicateWithSubstitutionVariables:

This commit is contained in:
cacaodev
2015-12-27 19:28:03 +01:00
parent 07b6e2b9f1
commit e72a42fd2d
2 changed files with 21 additions and 0 deletions
@@ -75,6 +75,18 @@
return _block(object, args, context);
}
- (CPExpression)_expressionWithSubstitutionVariables:(CPDictionary)bindings
{
var args = [];
[_arguments enumerateObjectsUsingBlock:function(exp, idx)
{
[args addObject:[exp _expressionWithSubstitutionVariables:bindings]];
}];
return [[_CPBlockExpression alloc] initWithBlock:_block arguments:args];
}
- (CPString)description
{
return [CPString stringWithFormat:@"Block(0x%@)", [CPString stringWithHash:[self UID]]];
@@ -76,6 +76,15 @@
return [exp expressionValueWithObject:object context:context];
}
- (CPExpression)_expressionWithSubstitutionVariables:(CPDictionary)bindings
{
var s_predicate = [_predicate predicateWithSubstitutionVariables:bindings],
s_trueExp = [_trueExpression _expressionWithSubstitutionVariables:bindings],
s_falseExp = [_falseExpression _expressionWithSubstitutionVariables:bindings];
return [[_CPConditionalExpression alloc] initWithPredicate:s_predicate trueExpression:s_trueExp falseExpression:s_falseExp];
}
- (CPString)description
{
return [CPString stringWithFormat:@"TERNARY(%@,%@,%@)", [_predicate predicateFormat], [_trueExpression description], [_falseExpression description]];