On Saturday, 4 January 2014 at 19:26:50 UTC, Gary Willoughby wrote:
Got it!

opDispatch rox, and there's all kinds of crazy stuff you can do with it. In my dom.d, I used it for three things:

https://github.com/adamdruppe/misc-stuff-including-D-programming-language-web-stuff/blob/master/dom.d

1) easy access to attributes (node.href = "dlang.org"; and auto href = node.href;) using the technique you just showed.

2) the style stuff, which does a little rewriting:

node.style.marginLeft = "10px"; -> adds "margin-left: 10px;" to the style attribute

3) Forwarding collections:

document[".cool"].addClass("cool2");

uses opDispatch to forward any method to the collection without me writing much boilerplate code.


This is also nice for calling external dynamic apis, you can use opDispatch to forward over a network call or something like that.



I also used it in my jsvar.d file to make a var type in D, very similar to in Javascript:

https://github.com/adamdruppe/misc-stuff-including-D-programming-language-web-stuff/blob/master/jsvar.d

var a = var.emptyObject;
a.cool = { writeln("hello world!"); }
a.cool()(); // double parens needed due to broken @property

a.bar = 10;
writeln(a.bar); // works

and so on. D rox so much.

Reply via email to