/// <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; }
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)); }
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)); }
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); }
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); }
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><div></div>\n</code></pre>\n<div></div>\n"; var uat = new CodeTransformer(); var result = uat.TransformMarkdown(meta, markdown); Assert.Equal(expected, result); }
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"); } }
/// <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); }
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); }
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()); }
//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)); }
/// <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 {