on df67fe5 help sign in
elk/libraries/Native/String.js
85 lines 2.0 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 function isEmpty(str) {
10 return str.length === 0;
11 }
12 function map(f,str) {
13 return str.map(f);
14 }
15 function filter(pred,str) {
16 return str.filter(pred);
17 }
18 function reverse(str) {
19 return str.reverse();
20 }
22 function repeat(n, chr) {
23 var result = '';
24 while (n > 0) {
25 if (n & 1) result += chr;
26 n >>= 1, chr += chr;
27 }
28 return result;
29 }
30 function center(n,chr,str) {
31 var half = n - str.length / 2;
32 return repeat(Math.ceil(half),chr) + str + repeat(half|0,chr);
33 }
34 function justifyLeft(n,chr,str) {
35 return str + repeat(n - str.length, chr);
36 }
37 function justifyRight(n,chr,str) {
38 return repeat(n - str.length, chr) + str;
39 }
41 function strip(str) {
42 return str.trim();
43 }
44 function stripLeft(str) {
45 return str.trimLeft();
46 }
47 function stripRight(str) {
48 return str.trimRight();
49 }
51 function words(str) {
52 return str.split(/\s+/g);
53 }
54 function unwords(str) {
55 return str.join(' ');
56 }
57 function lines(str) {
58 return str.split(/\r\n|\r|\n/g);
59 }
60 function unlines(str) {
61 return str.join('\n');
62 }
64 return {
65 isEmpty: isEmpty,
66 map: F2(map),
67 filter: F2(filter),
68 reverse: reverse,
70 repeat: F2(repeat),
71 center: F3(center),
72 justifyLeft: F3(justifyLeft),
73 justifyRight: F3(justifyRight),
75 strip: strip,
76 stripLeft: stripLeft,
77 stripRight: stripRight,
79 words: words,
80 unwords: unwords,
81 lines: lines,
82 unlines: unlines,
84 };
85};