コード例 #1
0
            static TypeInfo[] SplitParameter(string parameterText)
            {
                for (int i = 0; i < ParameterLoopLimit; i++)
                {
                    var splitReg   = new Regex("(?<parameter>\\{(.*)\\}),|(?<parameter>\\{(.*)\\})");
                    var splitMatch = splitReg.Match(parameterText);
                    while (splitMatch.Success)
                    {
                        var full         = splitMatch.Groups["parameter"].ToString();
                        var replacedText = parameterText.Replace(full, "~{0}~".FormatString(Convert.ToBase64String(Encoding.UTF8.GetBytes(full))));
                        parameterText = replacedText;

                        splitMatch = splitMatch.NextMatch();
                    }
                }

                if (string.IsNullOrEmpty(parameterText))
                {
                    return(new TypeInfo[0]);
                }
                else
                {
                    var splits = parameterText.Split(',');
                    var list   = new List <TypeInfo>();
                    for (int i = 0; i < splits.Length; i++)
                    {
                        var systemType = MethodParameter.MethodParameterConverter.ResolveIdToGenericsType(ResolveSplitParameter(splits[i]));
                        var fullName   = MethodParameter.MethodParameterConverter.ResolveSystemType(systemType);
                        var paramInfo  = CSharpEasyAnalyzer.CreateParameterInfo(fullName);
                        list.Add(paramInfo);
                    }

                    return(list.ToArray());
                }
            }
        public void AddAttributesToElementTest()
        {
            var exp = CreateExceptedElement();

            var element  = CsXmlDocumentParser.ParseMultiFiles(new string[] { "TestData/TestXmlDoc1.xml" });
            var csParser = new CSharpEasyAnalyzer();

            csParser.Parse("TestData/Test");
            csParser.AddAttributesToElement(element);

            Assert.AreEqual(exp, element);
        }
コード例 #3
0
        /// <summary>
        /// Entry point.
        /// </summary>
        /// <param name="args"></param>
        public static void Main(string[] args)
        {
            var envParser = new Parser.EnvArgumentParser();

            envParser.AddOptionCount("-h", 0);
            envParser.AddOptionCount("-b", 1);
            envParser.AddOptionCount("-o", 1);
            envParser.AddOptionCount("-s", 1);
            envParser.AddOptionCount("-t", 1);
            envParser.AddOptionCount("-i", 1);

            envParser.Analyze(args);
            if (envParser.GetOption("-h") != null)
            {
                ShowHelp();
                return;
            }

            var type            = ProjectTypeConverter.ToProjectType(envParser.GetOption("-t") ?? "Classic");
            var baseTemplateDir = envParser.GetOption("-b") ?? "BaseTemplate";
            var sourceFilesDir  = envParser.GetOption("-s") ?? "src"; // XmlDocumentExtensions.xml  XmlDocumentParser.xml XmlDocumentToHtml.xml
            var inputFiles      = envParser.GetValues();              // GetXmlFiles(sourceFilesDir); // envParser.GetValues();

            if (inputFiles.Length < 1)
            {
                inputFiles = GetXmlFiles(sourceFilesDir);
            }
            var outputPath = envParser.GetOutputFilepath() ?? PathUtils.UnifiedPathSeparator("{0}/Root".FormatString(CommonCoreLib.AppInfo.GetAppPath()));

            var ignorePathText = envParser.GetOption("-i");
            var ignorePathList = new List <string>();

            if (ignorePathText != null)
            {
                var lines = ignorePathText.Split(' ');
                foreach (var line in lines)
                {
                    if (!string.IsNullOrWhiteSpace(line))
                    {
                        ignorePathList.Add(line);
                    }
                }
            }

            var(singleDirectoryName, directoryName) = GetSingleDirectoryNameAndDirectoryName(outputPath);

            var csprojAnalyzer = new ClassicCsprojAnalyzer(sourceFilesDir)
            {
                IgnoreProjectNames = ignorePathList
            };
            Element root;

            if (inputFiles.Length < 1)
            {
                var generator   = new CSharpDocumentGenerator(csprojAnalyzer);
                var xmlDocument = generator.ToString();

                root = CsXmlDocumentParser.ParseFromText(
                    xmlDocument: xmlDocument,
                    rootName: singleDirectoryName,
                    parseProgressEventHandler: XmlParser_ParserProgress,
                    completed: XmlParser_CodeAnalysisCompleted,
                    startAct: (name) => Console.WriteLine("Start XmlParse {0}", name)
                    );
            }
            else
            {
                root = CsXmlDocumentParser.ParseMultiFiles(
                    files: inputFiles,
                    rootName: singleDirectoryName,
                    parseProgressEventHandler: XmlParser_ParserProgress,
                    completed: XmlParser_CodeAnalysisCompleted,
                    startAct: (name) => Console.WriteLine("Start XmlParse {0}", name)
                    );
            }

            var parser = new CSharpEasyAnalyzer();

            parser.CodeAnalysisCompleted += Parser_CodeAnalysisCompleted;
            parser.AnalysisProgress      += Parser_AnalysisProgress;

            Console.WriteLine("Start C# code analysis.");
            parser.Parse(csprojAnalyzer);
            parser.AddAttributesToElement(root);

            var converter = new CsXmlToHtmlWriter(root)
            {
                TemplateDir = baseTemplateDir
            };

            converter.WriteToDisk(directoryName);
        }