zoukankan      html  css  js  c++  java
  • 对于NDOC支持中文msdn风格的修改

    公司的一个任务,要整理一些文档。因为以前用过ndoc,所以这次继续用这个。
    compile完了之后,发现了几个问题。
    1、每个type的html中,诸如:class/namespace等,都是E文的,而不是中文的。看起来不爽。
    2、对于任何一个class,都会有object类的一些方法,如:"Equals","Finalize","GetHashCode","GetType","MemberwiseClone","ToString","GetObject"这些方法。我不想让它显示出来。

    然后开始看ndoc的source,跟踪了一会,发现问题1中,在Documenter下面的每个adapter下面的xslt目录下,那些xslt文件包含了这些内容。修改之,重新编译,搞定。
    对于问题2,找到了代码,在MsdnDocumenter.cs中的方法:MakeHtmlForMethods。修改如下:
            private void MakeHtmlForMethods(WhichType whichType, XmlNode typeNode)
            
    {
                XmlNodeList declaredMethodNodes 
    = typeNode.SelectNodes("method[not(@declaringType)]");

                
    if (declaredMethodNodes.Count > 0)
                
    {
                    
    bool bOverloaded = false;
                    
    string fileName;

                    
    string typeName = typeNode.Attributes["name"].Value;
                    
    string typeID = typeNode.Attributes["id"].Value;
                    XmlNodeList methodNodes 
    = typeNode.SelectNodes("method");
                    
    int nNodes = methodNodes.Count;

                    
    int[] indexes = SortNodesByAttribute(methodNodes, "id");

                    fileName 
    = GetFilenameForMethods(whichType, typeNode);
                    htmlHelp.AddFileToContents(
    "Methods", fileName);

                    XsltArgumentList arguments 
    = new XsltArgumentList();
                    arguments.AddParam(
    "id", String.Empty, typeID);
                    arguments.AddParam(
    "member-type", String.Empty, "method");
                    TransformAndWriteResult(xsltIndividualMembers, arguments, fileName);

                    htmlHelp.OpenBookInContents();

                    
    // 鞠强添加的部分
                    string[] skipped = new string[]{"Equals","Finalize","GetHashCode","GetType","MemberwiseClone","ToString","GetObject"};
                    
    // 添加完成

                    
    for (int i = 0; i < nNodes; i++)
                    
    {
                        XmlNode methodNode 
    = methodNodes[indexes[i]];
                        
    string methodName = (string)methodNode.Attributes["name"].Value;
                        
    string methodID = (string)methodNode.Attributes["id"].Value;

                        
    // 鞠强修改:
                        
    // 目的是不显示如下7个Object的方法:
                        
    // Equals
                        
    // Finalize
                        
    // GetHashCode
                        
    // GetType
                        
    // MemberwiseClone
                        
    // ToString
                        
    // GetObject
                        int qq = 0;
                        
    for(qq=0;qq<skipped.Length;qq++)
                        
    {
                            
    // 如果在上述范围之内,就不处理
                            if(methodName == skipped[qq])break;
                        }

                        
    if(qq<skipped.Length)continue;
                        
    // 修改完毕

                        
    if (IsMethodFirstOverload(methodNodes, indexes, i))
                        
    {
                            bOverloaded 
    = true;

                            fileName 
    = GetFilenameForMethodOverloads(typeNode, methodNode);
                            htmlHelp.AddFileToContents(methodName 
    + " Method", fileName);

                            arguments 
    = new XsltArgumentList();
                            arguments.AddParam(
    "member-id", String.Empty, methodID);
                            TransformAndWriteResult(xsltMemberOverload, arguments, fileName);

                            htmlHelp.OpenBookInContents();
                        }


                        
    if (methodNode.Attributes["declaringType"== null)
                        
    {
                            fileName 
    = GetFilenameForMethod(methodNode);

                            
    if (bOverloaded)
                            
    {
                                XmlNodeList parameterNodes 
    = xmlDocumentation.SelectNodes("/ndoc/assembly/module/namespace/" + lowerCaseTypeNames[whichType] + "[@name="" + typeName + ""]/method[@id="" + methodID + ""]/parameter");
                                htmlHelp.AddFileToContents(methodName 
    + " Method " + GetParamList(parameterNodes), fileName,
                                    HtmlHelpIcon.Page );
                            }

                            
    else
                            
    {
                                htmlHelp.AddFileToContents(methodName 
    + " Method", fileName,
                                    HtmlHelpIcon.Page );
                            }


                            XsltArgumentList arguments2 
    = new XsltArgumentList();
                            arguments2.AddParam(
    "member-id", String.Empty, methodID);
                            TransformAndWriteResult(xsltMember, arguments2, fileName);
                        }


                        
    if (bOverloaded && IsMethodLastOverload(methodNodes, indexes, i))
                        
    {
                            bOverloaded 
    = false;
                            htmlHelp.CloseBookInContents();
                        }

                    }


                    htmlHelp.CloseBookInContents();
                }

            }



    不知道,我插入的代码为什么不管用呢?!那7个方法,还是继续显示出来了。。。
  • 相关阅读:
    hdu 1022 Train Problem I 模拟
    Eclipse plugin开发 —实现语法高亮
    一篇英文版的eclipse插件textEditor资料
    (转)Eclipse常用快捷键
    Eclipse plugin开发 —实现单行与多行注释
    Eclipse plugin开发 —实现文本内容帮助
    CSS borderstyle
    ClassLoader getResource
    javascript add table content from xml
    postgres 当前时间
  • 原文地址:https://www.cnblogs.com/juqiang/p/35186.html
Copyright © 2011-2022 走看看