Merge branch 'imports' of https://github.com/stevegeek/cappuccino into stevegeek-imports

This commit is contained in:
Klaas Pieter Annema
2011-01-18 09:52:40 +01:00
46 changed files with 438 additions and 390 deletions
+2 -1
View File
@@ -20,12 +20,13 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
@import "CPArray.j"
@import "CPDictionary.j"
@import "CPException.j"
@import "CPObject.j"
@import "CPRange.j"
@import "CPString.j"
/*!
@class CPAttributedString
@ingroup foundation
+2 -3
View File
@@ -21,12 +21,11 @@
*/
@import "CPDictionary.j"
@import "CPObject.j"
@import "CPNotification.j"
@import "CPNotificationCenter.j"
@import "CPObject.j"
CPBundleDidLoadNotification = "CPBundleDidLoadNotification";
CPBundleDidLoadNotification = @"CPBundleDidLoadNotification";
/*!
@class CPBundle
+30 -18
View File
@@ -19,8 +19,11 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
@import <Foundation/CPObject.j>
@import <Foundation/CPString.j>
@import "CPArray.j"
@import "CPException.j"
@import "CPObject.j"
@import "CPString.j"
@import "CPURL.j"
// CPCharacterSet is a class cluster. Concrete implementations
// follow after the main abstract class.
@@ -48,7 +51,9 @@ var _builtInCharacterSets = {};
- (id)init
{
self = [super init];
_inverted = NO;
if (self)
_inverted = NO;
return self;
}
@@ -144,11 +149,11 @@ var _builtInCharacterSets = {};
var cs = _builtInCharacterSets[csname];
if (cs == nil)
{
var i,
var i = 0,
ranges = [CPArray array],
rangeArray = eval(csname);
for (i = 0; i < rangeArray.length; i+= 2)
for (; i < rangeArray.length; i+= 2)
{
var loc = rangeArray[i],
length = rangeArray[i + 1],
@@ -185,7 +190,9 @@ var _builtInCharacterSets = {};
// Creates a range character set with multiple ranges.
- (id)initWithRanges:(CPArray)ranges
{
if (self = [super init])
self = [super init];
if (self)
{
_ranges = ranges;
}
@@ -226,7 +233,7 @@ var _builtInCharacterSets = {};
{
// the highest Unicode plane we reach.
// (There are 65536 code points in each plane.)
var maxPlane = Math.floor((range.start + range.length - 1) / 65536); // should iterate _ranges
var maxPlane = Math.floor((range.start + range.length - 1) / 65536); // FIXME: should iterate _ranges
return (plane <= maxPlane);
}
@@ -238,9 +245,9 @@ var _builtInCharacterSets = {};
- (void)addCharactersInString:(CPString)aString // Needs _inverted support
{
var i;
var i = 0;
for (i = 0; i < aString.length; i++)
for (; i < aString.length; i++)
{
var code = aString.charCodeAt(i),
range = CPMakeRange(code,1);
@@ -260,7 +267,9 @@ var _builtInCharacterSets = {};
- (id)initWithString:(CPString)s
{
if (self = [super init])
self = [super init];
if (self)
{
_string = s;
}
@@ -307,8 +316,10 @@ var _builtInCharacterSets = {};
- (void)addCharactersInRange:(CPRange)aRange // Needs _inverted support
{
var i;
for (i = aRange.location; i < aRange.location + aRange.length; i++)
var i = aRange.location,
count = aRange.location + aRange.length;
for (; i < count; i++)
{
var s = String.fromCharCode(i);
@@ -319,9 +330,9 @@ var _builtInCharacterSets = {};
- (void)addCharactersInString:(CPString)aString // Needs _inverted support
{
var i;
var i = 0;
for (i = 0; i < aString.length; i++)
for (; i < aString.length; i++)
{
var s = aString.charAt(i);
@@ -332,8 +343,8 @@ var _builtInCharacterSets = {};
@end
_CPCharacterSetTrimAtBeginning = 1 << 1;
_CPCharacterSetTrimAtEnd = 1 << 2;
_CPCharacterSetTrimAtBeginning = 1 << 1;
_CPCharacterSetTrimAtEnd = 1 << 2;
@implementation CPString (CPCharacterSetAdditions)
@@ -356,9 +367,10 @@ _CPCharacterSetTrimAtEnd = 1 << 2;
reason:"componentsSeparatedByCharactersInSet: the separator can't be 'nil'"];
var components = [CPMutableArray array],
componentRange = CPMakeRange(0, 0);
componentRange = CPMakeRange(0, 0),
i = 0;
for (var i = 0; i < self.length; i++)
for (; i < self.length; i++)
{
if ([separator characterIsMember:self.charAt(i)])
{
-1
View File
@@ -23,7 +23,6 @@
@import "CPException.j"
@import "CPObject.j"
/*!
@class CPCoder
@ingroup foundation
+1 -1
View File
@@ -20,9 +20,9 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
@import "CPObject.j"
@import "CPSet.j"
/*!
@class CPCountedSet
@ingroup foundation
-1
View File
@@ -23,7 +23,6 @@
@import "CPObject.j"
@import "CPString.j"
/*!
@class CPData
@ingroup foundation
+1 -1
View File
@@ -22,7 +22,7 @@
@import "CPObject.j"
@import "CPString.j"
@import "CPException.j"
var CPDateReferenceDate = new Date(Date.UTC(2001, 1, 1, 0, 0, 0, 0));
+1 -1
View File
@@ -23,9 +23,9 @@
@import "CPArray.j"
@import "CPEnumerator.j"
@import "CPException.j"
@import "CPNull.j"
@import "CPObject.j"
/* @ignore */
@implementation _CPDictionaryValueEnumerator : CPEnumerator
{
-1
View File
@@ -22,7 +22,6 @@
@import "CPObject.j"
/*!
@class CPEnumerator
@ingroup foundation
+10 -9
View File
@@ -24,11 +24,10 @@
@import "CPObject.j"
@import "CPString.j"
CPInvalidArgumentException = "CPInvalidArgumentException";
CPUnsupportedMethodException = "CPUnsupportedMethodException";
CPRangeException = "CPRangeException";
CPInternalInconsistencyException = "CPInternalInconsistencyException";
CPInvalidArgumentException = @"CPInvalidArgumentException";
CPUnsupportedMethodException = @"CPUnsupportedMethodException";
CPRangeException = @"CPRangeException";
CPInternalInconsistencyException = @"CPInternalInconsistencyException";
/*!
@class CPException
@@ -90,7 +89,9 @@ if (input == nil)
*/
- (id)initWithName:(CPString)aName reason:(CPString)aReason userInfo:(CPDictionary)aUserInfo
{
if (self = [super init])
self = [super init];
if (self)
{
name = aName;
message = aReason;
@@ -162,9 +163,9 @@ if (input == nil)
@end
var CPExceptionNameKey = "CPExceptionNameKey",
CPExceptionReasonKey = "CPExceptionReasonKey",
CPExceptionUserInfoKey = "CPExceptionUserInfoKey";
var CPExceptionNameKey = @"CPExceptionNameKey",
CPExceptionReasonKey = @"CPExceptionReasonKey",
CPExceptionUserInfoKey = @"CPExceptionUserInfoKey";
@implementation CPException (CPCoding)
-5
View File
@@ -36,7 +36,6 @@
@import "CPException.j"
@import "CPObject.j"
@implementation CPFormatter : CPObject
/*!
@@ -57,13 +56,11 @@
return nil;
}
/*- (CPAttributedString)attributedStringForObjectValue:(id)anObject withDefaultAttributes:(CPDictionary)attributes
{
}*/
/*!
The default implementation of this method invokes stringForObjectValue:.
@@ -80,7 +77,6 @@
return [self stringForObjectValue:anObject];
}
/*!
The default implementation of this method raises an exception.
@@ -102,7 +98,6 @@
return NO;
}
/*!
Returns a Boolean value that indicates whether a partial string is valid.
+5 -4
View File
@@ -19,10 +19,10 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
@import <Foundation/CPObject.j>
@import "CPArray.j"
@import "CPObject.j"
@import "CPOperation.j"
/*!
@class CPFunctionOperation
@brief Represents an operation using a JavaScript function that can be run in an CPOperationQueue
@@ -32,7 +32,6 @@
CPArray _functions;
}
- (void)main
{
if (_functions && [_functions count] > 0)
@@ -50,7 +49,9 @@
- (id)init
{
if (self = [super init])
self = [super init];
if (self)
{
_functions = [];
}
+22 -3
View File
@@ -1,10 +1,29 @@
/*
* CPIndexPath.j
* Foundation
*
* Copyright 2008, 280 North, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
@import "CPObject.j"
@import "CPArray.j"
@import "CPException.j"
@import "CPObject.j"
@import "CPRange.j"
@import "CPSortDescriptor.j"
@import "CPException.j"
@implementation CPIndexPath : CPObject
{
+1 -1
View File
@@ -20,10 +20,10 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
@import "CPArray.j"
@import "CPObject.j"
@import "CPRange.j"
#define _CPMaxRange(aRange) ((aRange).location + (aRange).length)
#define _CPMakeRange(aLocation, aLength) { location:(aLocation), length:aLength }
#define _CPMakeRangeCopy(aRange) { location:(aRange).location, length:(aRange).length }
-2
View File
@@ -20,10 +20,8 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
@import "CPException.j"
@import "CPObject.j"
/*!
@class CPInvocation
@ingroup foundation
-1
View File
@@ -23,7 +23,6 @@
@import "CPObject.j"
@import "CPOperation.j"
/*!
@class CPInvocationOperation
@brief Represents an operation using an invocation that can be run in an CPOperationQueue
+12 -8
View File
@@ -20,8 +20,9 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
@import "CPException.j"
@import "CPObject.j"
@import "CPRunLoop.j"
CPJSONPConnectionCallbacks = {};
@@ -68,16 +69,19 @@ CPJSONPCallbackReplacementString = @"${JSONP_CALLBACK}";
{
self = [super init];
_request = aRequest;
_delegate = aDelegate;
if (self)
{
_request = aRequest;
_delegate = aDelegate;
_callbackParameter = aString;
_callbackParameter = aString;
if (!_callbackParameter && [[_request URL] absoluteString].indexOf(CPJSONPCallbackReplacementString) < 0)
[CPException raise:CPInvalidArgumentException reason:@"JSONP source specified without callback parameter or CPJSONPCallbackReplacementString in URL."];
if (!_callbackParameter && [[_request URL] absoluteString].indexOf(CPJSONPCallbackReplacementString) < 0)
[CPException raise:CPInvalidArgumentException reason:@"JSONP source specified without callback parameter or CPJSONPCallbackReplacementString in URL."];
if (shouldStartImmediately)
[self start];
if (shouldStartImmediately)
[self start];
}
return self;
}
+1 -1
View File
@@ -22,11 +22,11 @@
@import "CPArray.j"
@import "CPDictionary.j"
@import "CPException.j"
@import "CPNull.j"
@import "CPObject.j"
@import "CPSet.j"
CPUndefinedKeyException = @"CPUndefinedKeyException";
CPTargetObjectUserInfoKey = @"CPTargetObjectUserInfoKey";
CPUnknownUserInfoKey = @"CPUnknownUserInfoKey";
+7 -11
View File
@@ -209,20 +209,16 @@ var _changeKindForSetMutationKind = function(mutationKind)
{
switch (mutationKind)
{
case CPKeyValueUnionSetMutation:
return CPKeyValueChangeInsertion;
case CPKeyValueMinusSetMutation:
return CPKeyValueChangeRemoval;
case CPKeyValueIntersectSetMutation:
return CPKeyValueChangeRemoval;
case CPKeyValueSetSetMutation:
return CPKeyValueChangeReplacement;
case CPKeyValueUnionSetMutation: return CPKeyValueChangeInsertion;
case CPKeyValueMinusSetMutation: return CPKeyValueChangeRemoval;
case CPKeyValueIntersectSetMutation: return CPKeyValueChangeRemoval;
case CPKeyValueSetSetMutation: return CPKeyValueChangeReplacement;
}
}
var kvoNewAndOld = CPKeyValueObservingOptionNew | CPKeyValueObservingOptionOld,
DependentKeysKey = "$KVODEPENDENT",
KVOProxyKey = "$KVOPROXY";
var kvoNewAndOld = CPKeyValueObservingOptionNew | CPKeyValueObservingOptionOld,
DependentKeysKey = "$KVODEPENDENT",
KVOProxyKey = "$KVOPROXY";
//rule of thumb: _ methods are called on the real proxy object, others are called on the "fake" proxy object (aka the real object)
-1
View File
@@ -28,7 +28,6 @@
@import "CPString.j"
@import "CPValue.j"
var CPArchiverReplacementClassNames = nil;
var _CPKeyedArchiverDidEncodeObjectSelector = 1,
+2 -2
View File
@@ -21,15 +21,15 @@
*/
@import "CPArray.j"
@import "CPCoder.j"
@import "CPData.j"
@import "CPDictionary.j"
@import "CPCoder.j"
@import "CPException.j"
@import "CPKeyedArchiver.j"
@import "CPNull.j"
@import "CPNumber.j"
@import "CPString.j"
CPInvalidUnarchiveOperationException = @"CPInvalidUnarchiveOperationException";
var _CPKeyedUnarchiverCannotDecodeObjectOfClassNameOriginalClassesSelector = 1 << 0,
-1
View File
@@ -23,7 +23,6 @@
@import "CPException.j"
@import "CPObject.j"
/*!
@class CPNotification
@ingroup foundation
-1
View File
@@ -26,7 +26,6 @@
@import "CPNotification.j"
@import "CPNull.j"
var CPNotificationDefaultCenter = nil;
/*!
-1
View File
@@ -22,7 +22,6 @@
@import "CPObject.j"
var CPNullSharedNull = nil;
/*!
-1
View File
@@ -23,7 +23,6 @@
@import "CPObject.j"
@import "CPObjJRuntime.j"
var CPNumberUIDs = new CFMutableDictionary();
/*!
-2
View File
@@ -61,8 +61,6 @@ CPLog(@"Got some class: %@", inst);
@todo document KVC usage.
*/
@implementation CPObject
{
Class isa;
+9 -7
View File
@@ -19,43 +19,43 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
@import "CPObject.j"
@import "CPArray.j"
@import "CPObject.j"
/*!
Operations receive very low priority for execution.
@global
@group CPOperationQueuePriority
*/
CPOperationQueuePriorityVeryLow = -8;
CPOperationQueuePriorityVeryLow = -8;
/*!
Operations receive low priority for execution.
@global
@group CPOperationQueuePriority
*/
CPOperationQueuePriorityLow = -4;
CPOperationQueuePriorityLow = -4;
/*!
Operations receive normal priority for execution.
@global
@group CPOperationQueuePriority
*/
CPOperationQueuePriorityNormal = 0;
CPOperationQueuePriorityNormal = 0;
/*!
Operations receive high priority for execution.
@global
@group CPOperationQueuePriority
*/
CPOperationQueuePriorityHigh = 4;
CPOperationQueuePriorityHigh = 4;
/*!
Operations receive very high priority for execution.
@global
@group CPOperationQueuePriority
*/
CPOperationQueuePriorityVeryHigh = 8;
CPOperationQueuePriorityVeryHigh = 8;
/*!
@@ -83,7 +83,9 @@ CPOperationQueuePriorityVeryHigh = 8;
- (id)init
{
if (self = [super init])
self = [super init];
if (self)
{
_cancelled = NO;
_executing = NO;
+5 -1
View File
@@ -19,10 +19,12 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
@import "CPArray.j"
@import "CPFunctionOperation.j"
@import "CPInvocationOperation.j"
@import "CPObject.j"
@import "CPOperation.j"
@import "CPString.j"
@import "CPTimer.j"
// the global queue (mainQueue)
@@ -42,7 +44,9 @@ var cpOperationMainQueue = nil;
- (id)init
{
if (self = [super init])
self = [super init];
if (self)
{
_operations = [[CPArray alloc] init];
_suspended = NO;
+152 -168
View File
@@ -23,18 +23,18 @@
*/
@import "CPArray.j"
@import "CPNull.j"
@import "CPString.j"
@import "CPEnumerator.j"
@import "CPPredicate.j"
@import "CPExpression.j"
@import "CPNull.j"
@import "CPPredicate.j"
@import "CPString.j"
/*!
A predicate to directly compare the left and right hand sides.
@global
@class CPComparisonPredicate
*/
CPDirectPredicateModifier = 0;
CPDirectPredicateModifier = 0;
/*!
A predicate to compare all entries in the destination of a to-many relationship.
@@ -42,7 +42,7 @@ CPDirectPredicateModifier = 0;
@global
@class CPComparisonPredicate
*/
CPAllPredicateModifier = 1;
CPAllPredicateModifier = 1;
/*!
A predicate to match with any entry in the destination of a to-many relationship.
@@ -50,28 +50,28 @@ CPAllPredicateModifier = 1;
@global
@class CPComparisonPredicate
*/
CPAnyPredicateModifier = 2;
CPAnyPredicateModifier = 2;
/*!
A case-insensitive predicate.
@global
@class CPComparisonPredicate
*/
CPCaseInsensitivePredicateOption = 1;
CPCaseInsensitivePredicateOption = 1;
/*!
A diacritic-insensitive predicate.
@global
@class CPComparisonPredicate
*/
CPDiacriticInsensitivePredicateOption = 2;
CPDiacriticInsensitiveSearch = 128;
CPDiacriticInsensitivePredicateOption = 2;
CPDiacriticInsensitiveSearch = 128;
/*!
A less-than predicate.
@global
@class CPComparisonPredicate
*/
CPLessThanPredicateOperatorType = 0;
CPLessThanPredicateOperatorType = 0;
/*!
A less-than-or-equal-to predicate.
@global
@@ -83,7 +83,7 @@ CPLessThanOrEqualToPredicateOperatorType = 1;
@global
@class CPComparisonPredicate
*/
CPGreaterThanPredicateOperatorType = 2;
CPGreaterThanPredicateOperatorType = 2;
/*!
A greater-than-or-equal-to predicate.
@global
@@ -95,37 +95,37 @@ CPGreaterThanOrEqualToPredicateOperatorType = 3;
@global
@class CPComparisonPredicate
*/
CPEqualToPredicateOperatorType = 4;
CPEqualToPredicateOperatorType = 4;
/*!
A not-equal-to predicate.
@global
@class CPComparisonPredicate
*/
CPNotEqualToPredicateOperatorType = 5;
CPNotEqualToPredicateOperatorType = 5;
/*!
A full regular expression matching predicate.
@global
@class CPComparisonPredicate
*/
CPMatchesPredicateOperatorType = 6;
CPMatchesPredicateOperatorType = 6;
/*!
A simple subset of the matches predicate, similar in behavior to SQL LIKE.
@global
@class CPComparisonPredicate
*/
CPLikePredicateOperatorType = 7;
CPLikePredicateOperatorType = 7;
/*!
A begins-with predicate.
@global
@class CPComparisonPredicate
*/
CPBeginsWithPredicateOperatorType = 8;
CPBeginsWithPredicateOperatorType = 8;
/*!
An ends-with predicate.
@global
@class CPComparisonPredicate
*/
CPEndsWithPredicateOperatorType = 9;
CPEndsWithPredicateOperatorType = 9;
/*!
A predicate to determine if the left hand side is in the right hand side.
@@ -133,7 +133,7 @@ CPEndsWithPredicateOperatorType = 9;
@global
@class CPComparisonPredicate
*/
CPInPredicateOperatorType = 10;
CPInPredicateOperatorType = 10;
/*!
Predicate that uses a custom selector that takes a single argument and returns a BOOL value.
@@ -141,7 +141,7 @@ CPInPredicateOperatorType = 10;
@global
@class CPComparisonPredicate
*/
CPCustomSelectorPredicateOperatorType = 11;
CPCustomSelectorPredicateOperatorType = 11;
/*!
A predicate to determine if the left hand side contains the right hand side.
@@ -149,7 +149,7 @@ CPCustomSelectorPredicateOperatorType = 11;
@global
@class CPComparisonPredicate
*/
CPContainsPredicateOperatorType = 99;
CPContainsPredicateOperatorType = 99;
/*!
A predicate to determine if the right hand side lies between bounds specified by the left hand side.
@@ -157,7 +157,7 @@ CPContainsPredicateOperatorType = 99;
@global
@class CPComparisonPredicate
*/
CPBetweenPredicateOperatorType = 100;
CPBetweenPredicateOperatorType = 100;
var CPComparisonPredicateModifier,
CPPredicateOperatorType;
@@ -216,12 +216,17 @@ var CPComparisonPredicateModifier,
*/
- (id)initWithLeftExpression:(CPExpression)left rightExpression:(CPExpression)right customSelector:(SEL)selector
{
_left = left;
_right = right;
_modifier = CPDirectPredicateModifier;
_type = CPCustomSelectorPredicateOperatorType;
_options = 0;
_customSelector = selector;
self = [super init];
if (self)
{
_left = left;
_right = right;
_modifier = CPDirectPredicateModifier;
_type = CPCustomSelectorPredicateOperatorType;
_options = 0;
_customSelector = selector;
}
return self;
}
@@ -237,18 +242,23 @@ var CPComparisonPredicateModifier,
*/
- (id)initWithLeftExpression:(CPExpression)left rightExpression:(CPExpression)right modifier:(CPComparisonPredicateModifier)modifier type:(CPPredicateOperatorType)type options:(unsigned)options
{
_left = left;
_right = right;
_modifier = modifier;
_type = type;
_options = (type != CPMatchesPredicateOperatorType &&
type != CPLikePredicateOperatorType &&
type != CPBeginsWithPredicateOperatorType &&
type != CPEndsWithPredicateOperatorType &&
type != CPInPredicateOperatorType &&
type != CPContainsPredicateOperatorType) ? 0 : options;
self = [super init];
_customSelector = NULL;
if (self)
{
_left = left;
_right = right;
_modifier = modifier;
_type = type;
_options = (type != CPMatchesPredicateOperatorType &&
type != CPLikePredicateOperatorType &&
type != CPBeginsWithPredicateOperatorType &&
type != CPEndsWithPredicateOperatorType &&
type != CPInPredicateOperatorType &&
type != CPContainsPredicateOperatorType) ? 0 : options;
_customSelector = NULL;
}
return self;
}
@@ -315,81 +325,63 @@ var CPComparisonPredicateModifier,
switch (_modifier)
{
case CPDirectPredicateModifier:
modifier = "";
break;
case CPAllPredicateModifier:
modifier = "ALL ";
break;
case CPAnyPredicateModifier:
modifier = "ANY ";
break;
default:
modifier = "";
break;
case CPDirectPredicateModifier: modifier = "";
break;
case CPAllPredicateModifier: modifier = "ALL ";
break;
case CPAnyPredicateModifier: modifier = "ANY ";
break;
default: modifier = "";
break;
}
var options;
switch (_options)
{
case CPCaseInsensitivePredicateOption:
options = "[c]";
break;
case CPDiacriticInsensitivePredicateOption:
options = "[d]";
break;
case CPCaseInsensitivePredicateOption: options = "[c]";
break;
case CPDiacriticInsensitivePredicateOption: options = "[d]";
break;
case CPCaseInsensitivePredicateOption | CPDiacriticInsensitivePredicateOption:
options = "[cd]";
break;
default:
options = "";
break;
options = "[cd]";
break;
default: options = "";
break;
}
var operator;
switch (_type)
{
case CPLessThanPredicateOperatorType:
operator = "<";
break;
case CPLessThanOrEqualToPredicateOperatorType:
operator = "<=";
break;
case CPGreaterThanPredicateOperatorType:
operator = ">";
break;
case CPGreaterThanOrEqualToPredicateOperatorType:
operator = ">=";
break;
case CPEqualToPredicateOperatorType:
operator = "==";
break;
case CPNotEqualToPredicateOperatorType:
operator = "!=";
break;
case CPMatchesPredicateOperatorType:
operator = "MATCHES";
break;
case CPLikePredicateOperatorType:
operator = "LIKE";
break;
case CPBeginsWithPredicateOperatorType:
operator = "BEGINSWITH";
break;
case CPEndsWithPredicateOperatorType:
operator = "ENDSWITH";
break;
case CPInPredicateOperatorType:
operator = "IN";
break;
case CPContainsPredicateOperatorType:
operator = "CONTAINS";
break;
case CPCustomSelectorPredicateOperatorType:
operator = CPStringFromSelector(_customSelector);
break;
case CPLessThanPredicateOperatorType: operator = "<";
break;
case CPLessThanOrEqualToPredicateOperatorType: operator = "<=";
break;
case CPGreaterThanPredicateOperatorType: operator = ">";
break;
case CPGreaterThanOrEqualToPredicateOperatorType: operator = ">=";
break;
case CPEqualToPredicateOperatorType: operator = "==";
break;
case CPNotEqualToPredicateOperatorType: operator = "!=";
break;
case CPMatchesPredicateOperatorType: operator = "MATCHES";
break;
case CPLikePredicateOperatorType: operator = "LIKE";
break;
case CPBeginsWithPredicateOperatorType: operator = "BEGINSWITH";
break;
case CPEndsWithPredicateOperatorType: operator = "ENDSWITH";
break;
case CPInPredicateOperatorType: operator = "IN";
break;
case CPContainsPredicateOperatorType: operator = "CONTAINS";
break;
case CPCustomSelectorPredicateOperatorType: operator = CPStringFromSelector(_customSelector);
break;
}
return [CPString stringWithFormat:@"%s%s %s%s %s",modifier,[_left description],operator,options,[_right description]];
@@ -422,76 +414,66 @@ var CPComparisonPredicateModifier,
// left and right should be casted first [CAST()] following 10.5 rules.
switch (_type)
{
case CPLessThanPredicateOperatorType:
return ([lhs compare:rhs] == CPOrderedAscending);
case CPLessThanOrEqualToPredicateOperatorType:
return ([lhs compare:rhs] != CPOrderedDescending);
case CPGreaterThanPredicateOperatorType:
return ([lhs compare:rhs] == CPOrderedDescending);
case CPGreaterThanOrEqualToPredicateOperatorType:
return ([lhs compare:rhs] != CPOrderedAscending);
case CPEqualToPredicateOperatorType:
return [lhs isEqual:rhs];
case CPNotEqualToPredicateOperatorType:
return (![lhs isEqual:rhs]);
case CPMatchesPredicateOperatorType:
var commut = (_options & CPCaseInsensitivePredicateOption) ? "gi":"g";
if (_options & CPDiacriticInsensitivePredicateOption)
{
lhs = lhs.stripDiacritics();
rhs = rhs.stripDiacritics();
}
case CPLessThanPredicateOperatorType: return ([lhs compare:rhs] == CPOrderedAscending);
case CPLessThanOrEqualToPredicateOperatorType: return ([lhs compare:rhs] != CPOrderedDescending);
case CPGreaterThanPredicateOperatorType: return ([lhs compare:rhs] == CPOrderedDescending);
case CPGreaterThanOrEqualToPredicateOperatorType: return ([lhs compare:rhs] != CPOrderedAscending);
case CPEqualToPredicateOperatorType: return [lhs isEqual:rhs];
case CPNotEqualToPredicateOperatorType: return (![lhs isEqual:rhs]);
return (new RegExp(rhs,commut)).test(lhs);
case CPLikePredicateOperatorType:
if (_options & CPDiacriticInsensitivePredicateOption)
{
lhs = lhs.stripDiacritics();
rhs = rhs.stripDiacritics();
}
var commut = (_options & CPCaseInsensitivePredicateOption) ? "gi":"g",
reg = new RegExp(rhs.escapeForRegExp(),commut);
return reg.test(lhs);
case CPBeginsWithPredicateOperatorType:
var range = CPMakeRange(0,[rhs length]);
if (_options & CPCaseInsensitivePredicateOption) string_compare_options |= CPCaseInsensitiveSearch;
if (_options & CPDiacriticInsensitivePredicateOption) string_compare_options |= CPDiacriticInsensitiveSearch;
case CPMatchesPredicateOperatorType: var commut = (_options & CPCaseInsensitivePredicateOption) ? "gi":"g";
if (_options & CPDiacriticInsensitivePredicateOption)
{
lhs = lhs.stripDiacritics();
rhs = rhs.stripDiacritics();
}
return (new RegExp(rhs,commut)).test(lhs);
return ([lhs compare:rhs options:string_compare_options range:range] == CPOrderedSame);
case CPEndsWithPredicateOperatorType:
var range = CPMakeRange([lhs length] - [rhs length],[rhs length]);
if (_options & CPCaseInsensitivePredicateOption) string_compare_options |= CPCaseInsensitiveSearch;
if (_options & CPDiacriticInsensitivePredicateOption) string_compare_options |= CPDiacriticInsensitiveSearch;
case CPLikePredicateOperatorType: if (_options & CPDiacriticInsensitivePredicateOption)
{
lhs = lhs.stripDiacritics();
rhs = rhs.stripDiacritics();
}
var commut = (_options & CPCaseInsensitivePredicateOption) ? "gi":"g",
reg = new RegExp(rhs.escapeForRegExp(),commut);
return reg.test(lhs);
return ([lhs compare:rhs options:string_compare_options range:range] == CPOrderedSame);
case CPCustomSelectorPredicateOperatorType:
return [lhs performSelector:_customSelector withObject:rhs];
case CPInPredicateOperatorType:
var a = lhs; // swap
lhs = rhs;
rhs = a;
case CPContainsPredicateOperatorType:
if (![lhs isKindOfClass:[CPString class]])
{
if (![lhs respondsToSelector: @selector(objectEnumerator)])
[CPException raise:CPInvalidArgumentException reason:@"The left/right hand side for a CONTAINS/IN operator must be a collection or a string"];
case CPBeginsWithPredicateOperatorType: var range = CPMakeRange(0,[rhs length]);
if (_options & CPCaseInsensitivePredicateOption) string_compare_options |= CPCaseInsensitiveSearch;
if (_options & CPDiacriticInsensitivePredicateOption) string_compare_options |= CPDiacriticInsensitiveSearch;
return ([lhs compare:rhs options:string_compare_options range:range] == CPOrderedSame);
return [lhs containsObject:rhs];
}
case CPEndsWithPredicateOperatorType: var range = CPMakeRange([lhs length] - [rhs length],[rhs length]);
if (_options & CPCaseInsensitivePredicateOption) string_compare_options |= CPCaseInsensitiveSearch;
if (_options & CPDiacriticInsensitivePredicateOption) string_compare_options |= CPDiacriticInsensitiveSearch;
return ([lhs compare:rhs options:string_compare_options range:range] == CPOrderedSame);
if (_options & CPCaseInsensitivePredicateOption)
string_compare_options |= CPCaseInsensitiveSearch;
if (_options & CPDiacriticInsensitivePredicateOption)
string_compare_options |= CPDiacriticInsensitiveSearch;
case CPCustomSelectorPredicateOperatorType: return [lhs performSelector:_customSelector withObject:rhs];
return ([lhs rangeOfString:rhs options:string_compare_options].location != CPNotFound);
case CPBetweenPredicateOperatorType:
if ([rhs count] < 2)
[CPException raise:CPInvalidArgumentException reason:@"The right hand side for a BETWEEN operator must contain 2 objects"];
case CPInPredicateOperatorType: var a = lhs; // swap
lhs = rhs;
rhs = a;
case CPContainsPredicateOperatorType: if (![lhs isKindOfClass:[CPString class]])
{
if (![lhs respondsToSelector: @selector(objectEnumerator)])
[CPException raise:CPInvalidArgumentException reason:@"The left/right hand side for a CONTAINS/IN operator must be a collection or a string"];
return ([lhs compare:rhs[0]] == CPOrderedDescending && [lhs compare:rhs[1]] == CPOrderedAscending);
default:
return NO;
return [lhs containsObject:rhs];
}
if (_options & CPCaseInsensitivePredicateOption)
string_compare_options |= CPCaseInsensitiveSearch;
if (_options & CPDiacriticInsensitivePredicateOption)
string_compare_options |= CPDiacriticInsensitiveSearch;
return ([lhs rangeOfString:rhs options:string_compare_options].location != CPNotFound);
case CPBetweenPredicateOperatorType: if ([rhs count] < 2)
[CPException raise:CPInvalidArgumentException reason:@"The right hand side for a BETWEEN operator must contain 2 objects"];
return ([lhs compare:rhs[0]] == CPOrderedDescending && [lhs compare:rhs[1]] == CPOrderedAscending);
default: return NO;
}
}
@@ -564,8 +546,10 @@ var source = ['*','?','(',')','{','}','.','+','|','/','$','^'],
String.prototype.escapeForRegExp = function()
{
var foundChar = false;
for (var i = 0; i < source.length; ++i)
var foundChar = false,
i = 0;
for (; i < source.length; ++i)
{
if (this.indexOf(source[i]) !== -1)
{
@@ -577,9 +561,9 @@ String.prototype.escapeForRegExp = function()
if (!foundChar)
return this;
var result = "",
sourceIndex;
for (var i = 0; i < this.length; ++i)
var result = "";
for (i = 0; i < this.length; ++i)
{
var sourceIndex = source.indexOf(this.charAt(i));
if (sourceIndex !== -1)
+42 -38
View File
@@ -22,6 +22,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
@import "CPArray.j"
@import "CPPredicate.j"
/*!
@@ -68,8 +69,13 @@ var CPCompoundPredicateType;
*/
- (id)initWithType:(CPCompoundPredicateType)type subpredicates:(CPArray)predicates
{
_type = type;
_predicates = predicates;
self = [super init];
if (self)
{
_type = type;
_predicates = predicates;
}
return self;
}
@@ -126,10 +132,10 @@ var CPCompoundPredicateType;
- (CPPredicate)predicateWithSubstitutionVariables:(CPDictionary)variables
{
var subp = [CPArray array],
count = [subp count];
i;
count = [subp count],
i = 0;
for (i = 0; i < count; i++)
for (; i < count; i++)
{
var p = [subp objectAtIndex:i],
sp = [p predicateWithSubstitutionVariables:variables];
@@ -145,12 +151,12 @@ var CPCompoundPredicateType;
var result = "",
args = [CPArray array],
count = [_predicates count],
i;
i = 0;
if (count == 0)
return @"TRUPREDICATE";
for (i = 0; i < count; i++)
for (; i < count; i++)
{
var subpredicate = [_predicates objectAtIndex:i],
precedence = [subpredicate predicateFormat];
@@ -164,21 +170,20 @@ var CPCompoundPredicateType;
switch (_type)
{
case CPNotPredicateType:
result += "NOT %s" + [args objectAtIndex:0];
break;
case CPAndPredicateType:
result += [args objectAtIndex:0];
var count = [args count];
for (var j = 1; j < count; j++)
result += " AND " + [args objectAtIndex:j];
break;
case CPOrPredicateType:
result += [args objectAtIndex:0];
var count = [args count];
for (var j = 1; j < count; j++)
result += " OR " + [args objectAtIndex:j];
break;
case CPNotPredicateType: result += "NOT %s" + [args objectAtIndex:0];
break;
case CPAndPredicateType: result += [args objectAtIndex:0];
var count = [args count];
for (var j = 1; j < count; j++)
result += " AND " + [args objectAtIndex:j];
break;
case CPOrPredicateType: result += [args objectAtIndex:0];
var count = [args count];
for (var j = 1; j < count; j++)
result += " OR " + [args objectAtIndex:j];
break;
}
return result;
@@ -193,31 +198,30 @@ var CPCompoundPredicateType;
{
var result = NO,
count = [_predicates count],
i;
i = 0;
if (count == 0)
return YES;
for (i = 0; i < count; i++)
for (; i < count; i++)
{
var predicate = [_predicates objectAtIndex:i];
switch (_type)
{
case CPNotPredicateType:
return ![predicate evaluateWithObject:object substitutionVariables:variables];
case CPAndPredicateType:
if (i == 0)
result = [predicate evaluateWithObject:object substitutionVariables:variables];
else
result = result && [predicate evaluateWithObject:object substitutionVariables:variables];
if (!result)
return NO;
break;
case CPOrPredicateType:
if ([predicate evaluateWithObject:object substitutionVariables:variables])
return YES;
break;
case CPNotPredicateType: return ![predicate evaluateWithObject:object substitutionVariables:variables];
case CPAndPredicateType: if (i == 0)
result = [predicate evaluateWithObject:object substitutionVariables:variables];
else
result = result && [predicate evaluateWithObject:object substitutionVariables:variables];
if (!result)
return NO;
break;
case CPOrPredicateType: if ([predicate evaluateWithObject:object substitutionVariables:variables])
return YES;
break;
}
}
+12 -11
View File
@@ -19,15 +19,16 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
@import "CPString.j"
@import "CPArray.j"
@import "CPKeyValueCoding.j"
@import "CPDictionary.j"
@import "CPKeyValueCoding.j"
@import "CPObject.j"
@import "CPString.j"
/*!
An expression that always returns the same value.
*/
CPConstantValueExpressionType = 0;
CPConstantValueExpressionType = 0;
/*!
An expression that always returns the parameter object itself.
*/
@@ -35,35 +36,35 @@ CPEvaluatedObjectExpressionType = 1;
/*!
An expression that always returns whatever value is associated with the key specified by ‘variable’ in the bindings dictionary.
*/
CPVariableExpressionType = 2;
CPVariableExpressionType = 2;
/*!
An expression that returns something that can be used as a key path.
*/
CPKeyPathExpressionType = 3;
CPKeyPathExpressionType = 3;
/*!
An expression that returns the result of evaluating a function.
*/
CPFunctionExpressionType = 4;
CPFunctionExpressionType = 4;
/*!
An expression that defines an aggregate of CPExpression objects.
*/
CPAggregateExpressionType = 5;
CPAggregateExpressionType = 5;
/*!
An expression that filters a collection using a subpredicate.
*/
CPSubqueryExpressionType = 6;
CPSubqueryExpressionType = 6;
/*!
An expression that creates a union of the results of two nested expressions.
*/
CPUnionSetExpressionType = 7;
CPUnionSetExpressionType = 7;
/*!
An expression that creates an intersection of the results of two nested expressions.
*/
CPIntersectSetExpressionType = 8;
CPIntersectSetExpressionType = 8;
/*!
An expression that combines two nested expression results by set subtraction.
*/
CPMinusSetExpressionType = 9;
CPMinusSetExpressionType = 9;
/*!
@ingroup foundation
@@ -19,8 +19,8 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
@import "CPExpression.j"
@import "CPArray.j"
@import "CPExpression.j"
@import "CPString.j"
@implementation CPExpression_aggregate : CPExpression
@@ -30,8 +30,10 @@
- (id)initWithAggregate:(CPArray)collection
{
[super initWithExpressionType:CPAggregateExpressionType];
_aggregate = collection;
self = [super initWithExpressionType:CPAggregateExpressionType];
if (self)
_aggregate = collection;
return self;
}
@@ -68,11 +70,11 @@
- (CPString)description
{
var i,
var i = 0,
count = [_aggregate count],
result = "{";
for (i = 0; i < count; i++)
for (; i < count; i++)
result = result + [CPString stringWithFormat:@"%s%s", [[_aggregate objectAtIndex:i] description], (i + 1 < count) ? @", " : @""];
result = result + "}";
@@ -84,9 +86,9 @@
{
var subst_array = [CPArray array],
count = [_aggregate count],
i;
i = 0;
for (i = 0; i < count; i++)
for (; i < count; i++)
[subst_array addObject:[[_aggregate objectAtIndex:i] _expressionWithSubstitutionVariables:variables]];
return [CPExpression expressionForAggregate:subst_array];
@@ -22,8 +22,8 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
@import "CPExpression.j"
@import "CPDictionary.j"
@import "CPExpression.j"
@implementation CPExpression_constant : CPExpression
{
@@ -32,8 +32,10 @@
- (id)initWithValue:(id)value
{
[super initWithExpressionType:CPConstantValueExpressionType];
_value = value;
self = [super initWithExpressionType:CPConstantValueExpressionType];
if (self)
_value = value;
return self;
}
+23 -20
View File
@@ -19,11 +19,12 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
@import "CPArray.j"
@import "CPDate.j"
@import "CPDictionary.j"
@import "CPException.j"
@import "CPExpression.j"
@import "CPString.j"
@import "CPArray.j"
@import "CPDictionary.j"
@import "CPDate.j"
@implementation CPExpression_function : CPExpression
{
@@ -51,16 +52,18 @@
- (id)initWithTarget:(CPExpression)operand selector:(SEL)aSelector arguments:(CPArray)parameters type:(int)type
{
[super initWithExpressionType:type];
// Cocoa doc: "This method throws an exception immediately if the selector is unknown"
// but operand's value (the target) may be resolved only at runtime.
_selector = aSelector;
_operand = operand;
_arguments = parameters;
_argc = [parameters count];
_maxargs = [[CPStringFromSelector(_selector) componentsSeparatedByString:@":"] count] - 1;
self = [super initWithExpressionType:type];
if (self)
{
// Cocoa doc: "This method throws an exception immediately if the selector is unknown"
// but operand's value (the target) may be resolved only at runtime.
_selector = aSelector;
_operand = operand;
_arguments = parameters;
_argc = [parameters count];
_maxargs = [[CPStringFromSelector(_selector) componentsSeparatedByString:@":"] count] - 1;
}
return self;
}
@@ -99,9 +102,9 @@
{
var target = [_operand expressionValueWithObject:object context:context],
objj_args = [target, _selector],
i;
i = 0;
for (i = 0; i < _argc; i++)
for (; i < _argc; i++)
{
var arg = [_arguments[i] expressionValueWithObject:object context:context];
objj_args.push(arg);
@@ -140,9 +143,10 @@
- (CPExpression)_expressionWithSubstitutionVariables:(CPDictionary)variables
{
var operand = [[self operand] _expressionWithSubstitutionVariables:variables],
args = [CPArray array];
args = [CPArray array],
i = 0;
for (var i = 0; i < _argc; i++)
for (; i < _argc; i++)
[args addObject:[_arguments[i] _expressionWithSubstitutionVariables:variables]];
return [CPExpression expressionForFunction:operand selectorName:[self _function] arguments:args];
@@ -150,9 +154,9 @@
@end
var CPSelectorNameKey = @"CPSelectorName",
CPArgumentsKey = @"CPArguments",
CPOperandKey = @"CPOperand",
var CPSelectorNameKey = @"CPSelectorName",
CPArgumentsKey = @"CPArguments",
CPOperandKey = @"CPOperand",
CPExpressionTypeKey = @"CPExpressionType";
@implementation CPExpression_function (CPCoding)
@@ -304,4 +308,3 @@ var CPSelectorNameKey = @"CPSelectorName",
}
@end
@@ -24,8 +24,8 @@
@import "CPExpression.j"
@import "CPExpression_function.j"
@import "CPString.j"
@import "CPKeyValueCoding.j"
@import "CPString.j"
@implementation CPExpression_keypath : CPExpression_function
{
+3 -2
View File
@@ -19,11 +19,12 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
@import "CPDictionary.j"
@import "CPExpression.j"
@import "CPString.j"
@import "CPDictionary.j"
var evaluatedObject = nil;
@implementation CPExpression_self : CPExpression
{
}
@@ -38,7 +39,7 @@ var evaluatedObject = nil;
- (id)init
{
[super initWithExpressionType:CPEvaluatedObjectExpressionType];
self = [super initWithExpressionType:CPEvaluatedObjectExpressionType];
return self;
}
+20 -14
View File
@@ -19,7 +19,9 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
@import "CPException.j"
@import "CPExpression.j"
@import "CPSet.j"
@implementation CPExpression_set : CPExpression
{
@@ -29,9 +31,13 @@
- (id)initWithType:(int)type left:(CPExpression)left right:(CPExpression)right
{
[super initWithExpressionType:type];
_left = left;
_right = right;
self = [super initWithExpressionType:type];
if (self)
{
_left = left;
_right = right;
}
return self;
}
@@ -65,11 +71,11 @@
switch (_type)
{
case CPIntersectSetExpressionType : [result intersectSet:right];
break;
break;
case CPUnionSetExpressionType : [result unionSet:right];
break;
break;
case CPMinusSetExpressionType : [result minusSet:right];
break;
break;
default:
}
@@ -98,11 +104,11 @@
switch (_type)
{
case CPIntersectSetExpressionType : desc = @" INTERSECT ";
break;
case CPUnionSetExpressionType : desc = @" UNION ";
break;
case CPMinusSetExpressionType : desc = @" MINUS ";
break;
break;
case CPUnionSetExpressionType : desc = @" UNION ";
break;
case CPMinusSetExpressionType : desc = @" MINUS ";
break;
default:
}
@@ -111,9 +117,9 @@
@end
var CPLeftExpressionKey = @"CPLeftExpression",
CPRightExpressionKey = @"CPRightExpression",
CPExpressionType = @"CPExpressionType";
var CPLeftExpressionKey = @"CPLeftExpression",
CPRightExpressionKey = @"CPRightExpression",
CPExpressionType = @"CPExpressionType";
@implementation CPExpression_set (CPCoding)
+16 -11
View File
@@ -19,7 +19,10 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
@import "CPArray.j"
@import "CPDictionary.j"
@import "CPExpression.j"
@import "CPPredicate.j"
@implementation CPExpression_subquery : CPExpression
{
@@ -36,12 +39,14 @@
- (id)initWithExpression:(CPExpression)collection usingIteratorExpression:(CPExpression)variableExpression predicate:(CPPredicate)subpredicate
{
[super initWithExpressionType:CPSubqueryExpressionType];
_subpredicate = subpredicate;
_collection = collection;
_variableExpression = variableExpression;
self = [super initWithExpressionType:CPSubqueryExpressionType];
if (self)
{
_subpredicate = subpredicate;
_collection = collection;
_variableExpression = variableExpression;
}
return self;
}
@@ -50,10 +55,10 @@
var collection = [_collection expressionValueWithObject:object context:context],
count = [collection count],
result = [CPArray array],
bindings = [CPDictionary dictionaryWithObject:[CPExpression expressionForEvaluatedObject] forKey:[self variable]],
i = 0;
bindings = [CPDictionary dictionaryWithObject:[CPExpression expressionForEvaluatedObject] forKey:[self variable]];
for (var i = 0; i < count; i++)
for (; i < count; i++)
{
var item = [collection objectAtIndex:i];
if ([_subpredicate evaluateWithObject:item substitutionVariables:bindings])
@@ -110,9 +115,9 @@
}
@end
var CPExpressionKey = @"CPExpression",
CPSubpredicateKey = @"CPSubpredicate",
CPVariableKey = @"CPVariable";
var CPExpressionKey = @"CPExpression",
CPSubpredicateKey = @"CPSubpredicate",
CPVariableKey = @"CPVariable";
@implementation CPExpression_subquery (CPCoding)
@@ -22,9 +22,10 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
@import "CPDictionary.j"
@import "CPException.j"
@import "CPExpression.j"
@import "CPString.j"
@import "CPDictionary.j"
@implementation CPExpression_variable : CPExpression
{
@@ -33,9 +34,12 @@
- (id)initWithVariable:(CPString)variable
{
[super initWithExpressionType:CPVariableExpressionType];
_variable = [variable copy];
self = [super initWithExpressionType:CPVariableExpressionType];
if (self)
{
_variable = [variable copy];
}
return self;
}
+15 -12
View File
@@ -23,10 +23,13 @@
*/
@import "CPArray.j"
@import "CPDictionary.j"
@import "CPSet.j"
@import "CPException.j"
@import "CPNull.j"
@import "CPObject.j"
@import "CPScanner.j"
@import "CPSet.j"
@import "CPValue.j"
@import "CPCharacterSet.j"
/*!
@ingroup foundation
@@ -187,9 +190,9 @@
{
var count = [self count],
result = [CPArray array],
i;
i = 0;
for (i = 0; i < count; i++)
for (; i < count; i++)
{
var object = self[i];
if ([predicate evaluateWithObject:object])
@@ -218,9 +221,9 @@
{
var count = [self count],
result = [CPSet set],
i;
i = 0;
for (i = 0; i < count; i++)
for (; i < count; i++)
{
var object = [self objectAtIndex:i];
@@ -263,8 +266,9 @@ function(newValue)\
- (id)initWithString:(CPString)format args:(CPArray)args
{
self = [super initWithString:format];
if (self != nil)
self = [super initWithString:format]
if (self)
{
_args = [args objectEnumerator];
}
@@ -278,8 +282,7 @@ function(newValue)\
- (BOOL)scanPredicateKeyword:(CPString)key
{
var loc = [self scanLocation],
c;
var loc = [self scanLocation];
[self setCaseSensitive:NO];
if (![self scanString:key intoString:NULL])
@@ -288,7 +291,7 @@ function(newValue)\
if ([self isAtEnd])
return YES;
c = [[self string] characterAtIndex:[self scanLocation]];
var c = [[self string] characterAtIndex:[self scanLocation]];
if (![[CPCharacterSet alphanumericCharacterSet] characterIsMember:c])
return YES;
@@ -308,7 +311,7 @@ function(newValue)\
}
catch(error)
{
CPLogConsole(@"Unable to parse predicate '"+[self string]+"' with " + error);
CPLogConsole(@"Unable to parse predicate '" + [self string] + "' with " + error);
}
finally
{
-1
View File
@@ -22,7 +22,6 @@
@import "CPObject.j"
CPPropertyListUnknownFormat = 0;
CPPropertyListOpenStepFormat = kCFPropertyListOpenStepFormat;
CPPropertyListXMLFormat_v1_0 = kCFPropertyListXMLFormat_v1_0;
+1 -1
View File
@@ -22,9 +22,9 @@
@import "CPException.j"
@import "CPInvocation.j"
@import "CPObject.j"
@import "CPString.j"
@implementation CPProxy
{
}
+1
View File
@@ -21,6 +21,7 @@
*/
@import "CPArray.j"
@import "CPDate.j"
@import "CPObject.j"
@import "CPString.j"
+17 -8
View File
@@ -20,7 +20,9 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
@import <Foundation/CPCharacterSet.j>
@import "CPCharacterSet.j"
@import "CPDictionary.j"
@import "CPString.j"
@implementation CPScanner : CPObject
{
@@ -276,6 +278,7 @@
var current = [self scanLocation],
str = [self string],
captured = nil;
while (current < str.length)
{
var currentStr = str.substr(current, s.length);
@@ -307,16 +310,18 @@
- (float)scanFloat
{
[self _movePastCharactersToBeSkipped];
var str = [self string], current = [self scanLocation];
var str = [self string],
current = [self scanLocation];
if ([self isAtEnd])
return 0;
var s = str.substring(current, str.length),
f = parseFloat(s); // wont work with non . decimal separator !!
if (f)
{
var pos,
var pos = current,
foundDash = NO;
/*
var decimalSeparatorString;
@@ -329,7 +334,7 @@
*/
var separatorCode = 45;
for (pos = current; pos < current + str.length; pos++)
for (; pos < current + str.length; pos++)
{
var charCode = str.charCodeAt(pos);
if (charCode == separatorCode)
@@ -352,17 +357,21 @@
- (int)scanInt
{
[self _movePastCharactersToBeSkipped];
var str = [self string], current = [self scanLocation];
var str = [self string],
current = [self scanLocation];
if ([self isAtEnd])
return 0;
var s = str.substring(current, str.length),
i = parseInt(s);
if (i)
{
var pos,
var pos = current,
foundDash = NO;
for (pos = current; pos < current + str.length; pos++)
for (; pos < current + str.length; pos++)
{
var charCode = str.charCodeAt(pos);
if (charCode == 46)
@@ -406,4 +415,4 @@
return [super description] + " {" + CPStringFromClass([self class]) + ", state = '" + ([self string].substr(0, _scanLocation) + "{{ SCAN LOCATION ->}}" + [self string].substr(_scanLocation)) + "'; }";
}
@end
@end
+2
View File
@@ -20,6 +20,8 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
@import "CPException.j"
@import "CPObject.j"
@import "CPSet.j"
@implementation CPObject (CPSetKVO)
+1
View File
@@ -25,6 +25,7 @@
@import "CPObjJRuntime.j"
@import "CPRange.j"
@import "CPSortDescriptor.j"
@import "CPURL.j"
@import "CPValue.j"
/*!