Beispiel #1
0
        private static void VerifyReassembly(string inputString)
        {
            var expectedModel = new MemDocModel();

            expectedModel.ParseFromString(inputString, false);
            Assert.AreEqual(inputString.TrimEndAndNewlines(), expectedModel.ToString().TrimEndAndNewlines());
        }
 public void MemberWithOnlySummary()
 {
     const string inputString = "This is our summary";
     var derivedModel = new MemDocModel(inputString);
     Assert.AreEqual(inputString, derivedModel.Summary);
     Assert.AreEqual(0, derivedModel.TextBlocks.Count);
     Assert.AreEqual(0, derivedModel.Parameters.Count);
     Assert.AreEqual(0, derivedModel.SignatureList.Count);
 }
Beispiel #3
0
        public void MemberWithOnlySummary()
        {
            const string inputString  = "This is our summary";
            var          derivedModel = new MemDocModel(inputString);

            Assert.AreEqual(inputString, derivedModel.Summary);
            Assert.AreEqual(0, derivedModel.TextBlocks.Count);
            Assert.AreEqual(0, derivedModel.Parameters.Count);
            Assert.AreEqual(0, derivedModel.SignatureList.Count);
        }
 public static MemDocModel MemDocFor(MemberReference memberReference)
 {
     try
     {
         var inputFromMem = File.ReadAllText(MemFileNameFor(memberReference));
         var memDoc       = new MemDocModel(inputFromMem);
         return(memDoc);
     }
     catch
     {
         return(null);
     }
 }
 public void MemberWithSignatureListAndSummary()
 {
     const string inputString = ParserToken.SignatureOpen + @"
     sig1
     sig2
     sig3
     sig4
     " + ParserToken.SignatureClose + @"
     Summary for all sigs";
     var derivedModel = new MemDocModel(inputString);
     Assert.AreEqual("Summary for all sigs", derivedModel.Summary);
     Assert.AreEqual(0, derivedModel.TextBlocks.Count);
     Assert.AreEqual(0, derivedModel.Parameters.Count);
     Assert.AreEqual(4, derivedModel.SignatureList.Count);
 }
Beispiel #6
0
        public void MemberWithSignatureListAndSummary()
        {
            const string inputString  = ParserToken.SignatureOpen + @"
sig1
sig2
sig3
sig4
" + ParserToken.SignatureClose + @"
Summary for all sigs";
            var          derivedModel = new MemDocModel(inputString);

            Assert.AreEqual("Summary for all sigs", derivedModel.Summary);
            Assert.AreEqual(0, derivedModel.TextBlocks.Count);
            Assert.AreEqual(0, derivedModel.Parameters.Count);
            Assert.AreEqual(4, derivedModel.SignatureList.Count);
        }
 public void MemberWith2MeaningfulBlocks()
 {
     const string inputString = ParserToken.SignatureOpen + @"
     sig1
     sig2
     " + ParserToken.SignatureClose + @"
     Summary for first sigs
     "+ParserToken.SignatureOpen + @"
     sig3
     sig4
     " + ParserToken.SignatureClose + @"
     Summary for second sigs
     ";
     var derivedModel = new MemDocModel(inputString);
     Assert.AreEqual(2, derivedModel.MeaningfulBlocks.Count);
     Assert.AreEqual("Summary for first sigs", derivedModel.MeaningfulBlocks[0].Summary);
     Assert.AreEqual("Summary for second sigs", derivedModel.MeaningfulBlocks[1].Summary);
 }
Beispiel #8
0
        public void MemberWith2MeaningfulBlocks()
        {
            const string inputString  = ParserToken.SignatureOpen + @"
sig1
sig2
" + ParserToken.SignatureClose + @"
Summary for first sigs
" + ParserToken.SignatureOpen + @"
sig3
sig4
" + ParserToken.SignatureClose + @"
Summary for second sigs
";
            var          derivedModel = new MemDocModel(inputString);

            Assert.AreEqual(2, derivedModel.MeaningfulBlocks.Count);
            Assert.AreEqual("Summary for first sigs", derivedModel.MeaningfulBlocks[0].Summary);
            Assert.AreEqual("Summary for second sigs", derivedModel.MeaningfulBlocks[1].Summary);
        }
Beispiel #9
0
        public void MemberWith2MeaningfulBlocks()
        {
            const string kInputString = @"<signature>
sig1
sig2
</signature>
Summary for first sigs
<signature>
sig3
sig4
</signature>
Summary for second sigs
";
            var          derivedModel = new MemDocModel();

            derivedModel.ParseFromString(kInputString, true);
            Assert.AreEqual(2, derivedModel.SubSections.Count);
            Assert.AreEqual("Summary for first sigs", derivedModel.SubSections[0].Summary);
            Assert.AreEqual("Summary for second sigs", derivedModel.SubSections[1].Summary);
        }
Beispiel #10
0
        private void WriteSummaryAndTextBlocksFor(TextWriter tw, MemDocModel memdoc)
        {
            tw.Write(@"
        <p>{0}</p>
        
", ReplaceSpecialSyntaxWithProperTags(InjectLinksToApiReferences(memdoc.Summary)));

            foreach (var block in memdoc.TextBlocks)
            {
                var descriptionBlock = block as DescriptionBlock;
                if (descriptionBlock != null)
                {
                    tw.Write("<p>{0}</P>",
                             ReplaceSpecialSyntaxWithProperTags(InjectLinksToApiReferences(descriptionBlock.Text)));
                }

                var exampleblock = block as ExampleBlock;
                if (exampleblock != null)
                {
                    tw.Write(ExampleHtmlGenerator.ExamleHtmlFor(exampleblock.Text));
                }
            }
        }
 private static void VerifyReassembly(string inputString)
 {
     var expectedModel = new MemDocModel(inputString);
     Assert.AreEqual(inputString.TrimEndAndNewlines(), expectedModel.ToString().TrimEndAndNewlines());
 }
Beispiel #12
0
    private MemberSession MergeTranslated(MemDocModel english, MemDocModel translatedOld)
    {
        MemberSession translatedNewMember = new MemberSession(m_Browser.docProject, m_Item, translatedOld.Language);
        MemDocModel   translatedNew       = translatedNewMember.Model;

        // If number of sections don't match at all, make new list of sections
        if (english.SubSections.Count != translatedNew.SubSections.Count)
        {
            translatedNew.SubSections.Clear();
            for (int i = 0; i < english.SubSections.Count; i++)
            {
                translatedNew.SubSections.Add(new MemberSubSection(""));
            }
        }

        for (int s = 0; s < english.SubSections.Count; s++)
        {
            MemberSubSection engSec = english.SubSections[s];
            MemberSubSection newSec = translatedNew.SubSections[s];

            // Replace signatures
            newSec.SignatureList = engSec.SignatureList;
            // Replace flags
            newSec.IsCsNone = engSec.IsCsNone;
            newSec.IsUndoc  = engSec.IsUndoc;

            // Merge parameters
            List <ParameterWithDoc> oldParams = newSec.Parameters;
            newSec.Parameters = new List <ParameterWithDoc> ();
            foreach (ParameterWithDoc engParam in engSec.Parameters)
            {
                ParameterWithDoc newParam = new ParameterWithDoc(engParam.Name);
                newParam.Types = engParam.Types;
                ParameterWithDoc oldParam = oldParams.FirstOrDefault(e => e.Name == engParam.Name);
                if (oldParam != null && !string.IsNullOrEmpty(oldParam.Doc))
                {
                    newParam.Doc = oldParam.Doc;
                }
                else
                {
                    newParam.Doc = GetInitialTranslationString(engParam.Doc);
                }
                newSec.Parameters.Add(newParam);
            }

            // Merge return type
            if (engSec.ReturnDoc == null)
            {
                newSec.ReturnDoc = null;
            }
            else
            {
                string returnDocString = newSec.ReturnDoc != null ? newSec.ReturnDoc.Doc : GetInitialTranslationString(engSec.ReturnDoc.Doc);
                newSec.ReturnDoc            = new ReturnWithDoc();
                newSec.ReturnDoc.ReturnType = engSec.ReturnDoc.ReturnType;
                newSec.ReturnDoc.Doc        = returnDocString;
            }

            // Merge text blocks
            bool blockTypesMatch = true;
            if (newSec.TextBlocks.Count != engSec.TextBlocks.Count)
            {
                blockTypesMatch = false;
            }
            else
            {
                for (int i = 0; i < engSec.TextBlocks.Count; i++)
                {
                    if (engSec.TextBlocks[i].GetType() != newSec.TextBlocks[i].GetType())
                    {
                        blockTypesMatch = false;
                    }
                }
            }

            // If block types match, only replace examples
            if (blockTypesMatch)
            {
                for (int i = 0; i < engSec.TextBlocks.Count; i++)
                {
                    TextBlock engBlock = engSec.TextBlocks[i];
                    if (engBlock is ExampleBlock)
                    {
                        newSec.TextBlocks[i] = engBlock;
                    }
                }
            }
            // If block types don't match, replace examples and make all description
            // blocks have TODO in them (except if the English one is empty too).
            else
            {
                newSec.TextBlocks.Clear();
                for (int i = 0; i < engSec.TextBlocks.Count; i++)
                {
                    TextBlock engBlock = engSec.TextBlocks[i];
                    if (engBlock is ExampleBlock)
                    {
                        newSec.TextBlocks.Add(engBlock);
                    }
                    else if (engBlock is DescriptionBlock)
                    {
                        newSec.TextBlocks.Add(new DescriptionBlock(GetInitialTranslationString(engBlock.Text)));
                    }
                }
            }
        }

        translatedNewMember.TextOrig    = translatedOld.ToString();
        translatedNewMember.TextCurrent = translatedNew.ToString();
        translatedNewMember.Diff.Compare(translatedNewMember.TextOrig, translatedNewMember.TextCurrent);
        return(translatedNewMember);
    }