private void AddNew(BaseNumberNode parent, BaseDecoratedNumber child, string differentiator, int paragraphOrder) { var node = new NumberNode(parent, child, paragraphOrder); parent.ChildDifferentiator = differentiator; parent.Children.Add(node); Current = node; _differentiatorSetInCurrentChain.Add(differentiator); _differentiatorLevelPropsMapping[differentiator] = new LevelProps { Level = Current.Level, MaxNumber = child.Number.IntNumber, }; }
private void ContinueLevel(BaseDecoratedNumber currentNumber, string differentiator, int paragraphOrder) { if (Current == null) { throw new ArgumentNullException("Current node cannot be null"); } if (Current.DecoratedNumber.Number.IntNumber + 1 != currentNumber.Number.IntNumber) { throw new DiscontinuousNumberException(currentNumber, Current.DecoratedNumber.Number.IntNumber + 1); } var node = new NumberNode(Current.Parent, currentNumber, paragraphOrder); Current.Parent.Children.Add(node); Current = node; _differentiatorLevelPropsMapping[differentiator] = new LevelProps { Level = Current.Level, MaxNumber = currentNumber.Number.IntNumber, }; }