| 'use strict'; |
| |
| var GetIntrinsic = require('get-intrinsic'); |
| var callBound = require('call-bind/callBound'); |
| |
| var $fromCharCode = GetIntrinsic('%String.fromCharCode%'); |
| var $TypeError = GetIntrinsic('%TypeError%'); |
| var $charCodeAt = callBound('%String.prototype.charCodeAt%'); |
| var $push = callBound('%Array.prototype.push%'); |
| |
| module.exports = function CharacterRange(A, B) { |
| if (A.length !== 1 || B.length !== 1) { |
| throw new $TypeError('Assertion failed: CharSets A and B contain exactly one character'); |
| } |
| |
| var a = A[0]; |
| var b = B[0]; |
| |
| var i = $charCodeAt(a, 0); |
| var j = $charCodeAt(b, 0); |
| |
| if (!(i <= j)) { |
| throw new $TypeError('Assertion failed: i is not <= j'); |
| } |
| |
| var arr = []; |
| for (var k = i; k <= j; k += 1) { |
| $push(arr, $fromCharCode(k)); |
| } |
| return arr; |
| }; |