"($)path.($)variable"
"SUBQUERY(collection, $x,$x = 2)"
"sum:(arg1, ...)"
"FUNCTION(target, selector, arg1, ...)
"object[expression]"
"set UNION|INTERSECT|MINUS otherset"
Fixed a bug where CPExpression_set was evaluating to an expression instead of a set.
Replaced parsing exceptions with a generic function indicating where it failed.
When initializing a CPArrayController with a value that is not an array setContent: would make it an array by replacing value with [value]. This is consistent with how Cocoa does it, but it should first check to make sure that the content is not nil. If it is, the sensible thing to do (and what Cocoa does) is to replace it with an empty array.
This commit also includes a missing import to make CPArrayControllerTest run without error.
Added missing getters in CPExpression.
Added a type: argument to FunctionExpression initializer used by subclasses to init super with their own type.
Fixed evaluation with bindings dictionary in CPExpression_variable. Allow values in bindings to be a constant or an expression (per cocoa).
Tests: added tests for subqueryExpressions, for variableExpression evaluation where the value in the bindings dictionary can be either a constant or another expression.
Parsing a simple variable expression works (e.g. '$x = 12'), parsing a variable in a combined path (e.g.
'$x.path = 12' won't yet.
Parsing: fixed typos in built-in function names, fixed support for [FIRST], [LAST], [INDEX]
Fixed aggregates {exp1,exp2}
Fixed -expressionForFunction:selectorName:arguments:
built-in functions are now class methods
Cleaned a lot of code in built-in functions
EvaluatedObjectExpression is now a singleton
Merged inserset/minus/union Set into one file
Deleted unused expression subclasses : expression_operator and expression_assignement
Added CPCoding methods and changed key names to match Cocoa
Made KeyPathExpresion a subclass of FunctionExpression like in Cocoa
Tests
CPComparisonPredicate: fixed typo in 'between' operator evaluation, simplified 'contains' and 'in' evaluation.
Added tests in CPPredicateTest for theses fixes.
Note: this replaces the previous non Cocoa behaviour where the token field would grow height-wise with new tokens. This behaviour can still be useful, as seen in Apple Mail, but it will now require the user to subclass CPTokenField, override layoutSubview and set the frame size to the size of the scroll view's document view.
When clipping a range (i.e. some or all of it went below the lower bound) as a result of
calling shiftIndexesStartingAtIndex:by: with a negative delta, the CPIndexSet did not adjust
the index count, which caused calls to -lastIndex to fail.
This caused -[CPArrayController removeObject:] to fail when the object removed was at index 0.
- Fixed _minimumFrameSize to take into account bezel and line break mode.
- Added test to show how sizeToFit was broken for multi-line labels in the old code.
- Added test to verify that behavior is correct for single-line labels.