Exemplo n.º 1
0
        internal PgnGameSyntax(PgnGameListSyntax parent, int parentIndex, GreenPgnGameSyntax green)
        {
            Parent      = parent;
            ParentIndex = parentIndex;
            Green       = green;

            tagSection = new SafeLazyObject <PgnTagSectionSyntax>(() => new PgnTagSectionSyntax(this, green.TagSection));
            plyList    = new SafeLazyObject <PgnPlyListSyntax>(() => new PgnPlyListSyntax(this, green.PlyList));

            if (green.GameResult != null)
            {
                lazyGameResultOrEmpty = new SafeLazyChildSyntaxOrEmpty <PgnGameResultWithTriviaSyntax>(
                    () => new PgnGameResultWithTriviaSyntax(this, Green.GameResult));
            }
            else
            {
                lazyGameResultOrEmpty = new SafeLazyChildSyntaxOrEmpty <PgnGameResultWithTriviaSyntax>(
                    this, green.TagSection.Length + green.PlyList.Length);
            }
        }
Exemplo n.º 2
0
        internal PgnVariationSyntax(PgnVariationWithFloatItemsSyntax parent, GreenPgnVariationSyntax green)
        {
            Parent = parent;
            Green  = green;

            parenthesisOpen = new SafeLazyObject <PgnParenthesisOpenWithTriviaSyntax>(
                () => new PgnParenthesisOpenWithTriviaSyntax(this, Green.ParenthesisOpen));

            pliesWithFloatItems = new SafeLazyObject <PgnPlyListSyntax>(
                () => new PgnPlyListSyntax(this, Green.PliesWithFloatItems));

            if (green.ParenthesisClose != null)
            {
                lazyParenthesisCloseOrEmpty = new SafeLazyChildSyntaxOrEmpty <PgnParenthesisCloseWithTriviaSyntax>(
                    () => new PgnParenthesisCloseWithTriviaSyntax(this, Green.ParenthesisClose));
            }
            else
            {
                lazyParenthesisCloseOrEmpty = new SafeLazyChildSyntaxOrEmpty <PgnParenthesisCloseWithTriviaSyntax>(
                    this, green.ParenthesisOpen.Length + green.PliesWithFloatItems.Length);
            }
        }
Exemplo n.º 3
0
        internal PgnPlySyntax(PgnPlyListSyntax parent, int parentIndex, GreenPgnPlySyntax green)
        {
            Parent      = parent;
            ParentIndex = parentIndex;
            Green       = green;

            int length = 0;

            if (green.MoveNumber != null)
            {
                lazyMoveNumberOrEmpty = new SafeLazyChildSyntaxOrEmpty <PgnMoveNumberWithFloatItemsSyntax>(() => new PgnMoveNumberWithFloatItemsSyntax(this, Green.MoveNumber));
                length += green.MoveNumber.Length;
            }
            else
            {
                lazyMoveNumberOrEmpty = new SafeLazyChildSyntaxOrEmpty <PgnMoveNumberWithFloatItemsSyntax>(this, length);
            }

            if (green.Move != null)
            {
                lazyMoveOrEmpty = new SafeLazyChildSyntaxOrEmpty <PgnMoveWithFloatItemsSyntax>(() => new PgnMoveWithFloatItemsSyntax(this, Green.Move));
                length         += green.Move.Length;
            }
            else
            {
                lazyMoveOrEmpty = new SafeLazyChildSyntaxOrEmpty <PgnMoveWithFloatItemsSyntax>(this, length);
            }

            Nags = new SafeLazyObjectCollection <PgnNagWithFloatItemsSyntax>(
                green.Nags.Count,
                index => new PgnNagWithFloatItemsSyntax(this, index, Green.Nags[index]));

            Variations = new SafeLazyObjectCollection <PgnVariationWithFloatItemsSyntax>(
                green.Variations.Count,
                index => new PgnVariationWithFloatItemsSyntax(this, index, Green.Variations[index]));
        }