Skip to content
A robust & optimized ES3-compatible polyfill for the `String.prototype.at` proposal for ECMAScript - based on https://mths.be/at
JavaScript Makefile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
test
.eslintrc
.gitignore
.npmrc
.travis.yml
CHANGELOG.md
LICENSE
Makefile
README.md
auto.js
index.js
package.json

README.md

string-at Version Badge

Build Status dependency status dev dependency status License Downloads

npm badge

browser support

A robust & optimized ES3-compatible polyfill for the String.prototype.at proposal for ECMAScript 6/7.

This code is almost entirely copied from @mathiasbynens's excellent polyfill at https://mths.be/at - I created this one so that it did not automatically modify String.prototype, and so that it would fit in more neatly with the es7-shim.

Use it as a standalone function, or call its shim method to install it as a polyfill.

Example

var at = require('string-at');
var assert = require('assert');

var surrogatePair = '\uD834\uDF06 abc'; // a surrogate pair
assert(surrogatePair.length === 6);
assert(at(surrogatePair, 0) === '\uD834\uDF06');
assert(at(surrogatePair, 1) === '\uDF06');

var i = 0;
var str = '';
while (str.length < surrogatePair.length) {
	str += at(surrogatePair, str.length);
	i += 1;
}
assert(str === surrogatePair);
assert(i === 4); // 4 code points
assert(str.length === 6); // 6 "characters"

at.shim();
assert(surrogatePair.at(0) === at(surrogatePair, 0));

Tests

Simply clone the repo, npm install, and run npm test

You can’t perform that action at this time.