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 Char = Elm.Char.make(elm);
10 var Maybe = Elm.Maybe.make(elm);
11 var List = Elm.Native.List.make(elm);
12 var Utils = Elm.Native.Utils.make(elm);
14 function isEmpty(str) {
15 return str.length === 0;
17 function cons(chr,str) {
20 function uncons(str) {
22 return (hd = str[0]) ? Maybe.Just(Utils.Tuple2(Utils.chr(hd), str.slice(1)))
25 function append(a,b) {
28 function concat(strs) {
29 return List.toArray(strs).join('');
31 function length(str) {
35 var out = str.split('');
36 for (var i = out.length; i--; ) {
37 out[i] = f(Utils.chr(out[i]));
41 function filter(pred,str) {
42 return str.split('').map(Utils.chr).filter(pred).join('');
44 function reverse(str) {
45 return str.split('').reverse().join('');
47 function foldl(f,b,str) {
49 for (var i = 0; i < len; ++i) {
50 b = A2(f, Utils.chr(str[i]), b);
54 function foldr(f,b,str) {
55 for (var i = str.length; i--; ) {
56 b = A2(f, Utils.chr(str[i]), b);
61 function split(sep, str) {
62 return List.fromArray(str.split(sep));
64 function join(sep, strs) {
65 return List.toArray(strs).join(sep);
67 function repeat(n, str) {
70 if (n & 1) result += str;
76 function sub(start, end, str) {
77 return str.slice(start,end);
79 function left(n, str) {
80 return n < 1 ? "" : str.slice(0,n);
82 function right(n, str) {
83 return n < 1 ? "" : str.slice(-n);
85 function dropLeft(n, str) {
86 return n < 1 ? str : str.slice(n);
88 function dropRight(n, str) {
89 return n < 1 ? str : str.slice(0,-n);
92 function pad(n,chr,str) {
93 var half = (n - str.length) / 2;
94 return repeat(Math.ceil(half),chr) + str + repeat(half|0,chr);
96 function padRight(n,chr,str) {
97 return str + repeat(n - str.length, chr);
99 function padLeft(n,chr,str) {
100 return repeat(n - str.length, chr) + str;
106 function trimLeft(str) {
107 return str.trimLeft();
109 function trimRight(str) {
110 return str.trimRight();
113 function words(str) {
114 return List.fromArray(str.split(/\s+/g));
116 function lines(str) {
117 return List.fromArray(str.split(/\r\n|\r|\n/g));
120 function toUpper(str) {
121 return str.toUpperCase();
123 function toLower(str) {
124 return str.toLowerCase();
127 function any(pred, str) {
128 for (var i = str.length; i--; ) {
129 if (pred(Utils.chr(str[i]))) return true;
133 function all(pred, str) {
134 for (var i = str.length; i--; ) {
135 if (!pred(Utils.chr(str[i]))) return false;
140 function contains(sub, str) {
141 return str.indexOf(sub) > -1;
143 function startsWith(sub, str) {
144 return str.indexOf(sub) === 0;
146 function endsWith(sub, str) {
147 return str.length >= sub.length &&
148 str.lastIndexOf(sub) === str.length - sub.length;
150 function indexes(sub, str) {
151 var subLen = sub.length;
154 while ((i = str.indexOf(sub, i)) > -1) {
158 return List.fromArray(is);
163 if (len === 0) { return Maybe.Nothing; }
166 if (len === 1) { return Maybe.Nothing; }
169 for (var i = start; i < len; ++i) {
170 if (!Char.isDigit(s[i])) { return Maybe.Nothing; }
172 return Maybe.Just(parseInt(s, 10));
175 function toFloat(s) {
177 if (len === 0) { return Maybe.Nothing; }
180 if (len === 1) { return Maybe.Nothing; }
184 for (var i = start; i < len; ++i) {
185 if (Char.isDigit(s[i])) { continue; }
188 if (dotCount <= 1) { continue; }
190 return Maybe.Nothing;
192 return Maybe.Just(parseFloat(s));
195 function toList(str) {
196 return List.fromArray(str.split('').map(Utils.chr));
198 function fromList(chars) {
199 return List.toArray(chars).join('');
202 return Elm.Native.String.values = {
222 dropLeft: F2(dropLeft),
223 dropRight: F2(dropRight),
226 padLeft: F3(padLeft),
227 padRight: F3(padRight),
231 trimRight: trimRight,
242 contains: F2(contains),
243 startsWith: F2(startsWith),
244 endsWith: F2(endsWith),
245 indexes: F2(indexes),
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list