Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(16)

Unified Diff: third_party/WebKit/LayoutTests/inspector/sass/sass-test.js

Issue 1504923008: DevTools: [SASS] implement AST differ. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@sass-module-2
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/LayoutTests/inspector/sass/sass-test.js
diff --git a/third_party/WebKit/LayoutTests/inspector/sass/sass-test.js b/third_party/WebKit/LayoutTests/inspector/sass/sass-test.js
index 0ed17d0a5a471eca64e699088d45d8e204df1795..0470676b2f43ad1465c51d447d3135c12ffd1ef2 100644
--- a/third_party/WebKit/LayoutTests/inspector/sass/sass-test.js
+++ b/third_party/WebKit/LayoutTests/inspector/sass/sass-test.js
@@ -44,9 +44,68 @@ InspectorTest.dumpAST = function(ast)
return [String.sprintf("range: %s", textNode.range.toString())];
}
- function indent(lines)
+}
+
+function indent(lines)
+{
+ return lines.map(line => " " + line);
+}
+
+InspectorTest.dumpASTDiff = function(diff)
+{
+ InspectorTest.addResult("=== Diff ===");
+ var changesPerRule = new Map();
+ for (var change of diff.changes) {
+ var oldRule = change.oldRule;
+ var ruleChanges = changesPerRule.get(oldRule);
+ if (!ruleChanges) {
+ ruleChanges = [];
+ changesPerRule.set(oldRule, ruleChanges);
+ }
+ ruleChanges.push(change);
+ }
+ var T = WebInspector.SASSSupport.PropertyChangeType;
+ for (var rule of changesPerRule.keys()) {
+ var changes = changesPerRule.get(rule);
+ var names = [];
+ var values = [];
+ for (var property of rule.properties) {
+ names.push(str(property.name, " "));
+ values.push(str(property.value));
+ }
+ for (var i = changes.length - 1; i >= 0; --i) {
+ var change = changes[i];
+ var newProperty = change.newRule.properties[change.newPropertyIndex];
+ var oldProperty = change.oldRule.properties[change.oldPropertyIndex];
+ switch (change.type) {
+ case T.PropertyAdded:
+ names.splice(change.oldPropertyIndex, 0, str(newProperty.name, "[+] "));
+ values.splice(change.oldPropertyIndex, 0, str(newProperty.value));
+ break;
+ case T.PropertyRemoved:
+ names[change.oldPropertyIndex] = str(oldProperty.name, "[-] ");
+ break;
+ case T.PropertyToggled:
+ names[change.oldPropertyIndex] = str(oldProperty.name, "[T] ");
+ break;
+ case T.NameChanged:
+ names[change.oldPropertyIndex] = str(oldProperty.name, "[M] ");
+ break;
+ case T.ValueChanged:
+ values[change.oldPropertyIndex] = str(oldProperty.value, "[M] ");
+ break;
+ }
+ }
+ InspectorTest.addResult("Changes for rule: " + rule.selector);
+ names = indent(names);
+ for (var i = 0; i < names.length; ++i)
+ InspectorTest.addResult(names[i] + ": " + values[i]);
+ }
+
+ function str(node, prefix)
{
- return lines.map(line => " " + line);
+ prefix = prefix || "";
+ return prefix + node.text.trim();
}
}

Powered by Google App Engine
This is Rietveld 408576698