@@ -0,0 +1,146 @@
1+Elm.Native.String = {};
2+Elm.Native.String.make = function(elm) {
3+ elm.Native = elm.Native || {};
4+ elm.Native.String = elm.Native.String || {};
5+ if (elm.Native.String.values) return elm.Native.String.values;
6+ if ('values' in Elm.Native.String)
7+ return elm.Native.String.values = Elm.Native.String.values;
8+
9+ var Maybe = Elm.Maybe.make(elm);
10+ var Tuple2 = Elm.Native.Utils.make(elm).Tuple2;
11+
12+ function isEmpty(str) {
13+ return str.length === 0;
14+ }
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+ }
23+ function map(f,str) {
24+ return str.map(f);
25+ }
26+ function filter(pred,str) {
27+ return str.filter(pred);
28+ }
29+ function reverse(str) {
30+ return str.reverse();
31+ }
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+ }
45+
46+ function split(sep, str) {
47+ return str.split(sep);
48+ }
49+ function join(sep, strs) {
50+ return strs.join(sep);
51+ }
52+ function repeat(n, chr) {
53+ var result = '';
54+ while (n > 0) {
55+ if (n & 1) result += chr;
56+ n >>= 1, chr += chr;
57+ }
58+ return result;
59+ }
60+ function center(n,chr,str) {
61+ var half = n - str.length / 2;
62+ return repeat(Math.ceil(half),chr) + str + repeat(half|0,chr);
63+ }
64+ function justifyLeft(n,chr,str) {
65+ return str + repeat(n - str.length, chr);
66+ }
67+ function justifyRight(n,chr,str) {
68+ return repeat(n - str.length, chr) + str;
69+ }
70+
71+ function trim(str) {
72+ return str.trim();
73+ }
74+ function trimLeft(str) {
75+ return str.trimLeft();
76+ }
77+ function trimRight(str) {
78+ return str.trimRight();
79+ }
80+
81+ function words(str) {
82+ return str.split(/\s+/g);
83+ }
84+ function unwords(str) {
85+ return str.join(' ');
86+ }
87+ function lines(str) {
88+ return str.split(/\r\n|\r|\n/g);
89+ }
90+ function unlines(str) {
91+ return str.join('\n');
92+ }
93+
94+ function toUpper(str) {
95+ return str.toUpperCase();
96+ }
97+ function toLower(str) {
98+ return str.toLowerCase();
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+
114+ return Elm.Native.String.values = {
115+ isEmpty: isEmpty,
116+ cons: F2(cons),
117+ uncons: uncons,
118+ map: F2(map),
119+ filter: F2(filter),
120+ reverse: reverse,
121+ foldl: F3(foldl),
122+ foldr: F3(foldr),
123+
124+ split: F2(split),
125+ join: F2(join),
126+ repeat: F2(repeat),
127+ center: F3(center),
128+ justifyLeft: F3(justifyLeft),
129+ justifyRight: F3(justifyRight),
130+
131+ trim: trim,
132+ trimLeft: trimLeft,
133+ trimRight: trimRight,
134+
135+ words: words,
136+ unwords: unwords,
137+ lines: lines,
138+ unlines: unlines,
139+
140+ toUpper: toUpper,
141+ toLower: toLower,
142+
143+ any: F2(any),
144+ all: F2(all)
145+ };
146+};