@putout/compare
Advanced tools
Comparing version
@@ -111,9 +111,21 @@ 'use strict'; | ||
const [node, base] = item; | ||
const is = superCompare(node, base, { | ||
add, | ||
templateStore, | ||
}); | ||
if (!is) | ||
if (!node) | ||
return false; | ||
for (const key of Object.keys(base)) { | ||
if (ignore.includes(key)) | ||
continue; | ||
const nodeValue = node[key]; | ||
const value = extractExpression(base[key]); | ||
const is = superCompare(nodeValue, value, { | ||
add, | ||
templateStore, | ||
}); | ||
if (!is) | ||
return false; | ||
} | ||
} | ||
@@ -124,66 +136,52 @@ | ||
function superCompare(node, base, {add, templateStore}) { | ||
if (!node) | ||
return false; | ||
function superCompare(nodeValue, value, {add, templateStore}) { | ||
log(value, nodeValue); | ||
for (const key of Object.keys(base)) { | ||
if (ignore.includes(key)) | ||
continue; | ||
if (value == '__') | ||
return true; | ||
if (value === nodeValue) | ||
return true; | ||
if (isClassBody(value) || isBlock(value)) | ||
return true; | ||
if (isAny(value)) | ||
return true; | ||
if (isEqualAnyArray(nodeValue, value)) | ||
return true; | ||
if (isEqualAnyObject(nodeValue, value)) | ||
return true; | ||
if (isLinkedNode(value)) { | ||
const {name} = value; | ||
const nodeValue = node[key]; | ||
const value = extractExpression(base[key]); | ||
log(value, nodeValue); | ||
if (value == '__') | ||
continue; | ||
if (value === nodeValue) | ||
continue; | ||
if (isClassBody(value) || isBlock(value)) | ||
continue; | ||
if (isAny(value)) | ||
continue; | ||
if (isEqualAnyArray(nodeValue, value)) | ||
continue; | ||
if (isEqualAnyObject(nodeValue, value)) | ||
continue; | ||
if (isLinkedNode(value)) { | ||
const {name} = value; | ||
if (!templateStore[name]) { | ||
templateStore[name] = nodeValue; | ||
continue; | ||
} | ||
add(templateStore[name], nodeValue); | ||
continue; | ||
if (!templateStore[name]) { | ||
templateStore[name] = nodeValue; | ||
return true; | ||
} | ||
if (isAnyLiteral(nodeValue, value)) | ||
continue; | ||
if (isObject(value)) { | ||
add(nodeValue, value); | ||
continue; | ||
} | ||
if (isAnyArgs(value)) | ||
continue; | ||
if (isArrays(value, nodeValue)) { | ||
add(nodeValue, value); | ||
continue; | ||
} | ||
return false; | ||
add(templateStore[name], nodeValue); | ||
return true; | ||
} | ||
return true; | ||
if (isAnyLiteral(nodeValue, value)) | ||
return true; | ||
if (isAnyArgs(value)) | ||
return true; | ||
if (isObject(value)) { | ||
add(nodeValue, value); | ||
return true; | ||
} | ||
if (isArrays(value, nodeValue)) { | ||
add(nodeValue, value); | ||
return true; | ||
} | ||
return false; | ||
} | ||
{ | ||
"name": "@putout/compare", | ||
"version": "3.3.0", | ||
"version": "3.3.1", | ||
"author": "coderaiser <mnemonic.enemy@gmail.com> (https://github.com/coderaiser)", | ||
@@ -5,0 +5,0 @@ "description": "compare ast-nodes", |
11145
-0.8%235
-0.42%