Start on the String library

This commit is contained in:
Evan Czaplicki 2013-10-02 01:03:03 -07:00
parent ab8ff11960
commit df67fe5ec2

View file

@ -0,0 +1,85 @@
Elm.Native.String = {};
Elm.Native.String.make = function(elm) {
elm.Native = elm.Native || {};
elm.Native.String = elm.Native.String || {};
if (elm.Native.String.values) return elm.Native.String.values;
if ('values' in Elm.Native.String)
return elm.Native.String.values = Elm.Native.String.values;
function isEmpty(str) {
return str.length === 0;
}
function map(f,str) {
return str.map(f);
}
function filter(pred,str) {
return str.filter(pred);
}
function reverse(str) {
return str.reverse();
}
function repeat(n, chr) {
var result = '';
while (n > 0) {
if (n & 1) result += chr;
n >>= 1, chr += chr;
}
return result;
}
function center(n,chr,str) {
var half = n - str.length / 2;
return repeat(Math.ceil(half),chr) + str + repeat(half|0,chr);
}
function justifyLeft(n,chr,str) {
return str + repeat(n - str.length, chr);
}
function justifyRight(n,chr,str) {
return repeat(n - str.length, chr) + str;
}
function strip(str) {
return str.trim();
}
function stripLeft(str) {
return str.trimLeft();
}
function stripRight(str) {
return str.trimRight();
}
function words(str) {
return str.split(/\s+/g);
}
function unwords(str) {
return str.join(' ');
}
function lines(str) {
return str.split(/\r\n|\r|\n/g);
}
function unlines(str) {
return str.join('\n');
}
return {
isEmpty: isEmpty,
map: F2(map),
filter: F2(filter),
reverse: reverse,
repeat: F2(repeat),
center: F3(center),
justifyLeft: F3(justifyLeft),
justifyRight: F3(justifyRight),
strip: strip,
stripLeft: stripLeft,
stripRight: stripRight,
words: words,
unwords: unwords,
lines: lines,
unlines: unlines,
};
};