From e72a42fd2d205ed741bdc83123a2c7516b2926e1 Mon Sep 17 00:00:00 2001 From: cacaodev Date: Sun, 27 Dec 2015 19:28:03 +0100 Subject: [PATCH] FIXED: block & conditional expressions: support for CPPredicate -predicateWithSubstitutionVariables: --- Foundation/CPPredicate/_CPBlockExpression.j | 12 ++++++++++++ Foundation/CPPredicate/_CPConditionalExpression.j | 9 +++++++++ 2 files changed, 21 insertions(+) diff --git a/Foundation/CPPredicate/_CPBlockExpression.j b/Foundation/CPPredicate/_CPBlockExpression.j index 109d5d517..4b1472e1a 100644 --- a/Foundation/CPPredicate/_CPBlockExpression.j +++ b/Foundation/CPPredicate/_CPBlockExpression.j @@ -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]]]; diff --git a/Foundation/CPPredicate/_CPConditionalExpression.j b/Foundation/CPPredicate/_CPConditionalExpression.j index 6e636ec29..1f939a64e 100644 --- a/Foundation/CPPredicate/_CPConditionalExpression.j +++ b/Foundation/CPPredicate/_CPConditionalExpression.j @@ -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]];