tools.dart 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. library tools;
  2. import 'dart:html';
  3. import 'package:event_bus/event_bus.dart';
  4. import 'package:dartson/transformers/date_time.dart';
  5. import 'package:dartson/dartson.dart';
  6. final codec = new Dartson.JSON();
  7. final EventBus bus = new EventBus();
  8. abstract class ChiEventListener{
  9. void listen(event);
  10. }
  11. Function listenerOf(ChiEventListener e){
  12. return (event){
  13. e.listen(event);
  14. };
  15. }
  16. void listenTo(ChiEventListener e){
  17. bus.on().listen(listenerOf(e));
  18. }
  19. //алиас для селектора, чтобы как в джыкуере
  20. final Function Q = (String s){
  21. if (s[0] != "#") print("possibly wrong selector $s");
  22. return querySelector(s);
  23. };
  24. class Tuple2<T1, T2> {
  25. T1 i1;
  26. T2 i2;
  27. Tuple2(this.i1, this.i2);
  28. String toString() => '[$i1, $i2]';
  29. int get hashCode {
  30. int result = 17;
  31. result = 37 * result + i1.hashCode;
  32. result = 37 * result + i2.hashCode;
  33. return result;
  34. }
  35. // You should generally implement operator == if you
  36. // override hashCode.
  37. bool operator ==(other) {
  38. if (other is! Tuple2) return false;
  39. Tuple2 t = other;
  40. return (t.i1 == i1 &&
  41. t.i2 == i2);
  42. }
  43. Tuple2.fromList(List l){
  44. i1 = l[0];
  45. i2 = l[1];
  46. }
  47. List toList(){
  48. return [i1, i2];
  49. }
  50. }
  51. void initTools(){
  52. print("init tools");
  53. codec.addTransformer(new DateTimeParser(), DateTime);
  54. }