Skip to content

A JavaScript utility library for modifying strings and getting information about strings.

Notifications You must be signed in to change notification settings

SeanJM/lasso-string

Repository files navigation

Circle CI

Lasso

An interface for editing strings

Methods

.between

lasso.between('(', ')', 'This) is (between)');
// -> {
        start : 9,
        end : 17,
        length : 7,
        value : 'between'
      }
lasso.between(/[a-z]+\(/, ')', 'This) is function(between)');
// -> {
        start : 18,
        end : 25,
        length : 16,
        value : 'between'
      }

.camelCase

lasso.camelCase('Let\'s JavaScript case this thing');
// -> letsJavascriptCaseThisThing

.capitalCase

lasso.capitalCase('let\'s CapitalCase this thing');
// -> Let's CapitalCase This Thing

.differentWords

lasso.differentWords('a b c d', 'a d f b');
// -> ['c', 'f']

.distance

Calculates the Levenshtein distance between two words.

Based on this implementation by Andrei Mackenzie

lasso.distance('This distance', 'That distant');
// -> 4

.ellipsis

lasso.ellipsis(String, Limit)

Adds '...' at the end of a string if it exceeds the length of the second argument

lasso.ellipsis('This distance', 5);
// -> This...

.fuzzy

Returns an object of character positions in a fuzzy search.

  var match = lasso.fuzzy('this is being searched', 'tbs');
  // -> [{"index":0,"length":1,"match":"t"},{"index":8,"length":1,"match":"b"},{"index":14,"length":1,"match":"s"}]

Fuzzy search properties

  • .distance is the distance between the first and last match
  • .closest is the index of the closest match
  • .farthest is the index of the farthest match
  • .difference is the difference between the closest and farthest match
  var match = lasso.fuzzy('this is being searched', 'tbs');
  // match.distance -> 14
  // match.closest -> 6
  // match.farthest -> 7
  // match.difference -> 1

.group

lasso.group(Number)

Groups numbers together using a comma

lasso.group(1000.49);
// -> 1,000.49

.indexesOf

lasso.indexesOf('Check out where the indexes of \'e\' are', 'e');
// -> [{ index : 3, length : 1, match : 'e'}, { index : 5, length : 1, match : 'e'}, { ... }]

Also works with a regular expression

lasso.indexesOf('Check out where the indexes of \'e\' are', /e/);

Match Type

Works a bit like a regular expression match in that in returns the string split up by character group types, alpha with alpha, numbers with numbers, punctuation with punctuation, etc.

  var match = lasso.matchType('test10.scss');
  // -> ['test', '10', '.', 'scss'];

.sameWords

lasso.sameWords('a b c', 'a');
// -> ['a']

.splice

lasso.splice('string', 1, 0, 'INSERT');
// -> sINSERTtring

.template

lasso.template('Use %s to template a string', 'Rope');
// -> Use Rope to template a string

You can also reference indexes:

lasso.template('indexed %0', 'values');
// -> indexed values

.toChar

lasso.toCharCode(82);
// -> R

lasso.toCharCode([82, 111, 112, 101]);
// -> Rope

.toCharCode

lasso.toCharCode('s');
// -> [115]

lasso.toCharCode('Rope');
// -> [82, 111, 112, 101]

.toCurrency

lasso.toCurrency(1000.49);
// -> $1,000.49

You can use a custom prefix, by including as the first argument

lasso.toCurrency('¢', 1000.49);
// -> ¢1,000.49

.toPercentage

lasso.toPercentage(10);
// -> 10%

Trim End

var match = lasso.trimEnd('Love   ');
// -> 'Love'

Trim Start

  var match = lasso.trimStart('   Love');
  // -> 'Love'

Trim Start Until

  var match = lasso.trimStartUntil('Love this', 't');
  // -> 'this'
  var match = lasso.trimStartUntil('Love this', /t/);
  // -> 'this'

Chain methods together

lasso('What is %0?')
.template('Rope')
.splice(1, 0, 'SPLICE')
.value;
// -> WSPLICEhat is Rope?

Including the module with Node JS (CommonJS)

var lasso = require('lasso');

About

A JavaScript utility library for modifying strings and getting information about strings.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published