on af54dd3 help sign in
elk/libraries/Native/String.js
150 lines 3.6 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 length(str) {
24 return str.length;
25 }
26 function map(f,str) {
27 return str.split('').map(f).join('');
28 }
29 function filter(pred,str) {
30 return str.split('').filter(pred).join('');
31 }
32 function reverse(str) {
33 return str.split('').reverse().join('');
34 }
35 function foldl(f,b,str) {
36 var len = str.length;
37 for (var i = 0; i < len; ++i) {
38 b = A2(f, str[i], b);
39 }
40 return b;
41 }
42 function foldr(f,b,str) {
43 for (var i = str.length; i--; ) {
44 b = A2(f, str[i], b);
45 }
46 return b;
47 }
49 function split(sep, str) {
50 return str.split(sep);
51 }
52 function join(sep, strs) {
53 return strs.join(sep);
54 }
55 function repeat(n, chr) {
56 var result = '';
57 while (n > 0) {
58 if (n & 1) result += chr;
59 n >>= 1, chr += chr;
60 }
61 return result;
62 }
63 function center(n,chr,str) {
64 var half = n - str.length / 2;
65 return repeat(Math.ceil(half),chr) + str + repeat(half|0,chr);
66 }
67 function justifyLeft(n,chr,str) {
68 return str + repeat(n - str.length, chr);
69 }
70 function justifyRight(n,chr,str) {
71 return repeat(n - str.length, chr) + str;
72 }
74 function trim(str) {
75 return str.trim();
76 }
77 function trimLeft(str) {
78 return str.trimLeft();
79 }
80 function trimRight(str) {
81 return str.trimRight();
82 }
84 function words(str) {
85 return str.split(/\s+/g);
86 }
87 function unwords(str) {
88 return str.join(' ');
89 }
90 function lines(str) {
91 return str.split(/\r\n|\r|\n/g);
92 }
93 function unlines(str) {
94 return str.join('\n');
95 }
97 function toUpper(str) {
98 return str.toUpperCase();
99 }
100 function toLower(str) {
101 return str.toLowerCase();
102 }
104 function any(pred, str) {
105 for (var i = str.length; i--; ) {
106 if (pred(str[i])) return true;
107 }
108 return false;
109 }
110 function all(pred, str) {
111 for (var i = str.length; i--; ) {
112 if (!pred(str[i])) return false;
113 }
114 return true;
115 }
117 return Elm.Native.String.values = {
118 isEmpty: isEmpty,
119 cons: F2(cons),
120 uncons: uncons,
121 length: length,
122 map: F2(map),
123 filter: F2(filter),
124 reverse: reverse,
125 foldl: F3(foldl),
126 foldr: F3(foldr),
128 split: F2(split),
129 join: F2(join),
130 repeat: F2(repeat),
131 center: F3(center),
132 justifyLeft: F3(justifyLeft),
133 justifyRight: F3(justifyRight),
135 trim: trim,
136 trimLeft: trimLeft,
137 trimRight: trimRight,
139 words: words,
140 unwords: unwords,
141 lines: lines,
142 unlines: unlines,
144 toUpper: toUpper,
145 toLower: toLower,
147 any: F2(any),
148 all: F2(all)
149 };
150};