@@ -6,6 +6,7 @@ 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 Char = Elm.Char.make(elm);
9 var Maybe = Elm.Maybe.make(elm);
10 var Maybe = Elm.Maybe.make(elm);
10 var JS = Elm.JavaScript.make(elm);
11 var JS = Elm.JavaScript.make(elm);
11 var Tuple2 = Elm.Native.Utils.make(elm).Tuple2;
12 var Tuple2 = Elm.Native.Utils.make(elm).Tuple2;
@@ -61,14 +62,14 @@ Elm.Native.String.make = function(elm) {
62 return result;
63 return result;
64− function center(n,chr,str) {
65+ function pad(n,chr,str) {
65 var half = n - str.length / 2;
66 var half = n - str.length / 2;
66 return repeat(Math.ceil(half),chr) + str + repeat(half|0,chr);
67 return repeat(Math.ceil(half),chr) + str + repeat(half|0,chr);
68− function justifyLeft(n,chr,str) {
69+ function padRight(n,chr,str) {
69 return str + repeat(n - str.length, chr);
70 return str + repeat(n - str.length, chr);
71− function justifyRight(n,chr,str) {
72+ function padLeft(n,chr,str) {
72 return repeat(n - str.length, chr) + str;
73 return repeat(n - str.length, chr) + str;
@@ -115,6 +116,62 @@ Elm.Native.String.make = function(elm) {
115 return true;
116 return true;
119+ function contains(sub, str) {
120+ return str.indexOf(sub) > -1;
122+ function startsWith(sub, str) {
123+ return str.indexOf(sub) === 0;
125+ function endsWith(sub, str) {
126+ return str.lastIndexOf(sub) === str.length - sub.length;
128+ function indexes(sub, str) {
129+ var subLen = sub.length;
132+ while ((i = str.indexOf(sub, i)) > -1) {
136+ return JS.toList(is);
139+ function toInt(str) {
140+ var s = JS.fromString(str);
142+ if (len === 0) { return Maybe.Nothing; }
145+ if (len === 1) { return Maybe.Nothing; }
148+ for (var i = start; i < len; ++i) {
149+ if (!Char.isDigit(s[i])) { return Maybe.Nothing; }
151+ return Maybe.Just(parseInt(s, 10));
154+ function toFloat(str) {
155+ var s = JS.fromString(str);
157+ if (len === 0) { return Maybe.Nothing; }
160+ if (len === 1) { return Maybe.Nothing; }
164+ for (var i = start; i < len; ++i) {
165+ if (Char.isDigit(s[i])) { continue; }
168+ if (dotCount <= 1) { continue; }
170+ return Maybe.Nothing;
172+ return Maybe.Just(parseFloat(s));
118 return Elm.Native.String.values = {
175 return Elm.Native.String.values = {
119 isEmpty: isEmpty,
176 isEmpty: isEmpty,
120 cons: F2(cons),
177 cons: F2(cons),
@@ -129,9 +186,10 @@ Elm.Native.String.make = function(elm) {
129 split: F2(split),
186 split: F2(split),
130 join: F2(join),
187 join: F2(join),
131 repeat: F2(repeat),
188 repeat: F2(repeat),
132− center: F3(center),
189+
133− justifyLeft: F3(justifyLeft),
190+ pad: F3(pad),
134− justifyRight: F3(justifyRight),
191+ padLeft: F3(padLeft),
192+ padRight: F3(padRight),
136 trim: trim,
194 trim: trim,
137 trimLeft: trimLeft,
195 trimLeft: trimLeft,
@@ -146,6 +204,14 @@ Elm.Native.String.make = function(elm) {
146 toLower: toLower,
204 toLower: toLower,
148 any: F2(any),
206 any: F2(any),
149− all: F2(all)
207+ all: F2(all),
209+ contains: F2(contains),
210+ startsWith: F2(startsWith),
211+ endsWith: F2(endsWith),
212+ indexes: F2(indexes),