Пример #1
0
 /// <summary>
 /// Creates an XML doc member element.
 /// </summary>
 /// <param name="element">The raw XML element to wrap.</param>
 /// <param name="children">The child XML doc nodes.</param>
 public XmlDocMember(XmlElement element, IEnumerable<XmlDocNode> children)
     : base(element, children.Select(Substitute))
 {
     Contract.Requires(element != null);
     Contract.Requires(children != null);
     Contract.Requires(Contract.ForAll(children, x => x != null));
     _guts = CreateGuts();
 }
        private GutsData CreateGuts()
        {
            var result = new GutsData();
            foreach (var child in Children.OfType<XmlDocElement>()) {
                if (result.TermElement == null && "TERM".Equals(child.Name, StringComparison.OrdinalIgnoreCase)) {
                    result.TermElement = child;
                    if (null != result.DescriptionElement)
                        break;
                }
                else if (result.DescriptionElement == null && "DESCRIPTION".Equals(child.Name, StringComparison.OrdinalIgnoreCase)) {
                    result.DescriptionElement = child;
                    if (null != result.TermElement)
                        break;
                }
            }

            result.TermContents = result.TermElement == null
                ? EmptyXmlDocNodeList
                : result.TermElement.Children;

            result.DescriptionContents = result.DescriptionElement == null
                ? EmptyXmlDocNodeList
                : result.DescriptionElement.Children;

            return result;
        }
Пример #3
0
 private GutsData CreateGuts()
 {
     var result = new GutsData();
     var summaryContents = new List<XmlDocNode>();
     var returnsContents = new List<XmlDocNode>();
     var valueContents = new List<XmlDocNode>();
     var remarksElements = new List<XmlDocElement>();
     var examplesElements = new List<XmlDocElement>();
     var exceptionElements = new List<XmlDocRefElement>();
     var permissionElements = new List<XmlDocRefElement>();
     var seeAlsoElements = new List<XmlDocRefElement>();
     var parameterSummaries = new List<XmlDocNameElement>();
     var typeParameterSummaries = new List<XmlDocNameElement>();
     var requiresElements = new List<XmlDocContractElement>();
     var ensuresElements = new List<XmlDocContractElement>();
     var invariantElements = new List<XmlDocContractElement>();
     foreach (var child in Children.OfType<XmlDocElement>()) {
         if ("SUMMARY".Equals(child.Name, StringComparison.OrdinalIgnoreCase)) {
             if (child.HasChildren) {
                 if (result.FirstSummary == null)
                     result.FirstSummary = child;
                 summaryContents.AddRange(child.Children);
             }
         }
         else if ("RETURNS".Equals(child.Name, StringComparison.OrdinalIgnoreCase)) {
             if (child.HasChildren) {
                 if (result.FirstReturnsSummary == null)
                     result.FirstReturnsSummary = child;
                 returnsContents.AddRange(child.Children);
             }
         }
         else if ("VALUE".Equals(child.Name, StringComparison.OrdinalIgnoreCase)) {
             if (child.HasChildren) {
                 if (result.FirstValueSummary == null)
                     result.FirstValueSummary = child;
                 valueContents.AddRange(child.Children);
             }
         }
         else if ("REMARKS".Equals(child.Name, StringComparison.OrdinalIgnoreCase)) {
             if (child.HasChildren)
                 remarksElements.Add(child);
         }
         else if ("EXAMPLE".Equals(child.Name, StringComparison.OrdinalIgnoreCase)) {
             if (child.HasChildren)
                 examplesElements.Add(child);
         }
         else if ("PURE".Equals(child.Name, StringComparison.OrdinalIgnoreCase)) {
             if (result.PureElement == null)
                 result.PureElement = child;
         }
         else if ("INHERITDOC".Equals(child.Name, StringComparison.OrdinalIgnoreCase)) {
             if (result.Inheritdoc == null)
                 result.Inheritdoc = child;
         }
         else if (child is XmlDocMember) {
             if ("GETTER".Equals(child.Name, StringComparison.OrdinalIgnoreCase)) {
                 if (child.HasChildren && result.Getter == null)
                     result.Getter = (XmlDocMember)child;
             }
             else if ("SETTER".Equals(child.Name, StringComparison.OrdinalIgnoreCase)) {
                 if (child.HasChildren && result.Setter == null)
                     result.Setter = (XmlDocMember)child;
             }
         }
         else if (child is XmlDocContractElement) {
             if ("REQUIRES".Equals(child.Name, StringComparison.OrdinalIgnoreCase)) {
                 requiresElements.Add((XmlDocContractElement)child);
             }
             else if ("ENSURES".Equals(child.Name, StringComparison.OrdinalIgnoreCase) || "ENSURESONTHROW".Equals(child.Name, StringComparison.OrdinalIgnoreCase)) {
                 ensuresElements.Add((XmlDocContractElement)child);
             }
             else if ("INVARIANT".Equals(child.Name, StringComparison.OrdinalIgnoreCase)) {
                 invariantElements.Add((XmlDocContractElement)child);
             }
         }
         else if (child is XmlDocRefElement) {
             if ("EXCEPTION".Equals(child.Name, StringComparison.OrdinalIgnoreCase))
                 exceptionElements.Add((XmlDocRefElement)child);
             else if ("PERMISSION".Equals(child.Name, StringComparison.OrdinalIgnoreCase))
                 permissionElements.Add((XmlDocRefElement)child);
             else if ("SEEALSO".Equals(child.Name, StringComparison.OrdinalIgnoreCase))
                 seeAlsoElements.Add((XmlDocRefElement)child);
         }
         else if (child is XmlDocNameElement) {
             if ("PARAM".Equals(child.Name, StringComparison.OrdinalIgnoreCase))
                 parameterSummaries.Add((XmlDocNameElement)child);
             else if ("TYPEPARAM".Equals(child.Name, StringComparison.OrdinalIgnoreCase))
                 typeParameterSummaries.Add((XmlDocNameElement)child);
         }
     }
     result.AllSummaryContents = new ReadOnlyCollection<XmlDocNode>(summaryContents.ToArray());
     result.AllReturnsSummary = new ReadOnlyCollection<XmlDocNode>(returnsContents.ToArray());
     result.AllValueSummary = new ReadOnlyCollection<XmlDocNode>(valueContents.ToArray());
     result.RemarksElements = new ReadOnlyCollection<XmlDocElement>(remarksElements.ToArray());
     result.ExampleElements = new ReadOnlyCollection<XmlDocElement>(examplesElements.ToArray());
     result.ExceptionElements = new ReadOnlyCollection<XmlDocRefElement>(exceptionElements.ToArray());
     result.PermissionElements = new ReadOnlyCollection<XmlDocRefElement>(permissionElements.ToArray());
     result.SeeAlsoElements = new ReadOnlyCollection<XmlDocRefElement>(seeAlsoElements.ToArray());
     result.ParameterSummaries = new ReadOnlyCollection<XmlDocNameElement>(parameterSummaries.ToArray());
     result.TypeParameterSummaries = new ReadOnlyCollection<XmlDocNameElement>(typeParameterSummaries.ToArray());
     result.RequiresElements = new ReadOnlyCollection<XmlDocContractElement>(requiresElements.ToArray());
     result.EnsuresElements = new ReadOnlyCollection<XmlDocContractElement>(ensuresElements.ToArray());
     result.InvariantElements = new ReadOnlyCollection<XmlDocContractElement>(invariantElements.ToArray());
     return result;
 }