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; var Char = Elm.Char.make(elm); var Maybe = Elm.Maybe.make(elm); var JS = Elm.JavaScript.make(elm); var Utils = Elm.Native.Utils.make(elm); function isEmpty(str) { return str.length === 0; } function cons(chr,str) { return chr + str; } function uncons(str) { var hd; return (hd = str[0]) ? Maybe.Just(Utils.Tuple2(Utils.chr(hd), str.slice(1))) : Maybe.Nothing; } function append(a,b) { return a + b; } function concat(strs) { return JS.fromList(strs).join(''); } function length(str) { return str.length; } function map(f,str) { var out = str.split(''); for (var i = out.length; i--; ) { out[i] = f(Utils.chr(out[i])); } return out.join(''); } function filter(pred,str) { return str.split('').map(Utils.chr).filter(pred).join(''); } function reverse(str) { return str.split('').reverse().join(''); } function foldl(f,b,str) { var len = str.length; for (var i = 0; i < len; ++i) { b = A2(f, Utils.chr(str[i]), b); } return b; } function foldr(f,b,str) { for (var i = str.length; i--; ) { b = A2(f, Utils.chr(str[i]), b); } return b; } function split(sep, str) { return JS.toList(str.split(sep)); } function join(sep, strs) { return JS.fromList(strs).join(sep); } function repeat(n, str) { var result = ''; while (n > 0) { if (n & 1) result += str; n >>= 1, str += str; } return result; } function sub(start, end, str) { return str.slice(start,end); } function left(n, str) { return n < 1 ? "" : str.slice(0,n); } function right(n, str) { return n < 1 ? "" : str.slice(-n); } function dropLeft(n, str) { return n < 1 ? str : str.slice(n); } function dropRight(n, str) { return n < 1 ? str : str.slice(0,-n); } function pad(n,chr,str) { var half = (n - str.length) / 2; return repeat(Math.ceil(half),chr) + str + repeat(half|0,chr); } function padRight(n,chr,str) { return str + repeat(n - str.length, chr); } function padLeft(n,chr,str) { return repeat(n - str.length, chr) + str; } function trim(str) { return str.trim(); } function trimLeft(str) { return str.trimLeft(); } function trimRight(str) { return str.trimRight(); } function words(str) { return JS.toList(str.split(/\s+/g)); } function lines(str) { return JS.toList(str.split(/\r\n|\r|\n/g)); } function toUpper(str) { return str.toUpperCase(); } function toLower(str) { return str.toLowerCase(); } function any(pred, str) { for (var i = str.length; i--; ) { if (pred(Utils.chr(str[i]))) return true; } return false; } function all(pred, str) { for (var i = str.length; i--; ) { if (!pred(Utils.chr(str[i]))) return false; } return true; } function contains(sub, str) { return str.indexOf(sub) > -1; } function startsWith(sub, str) { return str.indexOf(sub) === 0; } function endsWith(sub, str) { return str.lastIndexOf(sub) === str.length - sub.length; } function indexes(sub, str) { var subLen = sub.length; var i = 0; var is = []; while ((i = str.indexOf(sub, i)) > -1) { is.push(i); i = i + subLen; } return JS.toList(is); } function toInt(s) { var len = s.length; if (len === 0) { return Maybe.Nothing; } var start = 0; if (s[0] == '-') { if (len === 1) { return Maybe.Nothing; } start = 1; } for (var i = start; i < len; ++i) { if (!Char.isDigit(s[i])) { return Maybe.Nothing; } } return Maybe.Just(parseInt(s, 10)); } function toFloat(s) { var len = s.length; if (len === 0) { return Maybe.Nothing; } var start = 0; if (s[0] == '-') { if (len === 1) { return Maybe.Nothing; } start = 1; } var dotCount = 0; for (var i = start; i < len; ++i) { if (Char.isDigit(s[i])) { continue; } if (s[i] === '.') { dotCount += 1; if (dotCount <= 1) { continue; } } return Maybe.Nothing; } return Maybe.Just(parseFloat(s)); } function toList(str) { return JS.toList(str.split('').map(Utils.chr)); } function fromList(chars) { return JS.fromList(chars).join(''); } return Elm.Native.String.values = { isEmpty: isEmpty, cons: F2(cons), uncons: uncons, append: F2(append), concat: concat, length: length, map: F2(map), filter: F2(filter), reverse: reverse, foldl: F3(foldl), foldr: F3(foldr), split: F2(split), join: F2(join), repeat: F2(repeat), sub: F3(sub), left: F2(left), right: F2(right), dropLeft: F2(dropLeft), dropRight: F2(dropRight), pad: F3(pad), padLeft: F3(padLeft), padRight: F3(padRight), trim: trim, trimLeft: trimLeft, trimRight: trimRight, words: words, lines: lines, toUpper: toUpper, toLower: toLower, any: F2(any), all: F2(all), contains: F2(contains), startsWith: F2(startsWith), endsWith: F2(endsWith), indexes: F2(indexes), toInt: toInt, toFloat: toFloat, toList: toList, fromList: fromList, }; };