Thanks to Daniel White <daniel@whitehouse.id.au> for the patch.
(defpsmacro chain (&rest method-calls)
(labels ((do-chain (method-calls)
(if (cdr method-calls)
- `((@ ,(do-chain (cdr method-calls)) ,(caar method-calls)) ,@(cdar method-calls))
+ (if (listp (car method-calls))
+ `((@ ,(do-chain (cdr method-calls)) ,(caar method-calls)) ,@(cdar method-calls))
+ `(@ ,(do-chain (cdr method-calls)) ,(car method-calls)))
(car method-calls))))
(do-chain (reverse method-calls))))
var _cmp1;
return (_cmp1 = 2, 1 < _cmp1 && _cmp1 < 3);
};")
+
+(test-ps-js chain-slot-value1
+ (chain ($ "foo") (bar x z) frob (baz 5))
+ "$('foo').bar(x, z).frob.baz(5);")
+
+(test-ps-js chain-slot-value2
+ (chain ($ "foo") bar baz)
+ "$('foo').bar.baz;")
+
+(test-ps-js chain-slot-value3
+ (chain ($ "foo") bar (x y) baz)
+ "$('foo').bar.x(y).baz;")