changeset 164:75be44ed9df5

Dict improvements
author Mike Pavone <pavone@retrodev.com>
date Sat, 10 Aug 2013 22:26:26 -0700
parents f594e6836c44
children fe816637fcc4
files modules/dict.tp
diffstat 1 files changed, 18 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/modules/dict.tp	Sat Aug 10 19:09:22 2013 -0700
+++ b/modules/dict.tp	Sat Aug 10 22:26:26 2013 -0700
@@ -10,10 +10,10 @@
 		els <- #[]
 		find <- :tofind {
 			idx <- 0
-			while: { 
-				if: idx < (els length) { 
+			while: {
+				if: idx < (els length) {
 					((els get: idx) key: ) != tofind
-				} else: {false} 
+				} else: {false}
 			} do: {
 				idx <- idx + 1
 			}
@@ -29,11 +29,11 @@
 				}
 				self
 			}
-			
+
 			get <- :k {
 				get: k withDefault: false
 			}
-			
+
 			get:withDefault <- :k default {
 				idx <- find: k
 				if: idx < 0 {
@@ -42,13 +42,25 @@
 					(els get: idx) val
 				}
 			}
-			
+
+			get:elseSet <- :k :else {
+				idx <- find: k
+				if: idx < 0 {
+					v <- else:
+					els append: (key: k val: v)
+					v
+				} else: {
+					(els get: idx) val
+				}
+			}
+
 			foreach <- :l {
 				foreach: els :idx el {
 					l: (el key) (el val)
 				}
 			}
 
+			length <- { els length }
 		}
 	}