Exemplo n.º 1
0
        /// <summary>
        /// Add a new transformer for visualizing.
        /// </summary>
        /// <param name="transformer"></param>
        public void AddTransformer(CodeTransformer transformer)
        {
            if (fileNames.ContainsKey(transformer))
            {
                return;
            }

            fileNames.Add(transformer, GetFileName(transformer.Transform.Name));
        }
        public MarkdownTransformer()
        {
            var core       = new CoreTransformer();
            var code       = new CodeTransformer(core);
            var acclaim    = new AcclaimTransformer(code);
            var image      = new ImageTransformer(acclaim);
            var gist       = new GistTransformer(image);
            var roiArticle = new ROIArticleTransformer(gist);

            _innerTransformer = roiArticle;
        }
Exemplo n.º 3
0
        public static string GetIdentifiedTest(
            FileInfo testFile, TestInfo info, LanguageSupport support, out string relativePath)
        {
            relativePath = ParaibaPath.GetRelativePath(testFile.FullName, info.BasePath);
            var ast = support.CodeToXml.GenerateFromFile(testFile.FullName);

            // テストケース識別用コードの埋め込み
            CodeTransformer.InsertIntoTestCase(info, ast, support, relativePath);

            // コード生成
            return(support.XmlToCode.Generate(ast));
        }
Exemplo n.º 4
0
        public static string GetCoveragedCode(
            FileInfo codeFile, CoverageInfo info, LanguageSupport support, out string relativePath)
        {
            relativePath = ParaibaPath.GetRelativePath(codeFile.FullName, info.BasePath);
            var ast = support.CodeToXml.GenerateFromFile(codeFile.FullName);

            // 測定用コードの埋め込み
            var path = relativePath;

            CodeTransformer.InstrumentStatementAndPredicate(info, ast, support, path);

            // コード生成
            return(support.XmlToCode.Generate(ast));
        }
Exemplo n.º 5
0
        public ControlInfo(DataRow reader, AssembleInfo info)
        {
            Row  = reader;
            Info = info;
            if (CurrentType == ControlType.PublishingContainer)
            {
                Container = new ContainerInfo(this);
            }

            TargetFolder = GetTargetFolder();
            CodeBehind   = CodeTransformer.Preprocess(Row["CODE_BEHIND"].ToString());
            Presentation = CodeTransformer.Preprocess(Row["FORMAT_BODY"].ToString());

            var code = CodeBehind;

            UserNamespaces = CodeTransformer.CutNamespaceDefinitionsFromCode(ref code);
            CodeBehind     = CodeTransformer.AppendIndent(code);
        }
Exemplo n.º 6
0
        public void Correctly_Convert_Code_Tag()
        {
            var meta = JObject.Parse(
                @"{
                            ""url"": ""/rfc-weekly-17th-October-2016"",
                            ""published"": ""2016-10-17"",
                            ""modified"": ""2016-10-17"",
                            ""title"": ""RFC Weekly - 17th October 2016"",
                            ""enabled"":  ""true""
                        }");
            var markdown = "<p>Line1\n<code>Line2\nLine3\n</code>\nLine4</p>";
            var expected = "<p>Line1\n<pre><code>Line2\nLine3\n</code></pre>\nLine4</p>";

            var uat = new CodeTransformer();

            var result = uat.TransformMarkdown(meta, markdown);

            Assert.Equal(expected, result);
        }
Exemplo n.º 7
0
        public void Encode_Html_Elements_Within_Code_Blocks()
        {
            var meta = JObject.Parse(
                @"{
                            ""url"": ""/rfc-weekly-17th-October-2016"",
                            ""published"": ""2016-10-17"",
                            ""modified"": ""2016-10-17"",
                            ""title"": ""RFC Weekly - 17th October 2016"",
                            ""enabled"":  ""true""
                        }");
            var markdown = "<div></div>\n```\n<div></div>\n```\n<div></div>\n";
            var expected = "<div></div>\n<pre><code>&lt;div&gt;&lt;/div&gt;\n</code></pre>\n<div></div>\n";

            var uat = new CodeTransformer();

            var result = uat.TransformMarkdown(meta, markdown);

            Assert.Equal(expected, result);
        }
Exemplo n.º 8
0
 private void FillAssembleInfo()
 {
     InitPermissionLevels();
     if (Data.Rows.Count > 0)
     {
         Controls    = new ControlSetInfo(this, Controller.IsDbConnected);
         Paths       = new PathInfo(this);
         Security    = new SecurityOptions(this);
         Transformer = new CodeTransformer(this);
         if (Controller.IsDbConnected)
         {
             FillDataTables();
         }
     }
     else
     {
         throw new DataException("Cannot load assemble data");
     }
 }
Exemplo n.º 9
0
        /// <summary>
        /// Parse JavaScript
        /// </summary>
        public JSParserResult Parse(string code, string filename)
        {
            // Get extension
            var ext = Path.GetExtension(filename).ToLower();

            if (ext.StartsWith("."))
            {
                ext = ext.Substring(1);
            }

            code = CodeTransformer.ApplyJSParserSkip(code);

            code = CodeTransformer.FixStringScriptBlocks(code);

            if (_settings.FixAspNetTags && _settings.FixAspNetTagsExtensions.Contains(ext))
            {
                code = CodeTransformer.KillAspNetTags(code);
            }
            if (_settings.FixRazorSyntax && _settings.FixRazorSyntaxExtensions.Contains(ext))
            {
                code = CodeTransformer.FixRazorSyntax(code);
            }

            if (_settings.ScriptStripEnabled && _settings.ScriptStripExtensions.Contains(ext))
            {
                var foundScriptBlocks = CodeTransformer.ExtractJsFromSource(ref code);

                if (!foundScriptBlocks) //empty file
                {
                    return(ParseInternal(string.Empty));
                }
            }

            var result = ParseInternal(code);

            if (_settings.HideAnonymousFunctions)
            {
                NodesPostProcessor.HideAnonymousFunctions(result.Nodes);
            }

            return(result);
        }
Exemplo n.º 10
0
        public void Doesnt_Interpret_Comments_In_Code_As_Markdown()
        {
            var meta = JObject.Parse(
                @"{
                            ""url"": ""/rfc-weekly-17th-October-2016"",
                            ""published"": ""2016-10-17"",
                            ""modified"": ""2016-10-17"",
                            ""title"": ""RFC Weekly - 17th October 2016"",
                            ""enabled"":  ""true""
                        }");
            var markdown = "Line1\n# Line2\n```\n# Line3\n```\nLine4\n";
            var expected = "<p>Line1</p>\n\n<h1>Line2</h1>\n\n<pre><code># Line3\n</code></pre>\n\n<p>Line4</p>";

            // Needs to have the Core Transformer to validate the test
            var uat = new CodeTransformer(new CoreTransformer());

            var result = uat.TransformMarkdown(meta, markdown);

            Assert.Equal(expected, result);
        }
Exemplo n.º 11
0
        public void InsertInstrumentationCode(string fileName)
        {
            var profile = LanguageSupports.GetCoverageModeByClassName("Java");

            CodeInsertTest.InsertInstrumentationCode(profile, fileName);

            var info = new CoverageInfo(
                Fixture.GetCoverageInputPath(), profile.Name, SharingMethod.SharedMemory);
            var inPath   = Path.Combine(Fixture.GetCoverageInputPath(), fileName);
            var codeFile = new FileInfo(inPath);

            var relativePath = ParaibaPath.GetRelativePath(codeFile.FullName, info.BasePath);
            var ast          = profile.CodeToXml.GenerateFromFile(codeFile.FullName);

            File.WriteAllText(Fixture.GetOutputPath(fileName) + ".xml", ast.ToString());

            // 測定用コードの埋め込み
            var path = relativePath;

            CodeTransformer.InstrumentStatementAndPredicate(info, ast, profile, path);

            File.WriteAllText(Fixture.GetOutputPath(fileName) + ".modified.xml", ast.ToString());
        }
Exemplo n.º 12
0
        //if transformer equals null create a file without source code viewer
        private void WriteFile(string path, string fileName, CodeTransformer transformer = null)
        {
            LanguageWriter  languageWriter = new CSharpWriter();
            HtmlWriteHelper htmlWriter     = new HtmlWriteHelper();

            htmlWriter.WriteLine("<!DOCTYPE html>");
            htmlWriter.WriteLine();

            htmlWriter.OpenTag("head");

            //link styles
            htmlWriter.OpenTag("style", "type=\"text/css\"");
            htmlWriter.WriteLine("a:link { text-decoration: none; }");
            htmlWriter.WriteLine("a:visited { text-decoration: none; }");
            htmlWriter.WriteLine("a:active { text-decoration: none; }");
            htmlWriter.WriteLine("a:active { text-decoration: underline; color: red; }");
            htmlWriter.WriteLine("pre { margin: 0px; }");
            htmlWriter.WriteLine("code { margin: 0px; }");
            htmlWriter.CloseTag();
            htmlWriter.CloseTag();

            htmlWriter.OpenTag("body", "style=\"overflow-x: hidden; overflow-y: hidden\"");

            //main grid
            htmlWriter.OpenTag("div", "style=\"display: grid; grid-template-columns: auto auto; grid-column-gap: 10px; justify-content: start\"");

            //file names list
            // "display: grid" makes it expand to fill the vertical space
            htmlWriter.OpenTag("ol", "style=\"grid-column: 1; display: grid; overflow-y: auto;\"");

            int count = 1;

            foreach (var tuple in fileNames)
            {
                htmlWriter.OpenTag("li");
                if (tuple.Key != transformer)
                {
                    htmlWriter.OpenTag("a", $"style=\"link\" href=\"{Path.Combine(Path.GetFullPath(path), tuple.Value)}\"");
                }
                else
                {
                    htmlWriter.OpenTag("a", $"style=\"color: red\" href=\"{Path.Combine(Path.GetFullPath(path), tuple.Value)}\"");
                }
                htmlWriter.WriteLine(tuple.Key.GetFriendlyName());
                htmlWriter.CloseTag();
                htmlWriter.CloseTag();

                count++;
            }
            htmlWriter.CloseTag();
            htmlWriter.WriteLine();

            //code viewer
            // height is 99vh to make room for the scrollbar
            htmlWriter.OpenTag("div", "class=\"container\" style=\"grid-column: 2; display: grid; overflow: auto; max-height: 99vh; max-width: 100vw\"");

            //write source code
            if (transformer != null)
            {
                htmlWriter.OpenTag("pre");
                htmlWriter.OpenTag("code", "class=\"language-csharp\"");

                if (transformer.Transform.Context.Results.ErrorCount > 0)
                {
                    foreach (var error in transformer.Transform.Context.Results.ErrorsAndWarnings)
                    {
                        foreach (var line in StringUtil.Lines(error.ToString()))
                        {
                            htmlWriter.Append("// ");
                            htmlWriter.Append(ToHtmlContent(line));
                            htmlWriter.Append(Environment.NewLine);
                        }
                        htmlWriter.Append(Environment.NewLine);
                    }
                }

                foreach (ITypeDeclaration itd in transformer.transformMap.Values)
                {
                    using (var writer = new StringWriter())
                    {
                        SourceNode node = languageWriter.GeneratePartialSource(itd);
                        LanguageWriter.WriteSourceNode(writer, node);
                        string code = ToHtmlContent(writer.ToString().Trim());
                        htmlWriter.Append(code);
                    }
                }

                htmlWriter.CloseTag();
                htmlWriter.CloseTag();
                htmlWriter.CloseTag();
                htmlWriter.CloseTag();

                //highlighting
                htmlWriter.OpenTag("link", "rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/vs2015.min.css\"", true);
                htmlWriter.OpenTag("script", "src=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js\"", true);
                htmlWriter.OpenTag("script");
                htmlWriter.WriteLine("hljs.initHighlightingOnLoad();");
            }
            else
            {
                htmlWriter.CloseTag();
            }

            htmlWriter.CloseTag();
            htmlWriter.CloseTag();

            htmlWriter.SaveToFile(Path.Combine(path, fileName));
        }
Exemplo n.º 13
0
 /// <summary>
 /// Creates a code transformer instance based on its Id.
 /// </summary>
 /// <param name="algo">Transformer Id.</param>
 /// <returns>Created code transformer instance.</returns>
 /// <exception cref="ArgumentException">Unrecognized value specified for <paramref name="algo"/>.</exception>
 public static ICodeTransformer FromId(CodeTransformer algo)
 => algo switch
 {