OLD | NEW |
| (Empty) |
1 // Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file | |
2 // for details. All rights reserved. Use of this source code is governed by a | |
3 // BSD-style license that can be found in the LICENSE.md file. | |
4 | |
5 // Construction and transformation utilities. | |
6 | |
7 import 'todomvc_presenter_model.dart'; | |
8 | |
9 Bool truth(bool value, [previous]) => | |
10 (previous is Bool && previous.value == value) ? previous : new Bool(value); | |
11 | |
12 Str str(String value, [previous]) => | |
13 (previous is Str && previous.value == value) ? previous : new Str(value); | |
14 | |
15 Nil nil([previous]) => (previous is Nil) ? previous : new Nil(); | |
16 | |
17 Cons cons(fst, snd, [deleteEvent, completeEvent, uncompleteEvent, previous]) { | |
18 if (previous is Cons) { | |
19 bool equal = true; | |
20 if (fst == previous.fst) { | |
21 fst = previous.fst; | |
22 } else { | |
23 equal = false; | |
24 } | |
25 if (snd == previous.snd) { | |
26 snd = previous.snd; | |
27 } else { | |
28 equal = false; | |
29 } | |
30 if (deleteEvent == previous.deleteEvent) { | |
31 deleteEvent = previous.deleteEvent; | |
32 } else { | |
33 equal = false; | |
34 } | |
35 if (completeEvent == previous.completeEvent) { | |
36 completeEvent = previous.completeEvent; | |
37 } else { | |
38 equal = false; | |
39 } | |
40 if (uncompleteEvent == previous.uncompleteEvent) { | |
41 uncompleteEvent = previous.uncompleteEvent; | |
42 } else { | |
43 equal = false; | |
44 } | |
45 if (equal) { | |
46 return previous; | |
47 } | |
48 } | |
49 return new Cons(fst, snd, deleteEvent, completeEvent, uncompleteEvent); | |
50 } | |
51 | |
52 Immutable getConsFst(Immutable node) => (node is Cons) ? node.fst : null; | |
53 Immutable getConsSnd(Immutable node) => (node is Cons) ? node.snd : null; | |
OLD | NEW |