@@ -6,9 +6,20 @@ Elm.Native.String.make = function(elm) {
6 if ('values' in Elm.Native.String)
6 if ('values' in Elm.Native.String)
7 return elm.Native.String.values = Elm.Native.String.values;
7 return elm.Native.String.values = Elm.Native.String.values;
9+ var Maybe = Elm.Maybe.make(elm);
10+ var Tuple2 = Elm.Native.Utils.make(elm).Tuple2;
9 function isEmpty(str) {
12 function isEmpty(str) {
10 return str.length === 0;
13 return str.length === 0;
15+ function cons(chr,str) {
18+ function uncons(str) {
20+ return (chr = str[0]) ? Maybe.Just(Tuple2(chr, str.slice(1)))
12 function map(f,str) {
23 function map(f,str) {
13 return str.map(f);
24 return str.map(f);
@@ -18,7 +29,26 @@ Elm.Native.String.make = function(elm) {
18 function reverse(str) {
29 function reverse(str) {
19 return str.reverse();
30 return str.reverse();
32+ function foldl(f,b,str) {
33+ var len = str.length;
34+ for (var i = 0; i < len; ++i) {
35+ b = A2(f, str[i], b);
39+ function foldr(f,b,str) {
40+ for (var i = str.length; i--; ) {
41+ b = A2(f, str[i], b);
46+ function split(sep, str) {
47+ return str.split(sep);
49+ function join(sep, strs) {
50+ return strs.join(sep);
22 function repeat(n, chr) {
52 function repeat(n, chr) {
23 var result = '';
53 var result = '';
24 while (n > 0) {
54 while (n > 0) {
@@ -38,13 +68,13 @@ Elm.Native.String.make = function(elm) {
38 return repeat(n - str.length, chr) + str;
68 return repeat(n - str.length, chr) + str;
41− function strip(str) {
71+ function trim(str) {
42 return str.trim();
72 return str.trim();
44− function stripLeft(str) {
74+ function trimLeft(str) {
45 return str.trimLeft();
75 return str.trimLeft();
47− function stripRight(str) {
77+ function trimRight(str) {
48 return str.trimRight();
78 return str.trimRight();
@@ -61,25 +91,56 @@ Elm.Native.String.make = function(elm) {
61 return str.join('\n');
91 return str.join('\n');
94+ function toUpper(str) {
95+ return str.toUpper();
97+ function toLower(str) {
98+ return str.toLower();
101+ function any(pred, str) {
102+ for (var i = str.length; i--; ) {
103+ if (pred(str[i])) return true;
107+ function all(pred, str) {
108+ for (var i = str.length; i--; ) {
109+ if (!pred(str[i])) return false;
65 isEmpty: isEmpty,
115 isEmpty: isEmpty,
66 map: F2(map),
118 map: F2(map),
67 filter: F2(filter),
119 filter: F2(filter),
68 reverse: reverse,
120 reverse: reverse,
70 repeat: F2(repeat),
126 repeat: F2(repeat),
71 center: F3(center),
127 center: F3(center),
72 justifyLeft: F3(justifyLeft),
128 justifyLeft: F3(justifyLeft),
73 justifyRight: F3(justifyRight),
129 justifyRight: F3(justifyRight),
75− strip: strip,
131+ trim: trim,
76− stripLeft: stripLeft,
132+ trimLeft: trimLeft,
77− stripRight: stripRight,
133+ trimRight: trimRight,
79 words: words,
135 words: words,
80 unwords: unwords,
136 unwords: unwords,
81 lines: lines,
137 lines: lines,
82 unlines: unlines,
138 unlines: unlines,