@@ -0,0 +1,85 @@
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+ 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+ }
21+
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+ }
40+
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+ }
50+
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+ }
63+
64+ return {
65+ isEmpty: isEmpty,
66+ map: F2(map),
67+ filter: F2(filter),
68+ reverse: reverse,
69+
70+ repeat: F2(repeat),
71+ center: F3(center),
72+ justifyLeft: F3(justifyLeft),
73+ justifyRight: F3(justifyRight),
74+
75+ strip: strip,
76+ stripLeft: stripLeft,
77+ stripRight: stripRight,
78+
79+ words: words,
80+ unwords: unwords,
81+ lines: lines,
82+ unlines: unlines,
83+
84+ };
85+};