Skip to content

Commit 1f46b5f

Browse files
committed
Fixed kwargs getting lost on sort and sorted functions
1 parent 70a2d41 commit 1f46b5f

File tree

2 files changed

+21
-15
lines changed

2 files changed

+21
-15
lines changed

transcrypt/modules/copy/__init__.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
export function __copy(isDeep, obj) {
2-
var result;
1+
function __copy(isDeep, obj) {
2+
let result;
33

44
// Handle primitives
55
if (obj === null || typeof obj !== "object") return obj;
@@ -14,7 +14,7 @@ export function __copy(isDeep, obj) {
1414
// Handle Array
1515
if (obj instanceof Array) {
1616
result = [];
17-
for (var i = 0, len = obj.length; i < len; i++) {
17+
for (let i = 0, len = obj.length; i < len; i++) {
1818
result[i] = isDeep ? __copy(isDeep, obj[i]) : obj[i];
1919
}
2020
return result;
@@ -23,7 +23,7 @@ export function __copy(isDeep, obj) {
2323
// Handle Object
2424
if (obj instanceof Object) {
2525
result = {};
26-
for (var attr in obj) {
26+
for (let attr in obj) {
2727
if (obj.hasOwnProperty(attr)) result[attr] = isDeep ? __copy(isDeep, obj[attr]) : obj[attr];
2828
}
2929
return result;

transcrypt/modules/org/transcrypt/__runtime__.py

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -103,24 +103,30 @@ class RuntimeWarning (Warning):
103103

104104
#__pragma__ ('kwargs')
105105

106-
def __sort__(iterable, key = None, reverse = False): # Used by py_sort, can deal with kwargs
106+
def _sort(iterable, key = None, reverse = False): # Used by py_sort and sorted, can deal with kwargs
107107
if key:
108108
iterable.sort (lambda a, b: 1 if key (a) > key (b) else -1) # JavaScript sort, case '==' is irrelevant for sorting
109109
else:
110-
iterable.sort (lambda a, b: 1 if a > b else -1) # JavaScript sort
111-
110+
iterable.sort (lambda a, b: 1 if a > b else -1) # JavaScript sort - key needed to properly sort non-string values
111+
112112
if reverse:
113113
iterable.reverse ()
114-
115-
def sorted(iterable, key = None, reverse = False):
116-
if type (iterable) == dict:
117-
result = _copy (iterable.keys ())
118-
else:
119-
result = _copy (iterable)
120-
121-
__sort__ (result, key, reverse)
114+
115+
116+
def sorted(iterable, *, key=None, reverse=False):
117+
if type(iterable) == dict:
118+
result = _copy(iterable.keys())
119+
else:
120+
result = _copy(iterable)
121+
122+
_sort(result, key, reverse)
122123
return result
123124

125+
126+
# Used by py_sort
127+
def __sort__(iterable, *, key=None, reverse=False):
128+
_sort(iterable, key, reverse)
129+
124130
#__pragma__ ('nokwargs')
125131

126132
def map(func, *iterables):

0 commit comments

Comments
 (0)