1
1
use v5;
2
2
3
- package Perlito5::Javascript ::CORE ;
3
+ package Perlito5::Javascript3 ::CORE ;
4
4
5
- sub emit_javascript {
5
+ sub emit_javascript3 {
6
6
7
7
return <<'EOT'
8
8
//
9
9
//
10
- // lib/Perlito5/Javascript /CORE.js
10
+ // lib/Perlito5/Javascript3 /CORE.js
11
11
//
12
- // CORE functions for "Perlito" Perl5-in-Javascript
12
+ // CORE functions for "Perlito" Perl5-in-Javascript3
13
13
//
14
14
// AUTHORS
15
15
//
@@ -72,6 +72,12 @@ CORE.warn = function(List__) {
72
72
CORE.bless = function(List__) {
73
73
var o = List__[0];
74
74
var pkg_name = List__[1];
75
+ if (o instanceof p5Scalar) {
76
+ o = o._v_;
77
+ }
78
+ if (pkg_name instanceof p5Scalar) {
79
+ pkg_name = pkg_name._v_;
80
+ }
75
81
if (typeof pkg_name === "object") {
76
82
// bless {}, Class
77
83
o._class_ = pkg_name;
@@ -164,12 +170,16 @@ CORE.substr = function(List__) {
164
170
return p5str(expr).substr(offset, length);
165
171
};
166
172
173
+ CORE.defined = function(List__) {
174
+ return (List__[0] instanceof p5Scalar) ? ( List__[0]._v_ != null ) : ( List__[0] != null )
175
+ };
176
+
167
177
CORE.values = function(List__, p5want) {
168
- var o = List__[0];
178
+ var o = List__[0]._hash_ ;
169
179
delete o["_each_"];
170
180
if (p5want) {
171
181
if (o == null) {
172
- return [] ;
182
+ return new p5Array([]) ;
173
183
};
174
184
if (typeof o.values === "function") {
175
185
return o.values();
@@ -178,17 +188,17 @@ CORE.values = function(List__, p5want) {
178
188
for (var i in o) {
179
189
out.push(o[i]);
180
190
}
181
- return out;
191
+ return new p5Array( out) ;
182
192
}
183
193
return CORE.keys(List__, p5want);
184
194
};
185
195
186
196
CORE.keys = function(List__, p5want) {
187
- var o = List__[0];
197
+ var o = List__[0]._hash_ ;
188
198
delete o["_each_"];
189
199
if (p5want) {
190
200
if (o == null) {
191
- return [] ;
201
+ return new p5Array([]) ;
192
202
}
193
203
if (typeof o.keys === "function") {
194
204
return o.keys();
@@ -197,7 +207,7 @@ CORE.keys = function(List__, p5want) {
197
207
for (var i in o) {
198
208
out.push(i);
199
209
}
200
- return out;
210
+ return new p5Array( out) ;
201
211
}
202
212
else {
203
213
if (o == null) {
@@ -248,7 +258,7 @@ CORE.reverse = function(List__) {
248
258
};
249
259
250
260
CORE.splice = function(List__, p5want) {
251
- var array = List__.shift();
261
+ var array = List__.shift()._array_ ;
252
262
// CORE.say([ array ]);
253
263
var offset = p5num(List__.shift());
254
264
var limit = List__.length ? p5num(List__.shift()) : (array.length + 1);
@@ -269,49 +279,47 @@ CORE.splice = function(List__, p5want) {
269
279
270
280
CORE.pop = function(List__) {
271
281
var o = List__[0];
272
- if (o.length == null) {
282
+ if (o._array_. length == null) {
273
283
return null;
274
284
}
275
- return o.pop();
285
+ return o._array_. pop();
276
286
};
277
287
278
288
CORE.shift = function(List__) {
279
289
var o = List__[0];
280
- if (o.length == null) {
290
+ if (o._array_. length == null) {
281
291
return null;
282
292
}
283
- return o.shift();
293
+ return o._array_. shift();
284
294
};
285
295
286
296
CORE.push = function(List__) {
287
297
var o = List__[0];
288
298
var v = List__[1];
289
- for(var i = 0; i < v.length; i++) {
290
- o.push(v[i]);
299
+ for(var i = 0; i < v._array_. length; i++) {
300
+ o._array_. push(v._array_ [i]);
291
301
}
292
- return o.length;
302
+ return o._array_. length;
293
303
};
294
304
295
305
CORE.unshift = function(List__) {
296
306
var o = List__[0];
297
307
var v = List__[1];
298
- for(var i = v.length-1; i >= 0; i--) {
299
- o.unshift(v[i]);
308
+ for(var i = v._array_. length-1; i >= 0; i--) {
309
+ o._array_. unshift(v._array_ [i]);
300
310
}
301
- return o.length;
311
+ return o._array_. length;
302
312
};
303
313
304
314
CORE.join = function(List__) {
305
315
var s = List__[0];
306
316
var o = List__[1];
307
- return o.join(s);
317
+ return o._array_. join(s);
308
318
};
309
319
310
320
CORE.index = function(List__) {
311
- var o = List__[0];
312
- var s = List__[1];
313
321
try {
314
- return o .indexOf(s , p5num(List__[2]));
322
+ return p5str(List__[0]) .indexOf(p5str(List__[1]) , p5num(List__[2]));
315
323
}
316
324
catch(err) {
317
325
return -1;
@@ -339,10 +347,7 @@ CORE.rindex = function(List__) {
339
347
};
340
348
341
349
CORE.length = function(List__) {
342
- var o = List__[0];
343
- if (typeof o.string === "function") {
344
- return o.string().length;
345
- }
350
+ var o = p5str(List__[0]);
346
351
return o.length;
347
352
};
348
353
@@ -351,6 +356,9 @@ CORE.unpack = function(List__) { CORE.warn([ "CORE::unpack not implemented" ])
351
356
352
357
CORE.ref = function(List__) {
353
358
var o = List__[0];
359
+ if (o instanceof p5Scalar) {
360
+ o = o._v_;
361
+ }
354
362
if (o == null) {
355
363
return "";
356
364
}
@@ -395,7 +403,7 @@ CORE.prototype = function(List__, data) {
395
403
};
396
404
397
405
EOT
398
- } # end of emit_javascript ()
406
+ } # end of emit_javascript3 ()
399
407
400
408
1;
401
409
0 commit comments