string-repeater

1.0.3 • Public • Published

Table of Contents

String Repeat

Build Status npm version Coverage Status.

Repeat a string.

Install

npm i string-repeater --save

Usage

var repeat = require('string-repeater')
  , str = repeat('foo ', 7);
// 'foo foo foo foo foo '

Or if you prefer to polyfill String.prototype:

var repeat = require('string-repeater');
String.prototype.repeat = String.prototype.repeat || repeat.impl;

Benchmark

string-repeater x 4,439,603 ops/sec ±2.15% (85 runs sampled)
string-repeat x 60,621 ops/sec ±4.63% (81 runs sampled)
string.prototype.repeat x 4,071,996 ops/sec ±2.14% (84 runs sampled)

Source

"use strict"
 
/**
 *  Repeat a string.
 *
 *  @param input The string to repeat.
 *  @param times The number of times to repeat.
 *
 *  @return A new repeated string.
 */
function repeat(input, times) {
  return impl.call(input, times);
}
 
/**
 *  Prototype implementation called with the string as the scope.
 *
 *  Note that this implementation:
 *
 *  return new Array(Math.abs(times) + 1).join(this);
 *
 *  Is very, very slow.
 *
 *  This implementation:
 *
 *  var ret = '';
 *  for(var i = 0; i < times; i++) {
 *    ret += this;
 *  }
 *  return ret;
 *
 *  Is faster than `string-repeat` but slower than `string.prototype.repeat`.
 *
 *  @param times The number of times to repeat.
 *
 *  @return A new repeated string.
 */
function impl(times) {
  // conditional is faster than Math.abs()
  var n = times < 0 ? -times : times
    , result = ''
    , string = '' + this;
  // optimized loop from string.prototype.repeat
  while(n) {
    if(% 2 === 1) {
      result += string;
    }
    if(> 1) {
      string += string;
    }
    n >>= 1;
  }
  return result;
}
 
repeat.impl = impl;
 
module.exports = repeat;

Developer

Test

To run the test suite:

npm test

Cover

To generate code coverage run:

npm run cover

Lint

Run the source tree through jshint and jscs:

npm run lint

Clean

Remove generated files:

npm run clean

Readme

To build the readme file from the partial definitions:

npm run readme

Generated by mdp(1).

Readme

Keywords

Package Sidebar

Install

npm i string-repeater

Weekly Downloads

11

Version

1.0.3

License

MIT

Last publish

Collaborators

  • muji
  • tmpfs