diff extendlib.vistxt @ 0:76568becd6d6

Rhope Alpha 2a source import
author Mike Pavone <pavone@retrodev.com>
date Tue, 28 Apr 2009 23:06:07 +0000
parents
children 6202b866d72c
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/extendlib.vistxt	Tue Apr 28 23:06:07 2009 +0000
@@ -0,0 +1,690 @@
+
+Val(1,1)
+|:
+	(0) <- (0)
+:|
+
+Map Helper(3,1)
+|:
+	newval <- [
+		[worker(2)]Do[  
+			[New@List[]]Append[ [list(0)]Index[index(1)] ]
+		]
+	]Index[0]
+	
+	[list(0)]Next[index(1)]
+	|:
+		out(0) <- [Map Helper[list(0), ~, worker(2)]]Set[index(1), newval]
+	:||:
+		out(0) <- [list(0)]Set[index(1), newval]
+	:|
+:|
+
+Map(2,1)
+|:
+	[list(0)]First
+	|:
+		out(0) <- Map Helper[list(0), ~, worker(1)]
+	:||:
+		out(0) <- list(0)
+	:|
+:|
+
+New Like@List(1,1)
+|:
+	out(0) <- New@List[]	
+:|
+
+New Like@Dictionary(1,1)
+|:
+	out(0) <- New@Dictionary[]
+:|
+
+Key Value Map Helper(4,1)
+|:
+	[worker(3)]Do[  
+		[[New@List[]]Append[ [list(0)]Index[index(1)] ]]Append[index(1)]
+	]
+	|:
+		newval <- [~]Index[0]
+		newkey <- [~]Index[1]
+	:|
+	
+	next <- [newlist(2)]Set[newkey, newval]
+	
+	[list(0)]Next[index(1)]
+	|:
+		out(0) <- Key Value Map Helper[list(0), ~, next, worker(3)]
+	:||:
+		out(0) <- Val[next]
+	:|
+:|
+
+Key Value Map(2,1)
+|:
+	[list(0)]First
+	|:
+		out(0) <- Key Value Map Helper[list(0), ~, New Like[list(0)], worker(1)]
+	:||:
+		out(0) <- New Like[list(0)]
+	:|
+:|
+
+Dict Split Helper(4,1)
+|:
+	If[ [i(2)] < [[list(0)]Length@List] ]
+	|:
+		keyval <- Split@String[ [list(0)]Index@List[i(2)], keydelim(1) ]
+		key <- [keyval]Index@List[0]
+		val <- [keyval]Index@List[1]
+		HelpOut(0) <- Dict Split Helper[ list(0), keydelim(1), [i(2)] + [1], [dict(3)]Set@Dictionary[key, val] ]
+	:||:
+		HelpOut(0) <- dict(3)
+	:|
+:|
+
+Dict Split(3,1)
+|:
+	Out(0) <- Dict Split Helper[ [string(0)]Split@String[entrydelim(2)] , keydelim(1), 0, New@Dictionary[]]
+:|
+
+In Helper(2,1)
+|:
+	
+	,out(0) <- If[ [[haystack(1)]Length] > [0] ]
+	|:
+		[haystack(1)]Slice[ [needle(0)]Length ]
+		|:
+			out(0) <- If[ [needle(0)] = [~] ]
+			|:
+			:||:
+				[haystack(1)]Slice[1]
+				|: :|
+				|:
+					out(0) <- In Helper[needle(0), ~]
+				:|
+			:|
+		:|
+	:|
+:|
+
+In(2,1)
+|:
+	,out(0) <- If[ [[needle(0)]Length] > [0] ]
+	|:
+		out(0) <- In Helper[needle(0), haystack(1)]
+	:|
+:|
+
+Left Trim(2,1)
+|:
+	If[ [[string(0)]Length] > [0] ]
+	|:
+		first,rest <- [string(0)]Slice[1]
+		If[ [first]In[trim(1)] ]
+		|:
+			trimmed(0) <- Left Trim[rest, trim(1)]
+		:||:
+			trimmed(0) <- string(0)
+		:|
+	:||:
+		trimmed(0) <- string(0)
+	:|
+:|
+
+Right Trim(2,1)
+|:
+	If[ [[string(0)]Length] > [0] ]
+	|:
+		rest,last <- [string(0)]Slice[ [[string(0)]Length] - [1]]
+		If[ [last]In[trim(1)] ]
+		|:
+			trimmed(0) <- Right Trim[rest, trim(1)]
+		:||:
+			trimmed(0) <- string(0)
+		:|
+	:||:
+		trimmed(0) <- string(0)
+	:|
+:|
+
+Trim(2,1)
+|:
+	left <- Left Trim[string(0), trim(1)]
+	trimmed(0) <- Right Trim[left, trim(1)]
+:|
+
+Max(2,1)
+|:
+	If[[(0)] > [(1)]]
+	|:
+		(0) <- (0)
+	:||:
+		(0) <- (1)
+	:|
+:|
+
+Count Substring(2,1)
+|:
+	out(0) <- Max[[[[string(0)]Split[sub(1)]]Length] - [1], 0]
+:|
+
+KeyVal Helper(5,1)
+|:
+	new string <- [[[string(4)]Append[key(1)]]Append[key sep(2)]]Append[ [container(0)]Index[key(1)] ]
+	[list(0)]Next[index(1)]
+	|:
+		out(0) <- KeyVal Helper[container(0), ~, key sep(2), val sep(3), [new string]Append[val sep(3)]]
+	:||:
+		out(0) <- Val[new string]
+	:|
+:|
+
+Key Value Join(3,1)
+|:
+	[container(0)]First
+	|:
+		out(0) <- KeyVal Helper[container(0), ~, key sep(1), val sep(2), ""]
+	:||:
+		out(0) <- ""
+	:|
+:|
+
+Combine Helper(3,1)
+|:
+	new dest <- [dest(1)]Set[key(2), [source(0)]Index[key(2)]]
+	[source(0)]Next[key(2)]
+	|:
+		out(0) <- Combine Helper[source(0), new dest, ~]
+	:||:
+		out(0) <- Val[new dest]
+	:|
+:|
+
+Combine(2,1)
+|:
+	[source(0)]First
+	|:
+		out(0) <- Combine Helper[source(0), dest(1), ~]
+	:||:
+		out(0) <- dest(1)
+	:|
+:|
+
+Fold Helper(4,1)
+|:
+	newval <- [
+		[worker(3)]Do[  
+			[[[New@List[]]Append[ start(2) ]]Append[ [list(0)]Index[index(1)] ]]Append[index(1)]
+		]
+	]Index[0]
+	
+	[list(0)]Next[index(1)]
+	|:
+		out(0) <- Fold Helper[list(0), ~, newval, worker(3)]
+	:||:
+		out(0) <- Val[newval]
+	:|
+:|
+
+Fold(3,1)
+|:
+	[list(2)]First
+	|:
+		out(0) <- Fold Helper[list(2), ~, start(1), worker(0)]
+	:||:
+		out(0) <- start(1)
+	:|
+:|
+
+Previous@List(2,2)
+|:
+	prev <- [index(1)] - [1]
+	If[[prev] < [0]]
+	|:
+		not found(1) <- list(0)
+	:||:
+		[list(0)]Index[prev]
+		|:
+			out(0) <- Val[prev]
+		:||:
+			out(0), not found(1) <- [list(0)]Previous@List[prev]
+		:|
+	:|	
+:|
+
+Last@List(1,2)
+|:
+	out(0), not found(1) <- [list(0)]Previous@List[[list(0)]Length]
+:|
+
+Reverse Fold Helper(4,1)
+|:
+	newval <- [
+		[worker(3)]Do[  
+			[[[New@List[]]Append[ start(2) ]]Append[ [list(0)]Index[index(1)] ]]Append[index(1)]
+		]
+	]Index[0]
+	
+	[list(0)]Previous[index(1)]
+	|:
+		out(0) <- Reverse Fold Helper[list(0), ~, newval, worker(3)]
+	:||:
+		out(0) <- Val[newval]
+	:|
+:|
+
+Reverse Fold(3,1)
+|:
+	[list(2)]Last
+	|:
+		out(0) <- Reverse Fold Helper[list(2), ~, start(1), worker(0)]
+	:||:
+		out(0) <- start(1)
+	:|
+:|
+
+Join Helper(4,1)
+|:
+	[list(0)]Next[index(3)]
+	|:
+		out(0) <- Join Helper[list(0), delim(1), [[current(2)]Append[delim(1)]]Append[[list(0)]Index[~]], ~]
+	:||:
+		out(0) <- current(2)
+	:|
+:|
+
+Join(2,1)
+|:
+	[list(0)]First
+	|:
+		out(0) <- Join Helper[list(0), delim(1), [list(0)]Index[~], ~]
+	:||:
+		out(0) <- ""
+	:|
+:|
+
+Replace(3,1)
+|:
+	replaced(0) <- [[string(0)]Split[find(1)]]Join[replace(2)]	
+:|
+
+Concatenate(2,1)
+|:
+	out(0) <- Fold[["Append"]<String@Worker, left(0), right(1)]
+:|
+
+Serialize@String(1,1)
+|:
+	out(0) <- [[[[[string(0)]Replace["\\","\\\\"]]Replace[",","\\c"]]Replace["\n","\\n"]]Replace["{","\\l"]]Replace["}","\\r"]
+:|
+
+Unserialize@String(1,1)
+|:
+	out(0) <- [[[[[string(0)]Replace["\\c",","]]Replace["\\n","\n"]]Replace["\\l","{"]]Replace["\\r","}"]]Replace["\\\\","\\"]
+:|
+
+Serialize@List(1,1)
+|:
+	out(0) <- [["{"]Append[[Map[list(0), ["Serialize"]<String@Worker]]Join[","]]]Append["}"]
+:|
+
+Starts With(2,1)
+|:
+	out(0) <- [[thing(0)]Slice[ [starts with(1)]Length ]] = [starts with(1)]
+:|
+
+Ends With(2,1)
+|:
+	,compare <- [thing(0)]Slice[ [[thing(0)]Length] - [[ends with (1)]Length] ]
+	out(0) <- [compare] = [ends with(1)]
+:|
+
+Unserialize Helper(3,3)
+|:
+	current <- [parts(0)]Index[index(1)]
+	If[[current]Starts With["{"]]
+	|:
+		,first <- [current]Slice[1]
+		list entry, index, bracketnum <- Unserialize Helper[ [parts(0)]Set[index(1), first], index(1), New@List[]]
+		If[[bracketnum] = [0]]
+		|:
+			[parts(0)]Next[index]
+			|:
+				out(0), index(1), bracketnum(2) <- Unserialize Helper[parts(0), ~, [destlist(2)]Append[list entry]]
+			:||:
+				out(0) <- [destlist(2)]Append[list entry]
+				index(1) <- index(1)
+				bracketnum(2) <- 0
+			:|
+		:||:
+			out(0) <- [destlist(2)]Append[list entry]
+			index(1) <- Val[index]
+			bracketnum(2) <- [bracketnum] - [1]
+		:|
+	:||:
+		If[[current]Ends With["}"]]
+		|:
+			parts <- [current]Split["}"]
+			entry <- [parts]Index[0]
+			If[[[entry]Length] = [0]]
+			|:
+				out(0) <- destlist(2)
+			:||:
+				out(0) <- [destlist(2)]Append[ [entry]Unserialize@String ]
+			:|
+			bracketnum(2) <- [[parts]Length] - [2]
+			index(1) <- index(1)
+		:||:
+			[parts(0)]Next[index(1)]
+			|:
+				out(0), index(1), bracketnum(2) <- Unserialize Helper[parts(0), ~, [destlist(2)]Append[[current]Unserialize@String]]
+			:||:
+				out(0) <- [destlist(2)]Append[[current]Unserialize@String]
+				index(1) <- index(1)
+				bracketnum(2) <- 0
+			:|
+		:|
+	:|		
+:|
+
+Generic Unserialize(1,1)
+|:
+	parts <- [serialized(0)]Split[","]
+	[parts]First
+	|:
+		out(0) <- Unserialize Helper[parts, ~, New@List[]]
+	:||:
+		out(0) <- New@List[]
+	:|
+:|
+
+_Object to Dict(4,1)
+|:
+	field <- [field list(1)]Index[index(2)]
+	[object(0)]Get Field[field]
+	|:
+		nextdict <- [dict(3)]Set[field, ~]
+	:||:
+		nextdict <- dict(3)
+	:|
+	[field list(1)]Next[index(2)]
+	|:
+		out(0) <- _Object to Dict[object(0), field list(1), ~, nextdict]
+	:||:
+		out(0) <- Val[nextdict]
+	:|
+:|
+
+Get Pretty Print Value(1,5)
+|:
+	If[[Type Of[value(0)]] = ["List"]]
+	|:
+		value(4) <- value(0)
+		list <- value(0)
+		object <- value(0)
+	:||:
+		If[[Type Of[value(0)]] = ["Dictionary"]]
+		|:
+			value(4) <- value(0)
+			list <- value(0)
+			object <- value(0)
+		:||:
+			If[[Type Of[value(0)]] = ["String"]]
+			|:
+				value(4) <- value(0)
+				print(0) <- value(0)
+				done(3) <- 1
+			:||:
+				If[[Type Of[value(0)]] = ["Whole Number"]]
+				|:
+					value(4) <- value(0)
+					print(0) <- value(0)
+					done(3) <- 1
+				:||:
+					If[[Type Of[value(0)]] = ["Yes No"]]
+					|:
+						value(4) <- value(0)
+						print(0) <- value(0)
+						done(3) <- 1
+					:||:
+						If[[Type Of[value(0)]] = ["Real Number"]]
+						|:
+							value(4) <- value(0)
+							print(0) <- value(0)
+							done(3) <- 1
+						:||:
+							object <- value(0)
+							fieldlist <- [Blueprint Of[value(0)]]Get Fields
+							[fieldlist]First
+							|:
+								list <- _Object to Dict[value(0), fieldlist, ~, New@Dictionary[]]
+								value(4) <- Val[list]
+							:||:
+								value(4) <- value(0)
+								done(3) <- 1
+							:|
+						:|
+					:|
+				:|
+			:|
+			
+		:|
+	:|
+	print(0) <- Type Of[object]
+	index(1) <- [list]First |::|
+	|:
+		print indent(2) <- "{Empty}"
+	:|
+	
+:|
+
+Pretty Print Helper(3,1)
+|:
+	newtabs <- [tabs(1)]Append["    "]
+	print,index,indented,done,value <- Get Pretty Print Value[[list(0)]Index[index(2)]]
+	Print[ [[[tabs(1)]Append[index(2)]]Append[": "]]Append[print] ]
+	|:
+		done <- Pretty Print Helper[value,newtabs ,index]
+		done <- Print[[newtabs]Append[indented]]
+		
+		Val[done]
+		|:
+			[list(0)]Next[index(2)]
+			|:
+				out(0) <- Pretty Print Helper[list(0), tabs(1), ~]
+			:||:
+				out(0) <- 1
+			:|
+		:|
+	:|
+	
+:|
+
+Pretty Print(2,1)
+|:
+	newtabs <- [tabs(1)]Append["    "]
+	,index,indented,,value <- Get Pretty Print Value[toprint(0)]
+	|:
+		Print[[tabs(1)]Append[~]]
+		|:
+			Pretty Print Helper[value,newtabs ,index]
+			Print[[newtabs]Append[indented]]
+		:|
+	:|
+	out(0) <- 1
+:|
+
+As List@String(1,1)
+|:
+	out(0) <- [New@List[]]Append[string(0)]
+:|
+
+As List@List(1,1)
+|:
+	(0) <- (0)
+:|
+
+Check Starts(3,1)
+|:
+	If[ [prev(1)] = [""] ]
+	|:
+		If[ [string(0)]Starts With[el(2)] ]
+		|:
+			out(0) <- el(2)
+		:||:
+			out(0) <- prev(1)
+		:|
+	:||:
+		out(0) <- prev(1)
+	:|
+:|
+
+_Get DString@String(2,4)
+|:
+	If[ [[string(0)]Length] = [0]]
+	|:
+		nomatch(3) <- Yes
+		before delim(1) <- ""
+	:||:
+		match <- Fold[["Check Starts"]Set Input[0, string(0)], "", delims(1)]
+		If[ [match] = [""] ]
+		|:
+			first,rest <- [string(0)]Slice[1]
+			rest(0),before,delim(2),nomatch(3) <- _Get DString@String[rest, delims(1)]
+			before delim(1) <- [first]Append[before]
+		:||:
+			junk,rest(0) <- [string(0)]Slice[ [match]Length ]
+			before delim(1) <- ""
+			delim(2) <- Val[match]
+		:|
+	:|
+:|
+
+//Get DString@String(2,4)
+//|:
+//	delims <- [delim(1)]As List
+//	rest(0), before delim(1), delim(2), nomatch(3) <- _Get DString@String[string(0), delims]
+//:|
+
+Filter Helper(4,1)
+|:
+	filter? <- [
+		[worker(2)]Do[  
+			[New@List[]]Append[ [list(0)]Index[index(1)] ]
+		]
+	]Index[0]
+	If[filter?]
+	|:
+		newlist <- [newlist(3)]Append[[list(0)]Index[index(1)]]
+	:||:
+		newlist <- newlist(3)
+	:|
+	
+	[list(0)]Next[index(1)]
+	|:
+		out(0) <- Filter Helper[list(0), ~, worker(2), newlist]
+	:||:
+		out(0) <- Val[newlist]
+	:|
+:|
+
+Filter(2,1)
+|:
+	[list(0)]First
+	|:
+		out(0) <- Filter Helper[list(0), ~, worker(1), New@List[]]
+	:||:
+		out(0) <- list(0)
+	:|
+:|
+
+Pop@List(1,1)
+|:
+	[list(0)]Last
+	|:
+		out(0) <- [list(0)]Remove[~]
+	:||:
+		out(0) <- list(0)
+	:|
+:|
+
+Peek@List(1,2)
+|:
+	[list(0)]Last
+	|:
+		out(0) <- [list(0)]Index[~]
+	:||:
+		empty(1) <- list(0)
+	:|
+:|
+
+Contains(2,1)
+|:
+	[haystack(0)]Get DString[needle(1)]
+	|:
+		out(0) <- Yes
+	:| |::| |::| |:
+		out(0) <- No
+	:|
+:|
+
+_Find(3,2)
+|:
+	If[[[haystack(0)]Index[index(2)]] = [needle(1)]]
+	|:
+		index(0) <- index(2)
+	:||:
+		[haystack(0)]Next[index(2)]
+		|:
+			index(0),notfound(1) <- _Find[haystack(0),needle(1),~]
+		:||:
+			notfound(1) <- needle(1)
+		:|	
+	:|
+:|
+
+Find(2,2)
+|:
+	[haystack(0)]First
+	|:
+		index(0),not found(1) <- _Find[haystack(0), needle(1), ~]
+	:||:
+		not found(1) <- needle(1)
+	:|
+
+:|
+
+_Tail(3,1)
+|:
+	[list(0)]Next[current(1)]
+	|:
+		out(0) <- _Tail[list(0), ~, [newlist(2)]Append[[list(0)]Index[~]]]
+	:||:
+		out(0) <- newlist(2)
+	:|
+:|
+
+Tail(2,1)
+|:
+	newlist <- [list(0)]New Like
+	[list(0)]Index[start(1)]
+	|:
+		out(0) <- _Tail[list(0), start(1), [newlist]Append[~]]
+	:||:
+		out(0) <- Val[newlist]
+	:|
+:|
+
+_Keys(3,1)
+|:
+	out(0) <- [list(0)]Append[key(2)]
+:|
+
+Keys(1,1)
+|:
+	out(0) <- Fold["_Keys", New@List[], container(0)]
+:|
+
+
+