on ea06794 help sign in
elk/libraries/Native/String.js
146 lines 3.5 kB history raw
1Elm.Native.String = {};
2Elm.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;
9 var Maybe = Elm.Maybe.make(elm);
10 var Tuple2 = Elm.Native.Utils.make(elm).Tuple2;
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 }
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 }
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 }
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 }
94 function toUpper(str) {
95 return str.toUpperCase();
96 }
97 function toLower(str) {
98 return str.toLowerCase();
99 }
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 }
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),
124 split: F2(split),
125 join: F2(join),
126 repeat: F2(repeat),
127 center: F3(center),
128 justifyLeft: F3(justifyLeft),
129 justifyRight: F3(justifyRight),
131 trim: trim,
132 trimLeft: trimLeft,
133 trimRight: trimRight,
135 words: words,
136 unwords: unwords,
137 lines: lines,
138 unlines: unlines,
140 toUpper: toUpper,
141 toLower: toLower,
143 any: F2(any),
144 all: F2(all)
145 };
146};