//
//  MPExpressionStorage.m
//  MathKit
//
//  Created by Kim Wittenburg on 22.04.14.
//  Copyright (c) 2014 Kim Wittenburg. All rights reserved.
//

#import "MPExpressionStorage.h"

#import "MPExpressionView.h"
#import "MPExpressionLayout.h"

#import "MPRangePath.h"



@implementation MPExpressionStorage

- (instancetype)initWithElements:(NSArray *)elements
{
    self = [super initWithElements:elements];
    if (self) {
        _rootLayout = [[MPExpressionLayout alloc] initWithExpression:self parent:nil];
    }
    return self;
}


- (void)changedElementsInRangePath:(MPRangePath *)rangePath
                   replacementLength:(NSUInteger)replacementLength
{
    if (rangePath.location.length == 0) {
        return;
    }
    MPLayout *current = self.rootLayout;
    for (NSUInteger position = 0; position < rangePath.location.length-1; position++) {
        NSUInteger index = [rangePath.location indexAtPosition:position];
        current = [current childLayoutAtIndex:index];
    }
    [current clearCacheInRange:rangePath.rangeAtLastIndex
             replacementLength:replacementLength];
}

@end
