private static string GetObjectTypeIcon(DiffTreeNode node) { switch (node.NodeType) { case NodeType.File: return("<i class=\"fas fa-file\" style=\"color: #909292;\"></i>"); case NodeType.Directory: return("<i class=\"fas fa-folder-open\" style=\"color: #D8AC6A;\"></i>"); case NodeType.Message: return("<i class=\"fas fa-comment\" style=\"color: #909292;\"></i>"); case NodeType.Namespace: return("<i class=\"fas fa-code\" style=\"color: #909292;\"></i>"); case NodeType.Class: return("<i class=\"fas fa-project-diagram\" style=\"color: #F8D96E;\"></i>"); case NodeType.Method: return("<i class=\"fas fa-cube\" style=\"color: #6C4A86;\"></i>"); case NodeType.Property: return("<i class=\"fas fa-wrench\" style=\"color: #909292;\"></i>"); case NodeType.Field: return("<i class=\"fas fa-inbox\" style=\"color: #4478A6;\"></i>"); case NodeType.CSharp: return(null); default: throw new ArgumentOutOfRangeException(); } }
public void Expand(DiffTreeNode node) { var leftTree = GetSemanticTree(node.LeftFullPath); var rightTree = GetSemanticTree(node.RightFullPath); node.ChildNodes = BuildCSharpTree(leftTree, rightTree).ToList(); }
public void BuildReport(DiffTreeNode root, string filename) { var doc = new HtmlDocument(); var htmlNode = doc.DocumentNode.AppendChild(HtmlNode.CreateNode("<html>")); var headNode = htmlNode.AppendChild(HtmlNode.CreateNode("<head>")); headNode.AppendChild(HtmlNode.CreateNode( "<link rel=\"stylesheet\" href=\"https://use.fontawesome.com/releases/v5.1.1/css/all.css\" integrity=\"sha384-O8whS3fhG2OnA5Kas0Y9l3cfpmYjapjI0E4theH4iuMD+pLhbf6JI0jIMfYcK3yZ\" crossorigin=\"anonymous\">")); var bodyNode = htmlNode.AppendChild(HtmlNode.CreateNode("<body style=\"font-family: Courier New,Courier,Lucida Sans Typewriter,Lucida Typewriter,monospace;\">")); AddNodesToHtmlDoc(new [] { root }, bodyNode); doc.Save(File.Open(filename, FileMode.Create)); }
private static void BuildReportForFolderPair(string leftFolder, string rightFolder) { var diffTreeBuilder = CreateDiffTreeBuilder(); var root = new DiffTreeNode(".", leftFolder, rightFolder, NodeType.Directory); diffTreeBuilder.BuildTree(root); var filename = rightFolder + ".html"; var reportBuilder = new ReportBuilder() { ShowAll = CmdLnOptions.ShowAll }; reportBuilder.BuildReport(root, filename); Console.WriteLine("Created " + filename); }
private void AddFileNodes(string leftFolder, string rightFolder, List <DiffTreeNode> nodes) { var leftFileList = leftFolder != null?GetFiles(leftFolder) : new List <string>(); var rightFileList = rightFolder != null?GetFiles(rightFolder) : new List <string>(); var changes = OrderedListComparer.Compare(leftFileList, rightFileList, (left, right) => string.Compare(left, right, StringComparison.InvariantCultureIgnoreCase)); foreach (var change in changes) { var node = new DiffTreeNode(change.LeftItem ?? change.RightItem, leftFolder, rightFolder, NodeType.File) { ChangeType = change.ChangeType }; nodes.Add(node); } }
private void ExpandNode(DiffTreeNode node) { var expander = _expanders.FirstOrDefault(e => e.CanExpand(node)); if (expander == null) { return; } try { expander.Expand(node); } catch (Exception e) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine($"{expander.GetType().Name} returned an error while expanding:"); Console.WriteLine($" Item: {node.Name}"); Console.WriteLine($" LeftParent: {node.LeftParent}"); Console.WriteLine($" RightParent: {node.RightParent}"); Console.WriteLine($" {e.Message}"); Console.ForegroundColor = ConsoleColor.White; node.ChildNodes = new List <DiffTreeNode> { new DiffTreeNode($"#err#{expander.GetType().Name}#{e.Message}#", null, null, NodeType.Message) }; } if (!expander.IsLeafExpander) { foreach (var childNode in node.ChildNodes) { ExpandNode(childNode); } } if (node.ChangeType == ChangeType.Unmodified && node.ChildNodes.Any(cn => cn.ChangeType != ChangeType.Unmodified)) { node.ChangeType = ChangeType.Modified; } }
/// <summary> /// Builds the tree by recursibely expanding your rootnode into childnodes using expanders on each new node. /// The first matching expander is executed per node. /// </summary> public void BuildTree(DiffTreeNode rootNode) { ExpandNode(rootNode); }
public bool CanExpand(DiffTreeNode node) { return(node.NodeType == NodeType.File && Path.GetExtension(node.Name) == FileExtension); }
public void Expand(DiffTreeNode node) { node.ChangeType = FileUtils.FileContentsAreEqual(node.LeftFullPath, node.RightFullPath) ? ChangeType.Unmodified : ChangeType.Modified; }
public bool CanExpand(DiffTreeNode node) { return(node.NodeType == NodeType.File); }
public void Expand(DiffTreeNode node) { node.ChildNodes = GetNodesForFolderPair(Path.Combine(node.LeftParent, node.Name ?? ""), Path.Combine(node.RightParent, node.Name ?? "")); }
public bool CanExpand(DiffTreeNode node) { return(node.NodeType == NodeType.Directory); }