diff --git a/ANFilter.h b/ANFilter.h index 1a0bbdc..f4c947e 100644 --- a/ANFilter.h +++ b/ANFilter.h @@ -47,9 +47,9 @@ typedef enum { ANFilterClauseOperatorEquals, ANFilterClauseOperatorMatches, ANFilterClauseOperatorLess, - ANFilterClauseOperatorLessOrEqual, + ANFilterClauseOperatorLessOrEquals, ANFilterClauseOperatorGreater, - ANFilterClauseOperatorGreaterOrEqual, + ANFilterClauseOperatorGreaterOrEquals, ANFilterClauseOperatorOneOf } ANFilterClauseOperator; diff --git a/ANFilter.m b/ANFilter.m index d4d0120..f6c1751 100644 --- a/ANFilter.m +++ b/ANFilter.m @@ -62,3 +62,105 @@ - (ANFilterClauseOperator)operator { } @end + +NSString * ANStringFromFilterMatchPolicy(ANFilterMatchPolicy matchPolicy) { + static NSDictionary * table; + static dispatch_once_t once; + + dispatch_once(&once, ^{ + table = @{ + @(ANFilterMatchPolicyIncludeAll): @"include_all", + @(ANFilterMatchPolicyIncludeAny): @"include_any", + @(ANFilterMatchPolicyExcludeAll): @"exclude_all", + @(ANFilterMatchPolicyExcludeAny): @"exclude_any", + }; + }); + + return table[@(matchPolicy)]; +} + +ANFilterMatchPolicy ANFilterMatchPolicyFromString(NSString * string) { + static NSDictionary * table; + static dispatch_once_t once; + + dispatch_once(&once, ^{ + table = @{ + @"include_all": @(ANFilterMatchPolicyIncludeAll), + @"include_any": @(ANFilterMatchPolicyIncludeAny), + @"exclude_all": @(ANFilterMatchPolicyExcludeAll), + @"exclude_any": @(ANFilterMatchPolicyExcludeAny), + }; + }); + + return [table[string] integerValue]; +} + +NSString * ANStringFromFilterClauseObjectType(ANFilterClauseObjectType objectType) { + static NSDictionary * table; + static dispatch_once_t once; + + dispatch_once(&once, ^{ + table = @{ + @(ANFilterClauseObjectTypePost): @"post", + @(ANFilterClauseObjectTypeStar): @"star", + @(ANFilterClauseObjectTypeUserFollow): @"user_follow", + }; + }); + + return table[@(objectType)]; +} + +ANFilterClauseObjectType ANFilterClauseObjectTypeFromString(NSString * string) { + static NSDictionary * table; + static dispatch_once_t once; + + dispatch_once(&once, ^{ + table = @{ + @"post": @(ANFilterClauseObjectTypePost), + @"star": @(ANFilterClauseObjectTypeStar), + @"user_follow": @(ANFilterClauseObjectTypeUserFollow), + }; + }); + + return [table[string] integerValue]; +} + + +NSString * ANStringFromFilterClauseOperator(ANFilterClauseOperator operator) { + static NSDictionary * table; + static dispatch_once_t once; + + dispatch_once(&once, ^{ + table = @{ + @(ANFilterClauseOperatorEquals): @"equals", + @(ANFilterClauseOperatorGreater): @"gt", + @(ANFilterClauseOperatorGreaterOrEquals): @"ge", + @(ANFilterClauseOperatorLess): @"lt", + @(ANFilterClauseOperatorLessOrEquals): @"le", + @(ANFilterClauseOperatorMatches): @"matches", + @(ANFilterClauseOperatorOneOf): @"one_of", + }; + }); + + return table[@(operator)]; +} + +ANFilterClauseOperator ANFilterClauseOperatorFromString(NSString * string) { + static NSDictionary * table; + static dispatch_once_t once; + + dispatch_once(&once, ^{ + table = @{ + @"equals": @(ANFilterClauseOperatorEquals), + @"gt": @(ANFilterClauseOperatorGreater), + @"ge": @(ANFilterClauseOperatorGreaterOrEquals), + @"lt": @(ANFilterClauseOperatorLess), + @"le": @(ANFilterClauseOperatorLessOrEquals), + @"matches": @(ANFilterClauseOperatorMatches), + @"one_of": @(ANFilterClauseOperatorOneOf), + }; + }); + + return [table[string] integerValue]; +} +