Exemple #1
0
        private void copyTopLevelElement(Element e, Element parent)
        {
            if (e.getNamespaceURI() == null)
            {
                switch (e.getLocalName())
                {
                case "summary":
                case "remarks":
                case "value":
                case "returns":
                case "example":
                    parent.appendChild(copyContainer(e));
                    break;

                case "include":
                    include(e, parent, false);
                    break;

                case "exception":
                    parent.appendChild(copyException(e));
                    break;

                case "param":
                    parent.appendChild(copyParam(e));
                    break;

                case "typeparam":
                    parent.appendChild(copyTypeparam(e));
                    break;

                case "seealso":
                    parent.appendChild(copySeealso(e));
                    break;

                case "code":
                default:
                    parent.appendChild((Element)document.importNode(e, true));
                    break;
                }
            }
            else
            {
                parent.appendChild((Element)document.importNode(e, true));
            }
        }
Exemple #2
0
        private void copyNestedElement(Element nested, Element parent)
        {
            if (nested.getNamespaceURI() == null)
            {
                switch (nested.getLocalName())
                {
                case "c":
                case "para":
                case "list":
                case "listheader":
                case "item":
                case "term":
                case "description":
                    parent.appendChild(copyContainer(nested));
                    break;

                case "include":
                    include(nested, parent, true);
                    break;

                case "see":
                    parent.appendChild(copySee(nested));
                    break;

                case "paramref":
                    parent.appendChild(copyParamref(nested));
                    break;

                case "typeparamref":
                    parent.appendChild(copyTypeparamref(nested));
                    break;

                default:
                    parent.appendChild((Element)document.importNode(nested, true));
                    break;
                }
            }
            else
            {
                parent.appendChild((Element)document.importNode(nested, true));
            }
        }
Exemple #3
0
 private void validateTypeparam(Element typeparam)
 {
     if (memberKind == MemberKind.Type)
     {
         var name = typeparam.getAttribute("name");
         if (!type.GenericArguments.any(p => p.FullName.equals(name)))
         {
             context.addWarning(CompileErrorId.InvalidTypeparamNameAttribute, node, name);
         }
     }
     else if (memberKind == MemberKind.Method)
     {
         var name = typeparam.getAttribute("name");
         if (Helper.isNullOrEmpty(name))
         {
             context.addWarning(CompileErrorId.MissingDocAttribute, node, "name", typeparam.getLocalName());
         }
         else if (!method.GenericArguments.any(p => p.FullName.equals(name)))
         {
             context.addWarning(CompileErrorId.InvalidTypeparamNameAttribute, node, name);
         }
     }
     else
     {
         context.addWarning(CompileErrorId.InvalidTypeparamElement, node);
     }
 }
Exemple #4
0
 private void validateParam(Element param)
 {
     if (memberKind != MemberKind.Method && memberKind != MemberKind.Indexer)
     {
         context.addWarning(CompileErrorId.InvalidParamElement, node);
     }
     else
     {
         var name = param.getAttribute("name");
         if (Helper.isNullOrEmpty(name))
         {
             context.addWarning(CompileErrorId.MissingDocAttribute, node, "name", param.getLocalName());
         }
         else if (!method.Parameters.any(p => p.Name.equals(name)))
         {
             context.addWarning(CompileErrorId.InvalidParamNameAttribute, node, name);
         }
     }
 }
Exemple #5
0
        private void replaceCref(Element element, bool exception)
        {
            var cref = element.getAttribute("cref");

            if (Helper.isNullOrEmpty(cref))
            {
                context.addWarning(CompileErrorId.MissingDocAttribute, node, "cref", element.getLocalName());
            }
            else
            {
                if (cref.length() > 1 && cref[1] == ':')
                {
                    return;
                }
                String arguments = null;
                int    idx       = cref.indexOf('(');
                if (idx != -1)
                {
                    arguments = cref.substring(idx);
                    cref      = cref.substring(0, idx);
                }
                idx = cref.indexOf('.');
                String name;
                if (idx == -1)
                {
                    name = cref;
                    cref = null;
                }
                else
                {
                    name = cref.substring(0, idx);
                    cref = cref.substring(idx + 1);
                }
                var members = context.MemberResolver.resolveName(context.CurrentType, name, Query.empty <TypeInfo>()).toList();
                if (!members.any())
                {
                    if (cref == null)
                    {
                        context.addWarning(CompileErrorId.UnresolvedCref, node, element.getAttribute("cref"));
                        element.setAttribute("cref", "!" + element.getAttribute("cref"));
                        return;
                    }
                    var packageName = context.MemberResolver.getPackageFromAlias(name);
                    if (packageName == null)
                    {
                        if (context.MemberResolver.TypeFinder.getSubPackages(name).any() ||
                            context.MemberResolver.TypeFinder.getClasses(name).any())
                        {
                            packageName = name;
                        }
                        else
                        {
                            context.addWarning(CompileErrorId.UnresolvedCref, node, element.getAttribute("cref"));
                            element.setAttribute("cref", "!" + element.getAttribute("cref"));
                            return;
                        }
                    }
                    bool found;
                    do
                    {
                        idx = cref.indexOf('.');
                        if (idx == -1)
                        {
                            name = cref;
                            cref = null;
                        }
                        else
                        {
                            name = cref.substring(0, idx);
                            cref = cref.substring(idx + 1);
                        }
                        found = false;
                        foreach (var s in context.MemberResolver.TypeFinder.getSubPackages(packageName))
                        {
                            if (s.equals(name))
                            {
                                packageName = packageName + '/' + name;
                                found       = true;
                                break;
                            }
                        }
                        if (!found && !context.MemberResolver.TypeFinder.getClasses(packageName).contains(name))
                        {
                            context.addWarning(CompileErrorId.UnresolvedCref, node, element.getAttribute("cref"));
                            element.setAttribute("cref", "!" + element.getAttribute("cref"));
                            return;
                        }
                    } while (cref != null && found);
                    var type = context.TypeSystem.getType(packageName + '/' + name);
                    replaceCref(element, exception, type, cref, arguments);
                }
                else
                {
                    replaceCref(element, exception, members, cref, arguments);
                }
            }
        }
 private void copyNestedElement(Element nested, Element parent) {
     if (nested.getNamespaceURI() == null) {
         switch (nested.getLocalName()) {
         case "c":
         case "para":
         case "list":
         case "listheader":
         case "item":
         case "term":
         case "description":
             parent.appendChild(copyContainer(nested));
             break;
         case "include":
             include(nested, parent, true);
             break;
         case "see":
             parent.appendChild(copySee(nested));
             break;
         case "paramref":
             parent.appendChild(copyParamref(nested));
             break;
         case "typeparamref":
             parent.appendChild(copyTypeparamref(nested));
             break;
         default:
             parent.appendChild((Element)document.importNode(nested, true));
             break;
         }
     } else {
         parent.appendChild((Element)document.importNode(nested, true));
     }
 }
 private void validateTypeparam(Element typeparam) {
     if (memberKind == MemberKind.Type) {
         var name = typeparam.getAttribute("name");
         if (!type.GenericArguments.any(p => p.FullName.equals(name))) {
             context.addWarning(CompileErrorId.InvalidTypeparamNameAttribute, node, name);
         }
     } else if (memberKind == MemberKind.Method) {
         var name = typeparam.getAttribute("name");
         if (Helper.isNullOrEmpty(name)) {
             context.addWarning(CompileErrorId.MissingDocAttribute, node, "name", typeparam.getLocalName());
         } else if (!method.GenericArguments.any(p => p.FullName.equals(name))) {
             context.addWarning(CompileErrorId.InvalidTypeparamNameAttribute, node, name);
         }
     } else {
         context.addWarning(CompileErrorId.InvalidTypeparamElement, node);
     }
 }
 private void validateParam(Element param) {
     if (memberKind != MemberKind.Method && memberKind != MemberKind.Indexer) {
         context.addWarning(CompileErrorId.InvalidParamElement, node);
     } else {
         var name = param.getAttribute("name");
         if (Helper.isNullOrEmpty(name)) {
             context.addWarning(CompileErrorId.MissingDocAttribute, node, "name", param.getLocalName());
         } else if (!method.Parameters.any(p => p.Name.equals(name))) {
             context.addWarning(CompileErrorId.InvalidParamNameAttribute, node, name);
         }
     }
 }
 private void replaceCref(Element element, bool exception) {
     var cref = element.getAttribute("cref");
     if (Helper.isNullOrEmpty(cref)) {
         context.addWarning(CompileErrorId.MissingDocAttribute, node, "cref", element.getLocalName());
     } else {
         if (cref.length() > 1 && cref[1] == ':') {
             return;
         }
         String arguments = null;
         int idx = cref.indexOf('(');
         if (idx != -1) {
             arguments = cref.substring(idx);
             cref = cref.substring(0, idx);
         }
         idx = cref.indexOf('.');
         String name;
         if (idx == -1) {
             name = cref;
             cref = null;
         } else {
             name = cref.substring(0, idx);
             cref = cref.substring(idx + 1);
         }
         var members = context.MemberResolver.resolveName(context.CurrentType, name, Query.empty<TypeInfo>()).toList();
         if (!members.any()) {
             if (cref == null) {
                 context.addWarning(CompileErrorId.UnresolvedCref, node, element.getAttribute("cref"));
                 element.setAttribute("cref", "!" + element.getAttribute("cref"));
                 return;
             }
             var packageName = context.MemberResolver.getPackageFromAlias(name);
             if (packageName == null) {
                 if (context.MemberResolver.TypeFinder.getSubPackages(name).any()
                  || context.MemberResolver.TypeFinder.getClasses(name).any()) {
                     packageName = name;
                 } else {
                     context.addWarning(CompileErrorId.UnresolvedCref, node, element.getAttribute("cref"));
                     element.setAttribute("cref", "!" + element.getAttribute("cref"));
                     return;
                 }
             }
             bool found;
             do {
                 idx = cref.indexOf('.');
                 if (idx == -1) {
                     name = cref;
                     cref = null;
                 } else {
                     name = cref.substring(0, idx);
                     cref = cref.substring(idx + 1);
                 }
                 found = false;
                 foreach (var s in context.MemberResolver.TypeFinder.getSubPackages(packageName)) {
                     if (s.equals(name)) {
                         packageName = packageName + '/' + name;
                         found = true;
                         break;
                     }
                 }
                 if (!found && !context.MemberResolver.TypeFinder.getClasses(packageName).contains(name)) {
                     context.addWarning(CompileErrorId.UnresolvedCref, node, element.getAttribute("cref"));
                     element.setAttribute("cref", "!" + element.getAttribute("cref"));
                     return;
                 }
             } while (cref != null && found);
             var type = context.TypeSystem.getType(packageName + '/' + name);
             replaceCref(element, exception, type, cref, arguments);
         } else {
             replaceCref(element, exception, members, cref, arguments);
         }
     }
 }
 private void copyTopLevelElement(Element e, Element parent) {
     if (e.getNamespaceURI() == null) {
         switch (e.getLocalName()) {
         case "summary":
         case "remarks":
         case "value":
         case "returns":
         case "example":
             parent.appendChild(copyContainer(e));
             break;
         case "include":
             include(e, parent, false);
             break;
         case "exception":
             parent.appendChild(copyException(e));
             break;
         case "param":
             parent.appendChild(copyParam(e));
             break;
         case "typeparam":
             parent.appendChild(copyTypeparam(e));
             break;
         case "seealso":
             parent.appendChild(copySeealso(e));
             break;
         case "code":
         default:
             parent.appendChild((Element)document.importNode(e, true));
             break;
         }
     } else {
         parent.appendChild((Element)document.importNode(e, true));
     }
 }