Пример #1
0
        private static void ValidateProfileTextBlockData(ContainerFragment containerFragment,
                                                         GenContainerFragmentBase genContainerFragment)
        {
            var textBlock = containerFragment as TextBlock;

            if (textBlock == null)
            {
                return;
            }

            var genTextBlock = (GenTextBlock)genContainerFragment;
            var s            = "";

            foreach (var fragment in textBlock.Body().FragmentList)
            {
                var text        = fragment as Text;
                var placeholder = fragment as Placeholder;
                if (text != null)
                {
                    s += text.TextValue;
                }
                else if (placeholder != null)
                {
                    s += String.Format("`{0}.{1}`", placeholder.Class, placeholder.Property);
                }
            }
            Assert.AreEqual(
                genTextBlock.ProfileText(ProfileFragmentSyntaxDictionary.ActiveProfileFragmentSyntaxDictionary), s,
                "Text block profile text");
        }
        private void ScanBody(int classId, GenSegBody body, GenContainerFragmentBase parentContainer,
                              ContainerFragment containerFragment)
        {
            var saveClassId = GenDataDef.CurrentClassId;

            GenDataDef.CurrentClassId = classId;
            if (!Scan.Eof)
            {
                TokenType t;
                CompactPrimaryBodyParser.ScanPartialBody(classId, body, parentContainer, containerFragment, out t);
                if (t == TokenType.Secondary)
                {
                    Scan.SkipChar();
                    CompactSecondaryBodyParser.ScanPartialBody(classId, body, parentContainer, containerFragment, out t);
                }

                if (t != TokenType.Close)
                {
                    if (Scan.Eof && classId != 0)
                    {
                        //throw new Exception("<<<<Missing Segment end bracket>>>>");
                        OutputText(parentContainer, true, "<<<<Missing Segment end bracket>>>>");
                    }
                    if (!Scan.Eof)
                    {
                        //throw new Exception("<<<<Unknown text in profile>>>>");
                        OutputText(parentContainer, true, "<<<<Unknown text in profile>>>>");
                    }
                }
                else
                {
                    if (Scan.CheckChar(']'))
                    {
                        Scan.SkipChar();
                    }
                }
            }
            else if (classId != 0)
            {
                //throw new Exception("<<<<<Missing Segment end bracket>>>>>");
                OutputText(parentContainer, true, "<<<<Unknown text in profile>>>>");
            }
            GenDataDef.CurrentClassId = saveClassId;
        }
Пример #3
0
        private static void ValidateProfileSegmentData(GenDataDef genDataDef, ContainerFragment containerFragment,
                                                       GenContainerFragmentBase genContainerFragment, ref string className)
        {
            var segment = containerFragment as Segment;

            if (segment == null)
            {
                return;
            }

            var genSegment = (GenSegment)genContainerFragment;

            className = segment.Class;
            Assert.AreEqual(genDataDef.GetClassName(genSegment.ClassId), className, "Segment class");
            var cardinality = ((Segment)genSegment.Fragment).GenCardinality;

            Assert.AreEqual(cardinality.ToString(), segment.Cardinality);
            if (cardinality == GenCardinality.AllDlm ||
                cardinality == GenCardinality.BackDlm)
            {
                Assert.AreNotEqual("Empty1", segment.Secondary);
                Assert.AreNotEqual(0, segment.SecondaryBody().FragmentList.Count);
            }
        }
Пример #4
0
        internal void ScanPartialBody(int classId, GenSegBody body, GenContainerFragmentBase parentContainer, ContainerFragment containerFragment, out TokenType t)
        {
            FragmentBody = IsPrimary ? containerFragment.Body() : containerFragment.SecondaryBody();
            GenTextBlock textBlock = null;
            var          s         = Scan.ScanText();

            if (Scan.Eof)
            {
                if (s.Length > 0)
                {
                    GenCompactProfileParser.AddText(parentContainer, FragmentBody, ref textBlock, s, GenDataDef, IsPrimary);
                }
                t = TokenType.Unknown;
                return;
            }

            if (s.Length > 0)
            {
                GenCompactProfileParser.AddText(parentContainer, FragmentBody, ref textBlock, s, GenDataDef, IsPrimary);
            }

            t = Scan.ScanTokenType();
            while (!Scan.Eof && t != TokenType.Close && t != TokenType.Secondary && t != TokenType.Unknown)
            {
                if (t != TokenType.Name && textBlock != null)
                {
                    textBlock = null;
                }
                var frag = GenCompactProfileParser.ScanFragment(classId, ref t, out s, parentContainer, FragmentBody, ref textBlock, IsPrimary);
                if (t != TokenType.Name)
                {
                    AddFragment(body, frag);
                }
                if (s.Length > 0)
                {
                    GenCompactProfileParser.AddText(parentContainer, FragmentBody, ref textBlock, s, GenDataDef, IsPrimary);
                }
                t = Scan.ScanTokenType();
            }
        }