Skip to content

Commit 0ca288b

Browse files
authored
Merge pull request #10 from processing/combine-data
Merge TypeDict and other data into one addon; auto-register addon
2 parents 1c39be2 + fe4cd7c commit 0ca288b

File tree

2 files changed

+111
-108
lines changed

2 files changed

+111
-108
lines changed

src/addData.js

Lines changed: 0 additions & 107 deletions
This file was deleted.

src/addTypeDict.js renamed to src/data.js

Lines changed: 111 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,110 @@
1-
function addTypeDict(p5, fn){
1+
function addData(p5, fn){
2+
fn.append = function (array, value) {
3+
array.push(value);
4+
return array;
5+
};
6+
7+
fn.arrayCopy = function (src, srcPosition, dst, dstPosition, length) {
8+
// the index to begin splicing from dst array
9+
let start;
10+
let end;
11+
12+
if (typeof length !== 'undefined') {
13+
end = Math.min(length, src.length);
14+
start = dstPosition;
15+
src = src.slice(srcPosition, end + srcPosition);
16+
} else {
17+
if (typeof dst !== 'undefined') {
18+
// src, dst, length
19+
// rename so we don't get confused
20+
end = dst;
21+
end = Math.min(end, src.length);
22+
} else {
23+
// src, dst
24+
end = src.length;
25+
}
26+
27+
start = 0;
28+
// rename so we don't get confused
29+
dst = srcPosition;
30+
src = src.slice(0, end);
31+
}
32+
33+
// Since we are not returning the array and JavaScript is pass by reference
34+
// we must modify the actual values of the array
35+
// instead of reassigning arrays
36+
Array.prototype.splice.apply(dst, [start, end].concat(src));
37+
};
38+
39+
fn.concat = (list0, list1) => list0.concat(list1);
40+
41+
fn.reverse = list => list.reverse();
42+
43+
fn.shorten = function (list) {
44+
list.pop();
45+
return list;
46+
};
47+
48+
fn.sort = function (list, count) {
49+
let arr = count ? list.slice(0, Math.min(count, list.length)) : list;
50+
const rest = count ? list.slice(Math.min(count, list.length)) : [];
51+
if (typeof arr[0] === 'string') {
52+
arr = arr.sort();
53+
} else {
54+
arr = arr.sort((a, b) => a - b);
55+
}
56+
return arr.concat(rest);
57+
};
58+
59+
fn.splice = function (list, value, index) {
60+
// note that splice returns spliced elements and not an array
61+
Array.prototype.splice.apply(list, [index, 0].concat(value));
62+
63+
return list;
64+
};
65+
66+
fn.subset = function (list, start, count) {
67+
if (typeof count !== 'undefined') {
68+
return list.slice(start, start + count);
69+
} else {
70+
return list.slice(start, list.length);
71+
}
72+
};
73+
74+
fn.join = function(list, separator) {
75+
return list.join(separator);
76+
};
77+
78+
fn.match = function(str, reg) {
79+
return str.match(reg);
80+
};
81+
82+
fn.matchAll = function(str, reg) {
83+
const re = new RegExp(reg, 'g');
84+
let match = re.exec(str);
85+
const matches = [];
86+
while (match !== null) {
87+
matches.push(match);
88+
// matched text: match[0]
89+
// match start: match.index
90+
// capturing group n: match[n]
91+
match = re.exec(str);
92+
}
93+
return matches;
94+
};
95+
96+
fn.split = function(str, delim) {
97+
return str.split(delim);
98+
};
99+
100+
fn.trim = function(str) {
101+
if (str instanceof Array) {
102+
return str.map(this.trim);
103+
} else {
104+
return str.trim();
105+
}
106+
};
107+
2108
fn.createStringDict = function (key, value) {
3109
return new p5.StringDict(key, value);
4110
};
@@ -196,4 +302,8 @@ function addTypeDict(p5, fn){
196302
return this._keyTest(-1);
197303
}
198304
};
305+
}
306+
307+
if (typeof p5 !== undefined) {
308+
p5.registerAddon(addData);
199309
}

0 commit comments

Comments
 (0)