Sha256: 51ae8fd0e3e3c4639f8da7e6fe6c93494d6d9a5a547de98b966831f545aaac85

Contents?: true

Size: 993 Bytes

Versions: 27

Compression:

Stored size: 993 Bytes

Contents

'use strict';

var GetIntrinsic = require('get-intrinsic');

var CodePointAt = require('./CodePointAt');
var Type = require('./Type');

var isInteger = require('../helpers/isInteger');
var MAX_SAFE_INTEGER = require('../helpers/maxSafeInteger');

var $TypeError = GetIntrinsic('%TypeError%');

// https://262.ecma-international.org/11.0/#sec-advancestringindex

module.exports = function AdvanceStringIndex(S, index, unicode) {
	if (Type(S) !== 'String') {
		throw new $TypeError('Assertion failed: `S` must be a String');
	}
	if (!isInteger(index) || index < 0 || index > MAX_SAFE_INTEGER) {
		throw new $TypeError('Assertion failed: `length` must be an integer >= 0 and <= 2**53');
	}
	if (Type(unicode) !== 'Boolean') {
		throw new $TypeError('Assertion failed: `unicode` must be a Boolean');
	}
	if (!unicode) {
		return index + 1;
	}
	var length = S.length;
	if ((index + 1) >= length) {
		return index + 1;
	}
	var cp = CodePointAt(S, index);
	return index + cp['[[CodeUnitCount]]'];
};

Version data entries

27 entries across 27 versions & 2 rubygems

Version Path
immosquare-cleaner-0.1.32 node_modules/es-abstract/2020/AdvanceStringIndex.js
immosquare-cleaner-0.1.31 node_modules/es-abstract/2020/AdvanceStringIndex.js
immosquare-cleaner-0.1.30 node_modules/es-abstract/2020/AdvanceStringIndex.js
immosquare-cleaner-0.1.29 node_modules/es-abstract/2020/AdvanceStringIndex.js
immosquare-cleaner-0.1.28 node_modules/es-abstract/2020/AdvanceStringIndex.js
immosquare-cleaner-0.1.27 node_modules/es-abstract/2020/AdvanceStringIndex.js
immosquare-cleaner-0.1.26 node_modules/es-abstract/2020/AdvanceStringIndex.js
immosquare-cleaner-0.1.25 node_modules/es-abstract/2020/AdvanceStringIndex.js
immosquare-cleaner-0.1.24 node_modules/es-abstract/2020/AdvanceStringIndex.js
immosquare-cleaner-0.1.23 node_modules/es-abstract/2020/AdvanceStringIndex.js
immosquare-cleaner-0.1.22 node_modules/es-abstract/2020/AdvanceStringIndex.js
immosquare-cleaner-0.1.21 node_modules/es-abstract/2020/AdvanceStringIndex.js
immosquare-cleaner-0.1.20 node_modules/es-abstract/2020/AdvanceStringIndex.js
immosquare-cleaner-0.1.19 node_modules/es-abstract/2020/AdvanceStringIndex.js
immosquare-cleaner-0.1.18 node_modules/es-abstract/2020/AdvanceStringIndex.js
immosquare-cleaner-0.1.17 node_modules/es-abstract/2020/AdvanceStringIndex.js
immosquare-cleaner-0.1.16 node_modules/es-abstract/2020/AdvanceStringIndex.js
immosquare-cleaner-0.1.14 node_modules/es-abstract/2020/AdvanceStringIndex.js
immosquare-cleaner-0.1.13 node_modules/es-abstract/2020/AdvanceStringIndex.js
immosquare-cleaner-0.1.12 node_modules/es-abstract/2020/AdvanceStringIndex.js