polish

Making JavaScript better

A JavaScript Utility Library ============================

(the verb, not the language)

####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.

###License: BSD