@awayfl/avm2
Version:
Virtual machine for executing AS3 code
31 lines (30 loc) • 960 B
JavaScript
import { release } from '@awayfl/swf-loader';
import { assert } from '@awayjs/graphics';
export function axCompareFields(objA, objB, names, optionsList) {
release || assert(names.length === optionsList.length);
release || assert(names.length > 0);
var result = 0;
var i;
for (i = 0; i < names.length && result === 0; i++) {
var name_1 = names[i];
var a = objA[name_1];
var b = objB[name_1];
var options = optionsList[i];
if (options & 1 /* SORT.CASEINSENSITIVE */) {
a = String(a).toLowerCase();
b = String(b).toLowerCase();
}
if (options & 16 /* SORT.NUMERIC */) {
a = +a;
b = +b;
result = a < b ? -1 : (a > b ? 1 : 0);
}
else {
result = String(a).localeCompare(String(b));
}
}
if (optionsList[i - 1] & 2 /* SORT.DESCENDING */) {
result *= -1;
}
return result;
}