on master help sign in
Continue filling out the string library
commit172884b594419f35d6aa8a9adc5a25f726a13e16 authorEvan Czaplicki <info@elm-lang.org> dateWed 2 Oct 2013, 15:06 (13 years ago) parentdf67fe5
1 file changed+67−6
libraries/Native/String.js+67−6
libraries/Native/String.js+67−6
@@ -6,9 +6,20 @@ Elm.Native.String.make = function(elm) {
66 if ('values' in Elm.Native.String)
77 return elm.Native.String.values = Elm.Native.String.values;
88
9+ var Maybe = Elm.Maybe.make(elm);
10+ var Tuple2 = Elm.Native.Utils.make(elm).Tuple2;
11+
912 function isEmpty(str) {
1013 return str.length === 0;
1114 }
15+ function cons(chr,str) {
16+ return chr + str;
17+ }
18+ function uncons(str) {
19+ var chr;
20+ return (chr = str[0]) ? Maybe.Just(Tuple2(chr, str.slice(1)))
21+ : Maybe.Nothing;
22+ }
1223 function map(f,str) {
1324 return str.map(f);
1425 }
@@ -18,7 +29,26 @@ Elm.Native.String.make = function(elm) {
1829 function reverse(str) {
1930 return str.reverse();
2031 }
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);
36+ }
37+ return b;
38+ }
39+ function foldr(f,b,str) {
40+ for (var i = str.length; i--; ) {
41+ b = A2(f, str[i], b);
42+ }
43+ return b;
44+ }
2145
46+ function split(sep, str) {
47+ return str.split(sep);
48+ }
49+ function join(sep, strs) {
50+ return strs.join(sep);
51+ }
2252 function repeat(n, chr) {
2353 var result = '';
2454 while (n > 0) {
@@ -38,13 +68,13 @@ Elm.Native.String.make = function(elm) {
3868 return repeat(n - str.length, chr) + str;
3969 }
4070
41− function strip(str) {
71+ function trim(str) {
4272 return str.trim();
4373 }
44− function stripLeft(str) {
74+ function trimLeft(str) {
4575 return str.trimLeft();
4676 }
47− function stripRight(str) {
77+ function trimRight(str) {
4878 return str.trimRight();
4979 }
5080
@@ -61,25 +91,56 @@ Elm.Native.String.make = function(elm) {
6191 return str.join('\n');
6292 }
6393
94+ function toUpper(str) {
95+ return str.toUpper();
96+ }
97+ function toLower(str) {
98+ return str.toLower();
99+ }
100+
101+ function any(pred, str) {
102+ for (var i = str.length; i--; ) {
103+ if (pred(str[i])) return true;
104+ }
105+ return false;
106+ }
107+ function all(pred, str) {
108+ for (var i = str.length; i--; ) {
109+ if (!pred(str[i])) return false;
110+ }
111+ return true;
112+ }
113+
64114 return {
65115 isEmpty: isEmpty,
116+ cons: F2(cons),
117+ uncons: uncons,
66118 map: F2(map),
67119 filter: F2(filter),
68120 reverse: reverse,
121+ foldl: F3(foldl),
122+ foldr: F3(foldr),
69123
124+ split: F2(split),
125+ join: F2(join),
70126 repeat: F2(repeat),
71127 center: F3(center),
72128 justifyLeft: F3(justifyLeft),
73129 justifyRight: F3(justifyRight),
74130
75− strip: strip,
76− stripLeft: stripLeft,
77− stripRight: stripRight,
131+ trim: trim,
132+ trimLeft: trimLeft,
133+ trimRight: trimRight,
78134
79135 words: words,
80136 unwords: unwords,
81137 lines: lines,
82138 unlines: unlines,
83139
140+ toUpper: toUpper,
141+ toLower: toLower,
142+
143+ any: F2(any),
144+ all: F2(all),
84145 };
85146};