Skip to content

Commit

Permalink
added support for sets in iterable logic
Browse files Browse the repository at this point in the history
  • Loading branch information
atsepkov committed Jan 27, 2019
1 parent 677ca80 commit 442b20d
Show file tree
Hide file tree
Showing 7 changed files with 55 additions and 2 deletions.
16 changes: 16 additions & 0 deletions lib/baselib.js
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,8 @@ function hex(a) {
function ՐՏ_in(val, arr) {
if (typeof arr.indexOf === "function") {
return arr.indexOf(val) !== -1;
} else if (typeof arr.has === "function") {
return arr.has(val);
}
return arr.hasOwnProperty(val);
}
Expand All @@ -127,13 +129,19 @@ function ՐՏ_Iterable(iterable) {
if (iterable.constructor === [].constructor || iterable.constructor === "".constructor || (tmp = Array.prototype.slice.call(iterable)).length) {
return tmp || iterable;
}
if (Set && iterable.constructor === Set) {
return Array.from(iterable);
}
return Object.keys(iterable);
}
function len(obj) {
var tmp;
if (obj.constructor === [].constructor || obj.constructor === "".constructor || (tmp = Array.prototype.slice.call(obj)).length) {
return (tmp || obj).length;
}
if (Set && obj.constructor === Set) {
return obj.size;
}
return Object.keys(obj).length;
}
function map(oper, arr) {
Expand Down Expand Up @@ -501,6 +509,8 @@ var ValueError = (ՐՏ_10 = function ValueError() {
"in": function ՐՏ_in(val, arr) {
if (typeof arr.indexOf === "function") {
return arr.indexOf(val) !== -1;
} else if (typeof arr.has === "function") {
return arr.has(val);
}
return arr.hasOwnProperty(val);
},
Expand All @@ -509,13 +519,19 @@ var ValueError = (ՐՏ_10 = function ValueError() {
if (iterable.constructor === [].constructor || iterable.constructor === "".constructor || (tmp = Array.prototype.slice.call(iterable)).length) {
return tmp || iterable;
}
if (Set && iterable.constructor === Set) {
return Array.from(iterable);
}
return Object.keys(iterable);
},
"len": function len(obj) {
var tmp;
if (obj.constructor === [].constructor || obj.constructor === "".constructor || (tmp = Array.prototype.slice.call(obj)).length) {
return (tmp || obj).length;
}
if (Set && obj.constructor === Set) {
return obj.size;
}
return Object.keys(obj).length;
},
"map": function map(oper, arr) {
Expand Down
8 changes: 8 additions & 0 deletions lib/compile.js
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,8 @@ function hex(a) {
function ՐՏ_in(val, arr) {
if (typeof arr.indexOf === "function") {
return arr.indexOf(val) !== -1;
} else if (typeof arr.has === "function") {
return arr.has(val);
}
return arr.hasOwnProperty(val);
}
Expand All @@ -127,13 +129,19 @@ function ՐՏ_Iterable(iterable) {
if (iterable.constructor === [].constructor || iterable.constructor === "".constructor || (tmp = Array.prototype.slice.call(iterable)).length) {
return tmp || iterable;
}
if (Set && iterable.constructor === Set) {
return Array.from(iterable);
}
return Object.keys(iterable);
}
function len(obj) {
var tmp;
if (obj.constructor === [].constructor || obj.constructor === "".constructor || (tmp = Array.prototype.slice.call(obj)).length) {
return (tmp || obj).length;
}
if (Set && obj.constructor === Set) {
return obj.size;
}
return Object.keys(obj).length;
}
function map(oper, arr) {
Expand Down
10 changes: 9 additions & 1 deletion lib/rapydscript.js

Large diffs are not rendered by default.

8 changes: 8 additions & 0 deletions lib/self.js
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,8 @@ function hex(a) {
function ՐՏ_in(val, arr) {
if (typeof arr.indexOf === "function") {
return arr.indexOf(val) !== -1;
} else if (typeof arr.has === "function") {
return arr.has(val);
}
return arr.hasOwnProperty(val);
}
Expand All @@ -127,13 +129,19 @@ function ՐՏ_Iterable(iterable) {
if (iterable.constructor === [].constructor || iterable.constructor === "".constructor || (tmp = Array.prototype.slice.call(iterable)).length) {
return tmp || iterable;
}
if (Set && iterable.constructor === Set) {
return Array.from(iterable);
}
return Object.keys(iterable);
}
function len(obj) {
var tmp;
if (obj.constructor === [].constructor || obj.constructor === "".constructor || (tmp = Array.prototype.slice.call(obj)).length) {
return (tmp || obj).length;
}
if (Set && obj.constructor === Set) {
return obj.size;
}
return Object.keys(obj).length;
}
function map(oper, arr) {
Expand Down
8 changes: 8 additions & 0 deletions lib/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,8 @@ function hex(a) {
function ՐՏ_in(val, arr) {
if (typeof arr.indexOf === "function") {
return arr.indexOf(val) !== -1;
} else if (typeof arr.has === "function") {
return arr.has(val);
}
return arr.hasOwnProperty(val);
}
Expand All @@ -127,13 +129,19 @@ function ՐՏ_Iterable(iterable) {
if (iterable.constructor === [].constructor || iterable.constructor === "".constructor || (tmp = Array.prototype.slice.call(iterable)).length) {
return tmp || iterable;
}
if (Set && iterable.constructor === Set) {
return Array.from(iterable);
}
return Object.keys(iterable);
}
function len(obj) {
var tmp;
if (obj.constructor === [].constructor || obj.constructor === "".constructor || (tmp = Array.prototype.slice.call(obj)).length) {
return (tmp || obj).length;
}
if (Set && obj.constructor === Set) {
return obj.size;
}
return Object.keys(obj).length;
}
function map(oper, arr) {
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
"postversion": "git push && npm publish",
"build-self": "bin/rapydscript --self"
},
"version": "0.5.58",
"version": "0.5.59",
"license": "BSD-2-Clause",
"engines": {
"node": ">=0.12.0"
Expand Down
5 changes: 5 additions & 0 deletions src/baselib.pyj
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@
,
"in": def ՐՏ_in(val, arr):
if JS('typeof arr.indexOf') is 'function': return arr.indexOf(val) is not -1
elif JS('typeof arr.has') is 'function': return arr.has(val)
return arr.hasOwnProperty(val)
,
"iterable": def ՐՏ_Iterable(iterable):
Expand All @@ -112,6 +113,8 @@
or iterable.constructor is ''.constructor
or (tmp = Array.prototype.slice.call(iterable)).length:
return tmp or iterable
if Set and iterable.constructor is Set:
return Array.from(iterable)
return Object.keys(iterable) # so we can use 'for ... in' syntax with hashes
,
"len": def len(obj):
Expand All @@ -120,6 +123,8 @@
or obj.constructor is ''.constructor
or (tmp = Array.prototype.slice.call(obj)).length:
return (tmp or obj).length
if Set and obj.constructor is Set:
return obj.size
return Object.keys(obj).length
,
"map": def map(oper, arr):
Expand Down

0 comments on commit 442b20d

Please sign in to comment.