summaryrefslogtreecommitdiff
path: root/platform/darwin/src/NSComparisonPredicate+MGLAdditions.mm
diff options
context:
space:
mode:
Diffstat (limited to 'platform/darwin/src/NSComparisonPredicate+MGLAdditions.mm')
-rw-r--r--platform/darwin/src/NSComparisonPredicate+MGLAdditions.mm157
1 files changed, 0 insertions, 157 deletions
diff --git a/platform/darwin/src/NSComparisonPredicate+MGLAdditions.mm b/platform/darwin/src/NSComparisonPredicate+MGLAdditions.mm
deleted file mode 100644
index af9216f9ce..0000000000
--- a/platform/darwin/src/NSComparisonPredicate+MGLAdditions.mm
+++ /dev/null
@@ -1,157 +0,0 @@
-#import "NSComparisonPredicate+MGLAdditions.h"
-
-#import "MGLStyleValue_Private.h"
-
-#import "NSPredicate+MGLAdditions.h"
-#import "NSExpression+MGLPrivateAdditions.h"
-
-@implementation NSComparisonPredicate (MGLAdditions)
-
-- (NSString *)mgl_keyPath {
- NSExpression *leftExpression = self.leftExpression;
- NSExpression *rightExpression = self.rightExpression;
- NSExpressionType leftType = leftExpression.expressionType;
- NSExpressionType rightType = rightExpression.expressionType;
- if (leftType == NSKeyPathExpressionType && rightType == NSConstantValueExpressionType) {
- return leftExpression.keyPath;
- } else if (leftType == NSConstantValueExpressionType && rightType == NSKeyPathExpressionType) {
- return rightExpression.keyPath;
- }
-
- [NSException raise:NSInvalidArgumentException
- format:@"Comparison predicate must compare an attribute (as a key path) to a constant or vice versa."];
- return nil;
-}
-
-- (mbgl::Value)mgl_constantValue {
- NSExpression *leftExpression = self.leftExpression;
- NSExpression *rightExpression = self.rightExpression;
- NSExpressionType leftType = leftExpression.expressionType;
- NSExpressionType rightType = rightExpression.expressionType;
- mbgl::Value value;
- if (leftType == NSKeyPathExpressionType && rightType == NSConstantValueExpressionType) {
- value = rightExpression.mgl_constantMBGLValue;
- } else if (leftType == NSConstantValueExpressionType && rightType == NSKeyPathExpressionType) {
- value = leftExpression.mgl_constantMBGLValue;
- } else {
- [NSException raise:NSInvalidArgumentException
- format:@"Comparison predicate must compare an attribute (as a key path) to a constant or vice versa."];
- }
- return value;
-}
-
-- (mbgl::FeatureType)mgl_featureType {
- NSExpression *leftExpression = self.leftExpression;
- NSExpression *rightExpression = self.rightExpression;
- NSExpressionType leftType = leftExpression.expressionType;
- NSExpressionType rightType = rightExpression.expressionType;
- mbgl::FeatureType type;
- if (leftType == NSKeyPathExpressionType && rightType == NSConstantValueExpressionType) {
- type = rightExpression.mgl_featureType;
- } else if (leftType == NSConstantValueExpressionType && rightType == NSKeyPathExpressionType) {
- type = leftExpression.mgl_featureType;
- } else {
- [NSException raise:NSInvalidArgumentException
- format:@"Comparison predicate must compare an attribute (as a key path) to a constant or vice versa."];
- }
- return type;
-}
-
-- (mbgl::FeatureIdentifier)mgl_featureIdentifier {
- NSExpression *leftExpression = self.leftExpression;
- NSExpression *rightExpression = self.rightExpression;
- NSExpressionType leftType = leftExpression.expressionType;
- NSExpressionType rightType = rightExpression.expressionType;
- mbgl::FeatureIdentifier identifier;
- if (leftType == NSKeyPathExpressionType && rightType == NSConstantValueExpressionType) {
- identifier = rightExpression.mgl_featureIdentifier;
- } else if (leftType == NSConstantValueExpressionType && rightType == NSKeyPathExpressionType) {
- identifier = leftExpression.mgl_featureIdentifier;
- } else {
- [NSException raise:NSInvalidArgumentException
- format:@"Comparison predicate must compare an attribute (as a key path) to a constant or vice versa."];
- }
- return identifier;
-}
-
-@end
-
-@implementation NSComparisonPredicate (MGLExpressionAdditions)
-
-- (id)mgl_jsonExpressionObject {
- NSString *op;
- switch (self.predicateOperatorType) {
- case NSLessThanPredicateOperatorType:
- op = @"<";
- break;
- case NSLessThanOrEqualToPredicateOperatorType:
- op = @"<=";
- break;
- case NSGreaterThanPredicateOperatorType:
- op = @">";
- break;
- case NSGreaterThanOrEqualToPredicateOperatorType:
- op = @">=";
- break;
- case NSEqualToPredicateOperatorType:
- op = @"==";
- break;
- case NSNotEqualToPredicateOperatorType:
- op = @"!=";
- break;
- case NSBetweenPredicateOperatorType: {
- op = @"all";
- NSArray *limits = self.rightExpression.constantValue;
- NSPredicate *leftHandPredicate = [NSComparisonPredicate predicateWithLeftExpression:limits[0]
- rightExpression:self.leftExpression
- modifier:NSDirectPredicateModifier
- type:NSLessThanOrEqualToPredicateOperatorType
- options:0];
- NSPredicate *rightHandPredicate = [NSComparisonPredicate predicateWithLeftExpression:self.leftExpression
- rightExpression:limits[1]
- modifier:NSDirectPredicateModifier
- type:NSLessThanOrEqualToPredicateOperatorType
- options:0];
- return @[op, leftHandPredicate.mgl_jsonExpressionObject, rightHandPredicate.mgl_jsonExpressionObject];
- }
- case NSInPredicateOperatorType: {
-
- NSExpression *matchExpression = [NSExpression expressionForFunction:@"MGL_MATCH"
- arguments:@[self.leftExpression,
- self.rightExpression,
- [NSExpression expressionForConstantValue:@YES],
- [NSExpression expressionForConstantValue:@NO]]];
-
- return matchExpression.mgl_jsonExpressionObject;
- }
- case NSContainsPredicateOperatorType: {
- NSPredicate *inPredicate = [NSComparisonPredicate predicateWithLeftExpression:self.rightExpression
- rightExpression:self.leftExpression
- modifier:self.comparisonPredicateModifier
- type:NSInPredicateOperatorType
- options:self.options];
- return inPredicate.mgl_jsonExpressionObject;
- }
- case NSMatchesPredicateOperatorType:
- case NSLikePredicateOperatorType:
- case NSBeginsWithPredicateOperatorType:
- case NSEndsWithPredicateOperatorType:
- case NSCustomSelectorPredicateOperatorType:
- [NSException raise:NSInvalidArgumentException
- format:@"NSPredicateOperatorType:%lu is not supported.", (unsigned long)self.predicateOperatorType];
- }
- if (!op) {
- return nil;
- }
- NSArray *comparisonArray = @[op, self.leftExpression.mgl_jsonExpressionObject, self.rightExpression.mgl_jsonExpressionObject];
- if (self.options) {
- NSDictionary *collatorObject = @{
- @"case-sensitive": @(!(self.options & NSCaseInsensitivePredicateOption)),
- @"diacritic-sensitive": @(!(self.options & NSDiacriticInsensitivePredicateOption)),
- };
- return [comparisonArray arrayByAddingObject:@[@"collator", collatorObject]];
- }
- return comparisonArray;
-}
-
-@end