library tools; import 'dart:html'; import 'package:event_bus/event_bus.dart'; import 'package:dartson/transformers/date_time.dart'; import 'package:dartson/dartson.dart'; final codec = new Dartson.JSON(); final EventBus bus = new EventBus(); abstract class ChiEventListener{ void listen(event); } Function listenerOf(ChiEventListener e){ return (event){ e.listen(event); }; } void listenTo(ChiEventListener e){ bus.on().listen(listenerOf(e)); } //алиас для селектора, чтобы как в джыкуере final Function Q = (String s){ if (s[0] != "#") print("possibly wrong selector $s"); return querySelector(s); }; class Tuple2 { T1 i1; T2 i2; Tuple2(this.i1, this.i2); String toString() => '[$i1, $i2]'; int get hashCode { int result = 17; result = 37 * result + i1.hashCode; result = 37 * result + i2.hashCode; return result; } // You should generally implement operator == if you // override hashCode. bool operator ==(other) { if (other is! Tuple2) return false; Tuple2 t = other; return (t.i1 == i1 && t.i2 == i2); } Tuple2.fromList(List l){ i1 = l[0]; i2 = l[1]; } List toList(){ return [i1, i2]; } } void initTools(){ print("init tools"); codec.addTransformer(new DateTimeParser(), DateTime); }