Archived
1

Redesign of the Evaluation System

This commit is contained in:
Kim Wittenburg
2014-09-13 23:16:44 +02:00
parent a3e1cc6df4
commit b50c444578
20 changed files with 431 additions and 135 deletions

View File

@@ -21,24 +21,37 @@
return self;
}
- (instancetype)initWithFactor:(id<MPParsedFactor>)factor
{
self = [super init];
if (self) {
_factors = [[NSMutableArray alloc] initWithObjects:factor, nil];
}
return self;
}
- (NSArray *)factors
{
return _factors;
}
- (void)addFactor:(MPParsedFactor *)factor
- (void)addFactor:(id<MPParsedFactor>)factor
{
[_factors addObject:factor];
}
- (NSDecimalNumber *)value
- (NSDecimalNumber *)evaluateWithError:(MPParseError *__autoreleasing *)error
{
if (_factors.count == 0) {
return [NSDecimalNumber zero];
}
NSDecimalNumber *value = [NSDecimalNumber one];
for (MPParsedFactor *factor in _factors) {
value = [value decimalNumberByMultiplyingBy:factor.value];
for (id<MPParsedFactor> factor in _factors) {
NSDecimalNumber *factorValue = [factor evaluateWithError:error];
if (!factorValue) {
return nil;
}
value = [value decimalNumberByMultiplyingBy:factorValue];
}
return value;
}