| 'use strict' | |
| const numeric = /^[0-9]+$/ | |
| const compareIdentifiers = (a, b) => { | |
| if (typeof a === 'number' && typeof b === 'number') { | |
| return a === b ? 0 : a < b ? -1 : 1 | |
| } | |
| const anum = numeric.test(a) | |
| const bnum = numeric.test(b) | |
| if (anum && bnum) { | |
| a = +a | |
| b = +b | |
| } | |
| return a === b ? 0 | |
| : (anum && !bnum) ? -1 | |
| : (bnum && !anum) ? 1 | |
| : a < b ? -1 | |
| : 1 | |
| } | |
| const rcompareIdentifiers = (a, b) => compareIdentifiers(b, a) | |
| module.exports = { | |
| compareIdentifiers, | |
| rcompareIdentifiers, | |
| } |