polish

Making JavaScript better

npm install polish
12 downloads in the last week
34 downloads in the last month

Polish.js

A JavaScript Utility Library

(the verb, not the language)

Install (note, Polish.js overrides default behavior)

node.js

npm install polish
require('polish')

browser

<!-- browser (1.45 KB minified & gzipped) -->
<script src="polish.min.js"></script>

Features

Array operations

list = [1,2,3,4,5]
list.pop(1) == 2 //    list == [1,3,4,5]    pops element at index
list.remove(2) //    list == [1,3,4,5]      removes element by value
list.insert(2,5) //    list == [1,2,5,3,4,5]

Use Math min/max with lists

Math.min([1,2,3]) == 1
Math.max([1,2,3]) == 3

Randomness functions

Math.randInt(100) // random int from 0,100 inclusive
[1,2,3].choice() //random object from list
"abc".choice() //random letter from string
[1,2,3].shuffle() //shuffles array in place
"abc".shuffle() //returns new shuffled string

Global functions

range(1,4) == [1,2,3]
range(6,1,-2) == [6,4,2]
zip([[1,2],[3,4],[5,6]]) == [[1,3,5],[2,4,6]]

Python-inspired list/string selectors

list = [1,2,3,4,5]
str = "abcdef"

list.g('-1') == 5
str.g('1:') == "bcdef"
list.g(':2') == [1,2]
str.g('1:3') == "bc"
str.g('-3:-1') == "de"
list.g('::-1') == [5,4,3,2,1]
str.g('3:1:-1') == "dc"

//special -1 selector (picks item from end of list)
list[-1] == 5

Itertools

Polish.combinations([1,2,3],2) == [[1,2],[1,3],[2,3]]
Polish.combinationsReplace("abc",2) == [['a','a'],['a','b'], ... , ['c','c']]
Polish.permutations([1,2]) == [[1,2],[2,1]]

Math functions

Math.sum([1,2,3]) == 6
Math.factorial(10) == 3628800
Math.isPrime(23) == true
Math.leastFactor(25) == 5

Strings

"abc".reverse() == "cba"

Polish.strings
{
    letters: 'abcdefghijklmnopqrstuvwxyz',
    letters_all: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
    digits: '0123456789'
}

Extra

//stringifies and then parses
Polish.clone

Compatibility / side-effects:

This library has been injected into unit tests for jQuery, backbone, and bootstrap and has not caused any issues.

Summary of globals

Array.prototype.remove()
Array.prototype.insert()
Math.randInt()
String.prototype.choice()
String.prototype.shuffle()
Array.prototype.choice()
Array.prototype.shuffle()
range()
zip()
Array.prototype.g()
String.prototype.g()
Polish.combinations()
Polish.combinationsReplace()

License: BSD

npm loves you