Mercurial > repos > tabletprog
comparison modules/dict.tp @ 171:869399ff7faa
Merge
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 13 Aug 2013 22:01:00 -0700 |
parents | 75be44ed9df5 |
children | a868a2aec930 |
comparison
equal
deleted
inserted
replaced
170:18598163e3ef | 171:869399ff7faa |
---|---|
8 } | 8 } |
9 } | 9 } |
10 els <- #[] | 10 els <- #[] |
11 find <- :tofind { | 11 find <- :tofind { |
12 idx <- 0 | 12 idx <- 0 |
13 while: { | 13 while: { |
14 if: idx < (els length) { | 14 if: idx < (els length) { |
15 ((els get: idx) key: ) != tofind | 15 ((els get: idx) key: ) != tofind |
16 } else: {false} | 16 } else: {false} |
17 } do: { | 17 } do: { |
18 idx <- idx + 1 | 18 idx <- idx + 1 |
19 } | 19 } |
20 if: idx < (els length) {idx} else: {-1} | 20 if: idx < (els length) {idx} else: {-1} |
21 } | 21 } |
27 } else: { | 27 } else: { |
28 (els get: idx) val!: v | 28 (els get: idx) val!: v |
29 } | 29 } |
30 self | 30 self |
31 } | 31 } |
32 | 32 |
33 get <- :k { | 33 get <- :k { |
34 get: k withDefault: false | 34 get: k withDefault: false |
35 } | 35 } |
36 | 36 |
37 get:withDefault <- :k default { | 37 get:withDefault <- :k default { |
38 idx <- find: k | 38 idx <- find: k |
39 if: idx < 0 { | 39 if: idx < 0 { |
40 default | 40 default |
41 } else: { | 41 } else: { |
42 (els get: idx) val | 42 (els get: idx) val |
43 } | 43 } |
44 } | 44 } |
45 | 45 |
46 get:elseSet <- :k :else { | |
47 idx <- find: k | |
48 if: idx < 0 { | |
49 v <- else: | |
50 els append: (key: k val: v) | |
51 v | |
52 } else: { | |
53 (els get: idx) val | |
54 } | |
55 } | |
56 | |
46 foreach <- :l { | 57 foreach <- :l { |
47 foreach: els :idx el { | 58 foreach: els :idx el { |
48 l: (el key) (el val) | 59 l: (el key) (el val) |
49 } | 60 } |
50 } | 61 } |
51 | 62 |
63 length <- { els length } | |
52 } | 64 } |
53 } | 65 } |
54 | 66 |
55 } | 67 } |