private List <PaddedDiamondRow> MoveDownChain(Letter midpoint, DiamondDepth depth)
        {
            var result = base.Handle(midpoint, depth);

            result.Add(_row);

            return(result);
        }
Exemplo n.º 2
0
 public virtual List <PaddedDiamondRow> Handle(Letter midpoint, DiamondDepth depth)
 {
     if (_nextHandler != null)
     {
         return(_nextHandler.Handle(midpoint, IncrementDepth(depth)));
     }
     else
     {
         return(new List <PaddedDiamondRow>());
     }
 }
        public virtual List <PaddedDiamondRow> Process(Letter midpoint, DiamondDepth depth, Letter chainLetter)
        {
            var rowLength = RowLength(midpoint);

            _row = new PaddedDiamondRow(depth, chainLetter, rowLength);

            var result = new List <PaddedDiamondRow> {
                _row
            };

            if (!midpoint.Equals(chainLetter))
            {
                result.AddRange(MoveDownChain(midpoint, depth));
            }

            return(result);
        }
Exemplo n.º 4
0
 public PaddedDiamondRow(DiamondDepth depth, Letter letter, int rowLength)
 {
     PadMiddle(depth.ToInt(), letter.ToChar());
     PadSides(rowLength);
 }
Exemplo n.º 5
0
 private DiamondDepth IncrementDepth(DiamondDepth depth) => new DiamondDepth(depth.ToInt() + 1);
Exemplo n.º 6
0
 public override List <PaddedDiamondRow> Handle(Letter midpoint, DiamondDepth depth) => Process(midpoint, depth, _link);