Skip to content

💯 Zero dependency unicode-aware string tools for NodeJS

License

Notifications You must be signed in to change notification settings

amirbakhtiari/stringz

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Stringz Build Status codecov

A really small, zero-dependency, unicode-aware library for working with Strings in Node.js.

Javascript has a serious problem with unicode. Even ES6 can’t solve the problem entirely since some characters like the new colored emojis are three bytes instead of two bytes. Sometimes even more! "👍🏽".length returns 4 which is totally wrong (hint: it should be 1!). ES6's Array.from tried to solve this, but that even fails: Array.from("👍🏽") returns ["👍", "🏽"] which is incorrect. This library tries to tackle all these problems with a mega RegExp. Read More Here.

🎈 Based on a RegExp copied from the Lodash library.

Features

  • Limit string to width (truncate/pad)
  • Unicode-aware string length
  • Unicode-aware substring

🔥 Please note that this library is built for accuracy, not performance. It uses complex regular expressions to calculate the string length and perform other operations which are not particularly super-jawdropping-fast like the native String.prototype.length.

Install

$ npm install stringz --save

And import it in your awesome node app:

// ES2015+
import * as stringz from 'stringz'; // OR:
import { limit, substring, length } from 'stringz';

// CommonJS
var stringz = require('stringz');
// use like: stringz.limit ...

Usage

Limit String to Width

function limit(str[, limit[, padStr[, padPosition]]])
Param Type Default Description
str String none The string to be limited
limit Number 16 Desired string length
padStr String "#" Character to pad the output with
padPosition String "right" Pad position: "right" or "left"

Examples

// Truncate:
limit("Life’s like a box of chocolates.", 20); // "Life's like a box of"

// Pad:
limit("Make emojis great again", 26, "💩"); // "Make emojis great again💩💩💩"
limit("What are you looking at?", 30, "+", "left"); // "++++++What are you looking at?"

// Unicode Aware:
limit("🤔🤔🤔", 2); // "🤔🤔"
limit("👍🏽👍🏽", 4, "👍🏽"); // "👍🏽👍🏽👍🏽👍🏽" 

String Length

function length(str)
Param Type Default Description
str String none String to return the length for

Examples

length("Iñtërnâtiônàlizætiøn☃💩"); // 22

Substring

function substring(str, start[, end])
Param Type Default Description
str String none String to be devided
start Number none Start position
end Number End of string End position

Examples

substring("Emojis 👍🏽 are 🍆 poison. 🌮s are bad.", 7, 14); // "👍🏽 are 🍆"

Test

$ npm test

Changelog

Version Date Notes
0.1.1 2016-07-31 More strict type checking, more tests
0.1.0 2016-07-29 Renamed to Stringz, more tools
0.0.10 2016-07-29 Fixed substring issue
0.0.9 2016-07-28 Fixed unicode string length issue
0.0.8 2016-07-26 First usable release

License

This software is released under the MIT License.

Uses a RegExp from the Lodash which is released under the MIT License.

About

💯 Zero dependency unicode-aware string tools for NodeJS

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%