changeset 55:048046186d22

Started working on Slice@String
author Mike Pavone <pavone@retrodev.com>
date Thu, 29 Apr 2010 01:47:10 -0400
parents 243d013a49cb
children 04baa003de5a
files string.rhope
diffstat 1 files changed, 34 insertions(+), 35 deletions(-) [+]
line wrap: on
line diff
--- a/string.rhope	Thu Apr 29 01:12:43 2010 -0400
+++ b/string.rhope	Thu Apr 29 01:47:10 2010 -0400
@@ -1,30 +1,3 @@
-
-Blueprint Null String
-{
-}
-
-Null String[:out(Null String)]
-{
-	out <- Build[Null String()]
-}
-
-Depth@Null String[in:out(Int32)]
-{
-	out <- 0i32
-}
-
-Blueprint Base String
-{
-	Buffer
-	Length(Int32,Naked)
-}
-
-Print@Base String[string:out]
-{	
-	//TODO: Sanitize string (remove terminal escapes and replace invalid UTF)
-	write[1i32, [string]Buffer >>, Int64[[[string]Buffer >>]Length >>]]
-	{ out <- write[1i32, [Array[1]]Append[10u8], 1i64] }
-}
 
 UTF8 Expect[num,arr,index,count,consumed:out]
 {
@@ -107,18 +80,44 @@
 
 Blueprint String
 {
-	Left
-	Right
-	L Offset(Int32,Naked)
-	L Length(Int32,Naked)
-	Depth(Int32,Naked)
+	Buffer
 	Length(Int32,Naked)
 }
 
-String[in(Array):out(Base String)]
+String[in(Array):out(String)]
+{
+	out <- [[Build[String()]]Buffer <<[in]]Length <<[Count UTF8[in, 0, 0]]
+}
+
+Print@String[string:out]
+{	
+	//TODO: Sanitize string (remove terminal escapes and replace invalid UTF)
+	write[1i32, [string]Buffer >>, Int64[[[string]Buffer >>]Length >>]]
+	{ out <- write[1i32, [Array[1]]Append[10u8], 1i64] }
+}
+
+Flatten@String[string:out]
 {
-	out <- [[Build[Base String()]]Buffer <<[in]]Length <<[Count UTF8[in, 0, 0]]
+	out <- string
+}
+
+Slice@String[string,slicepoint:left,right]
+{
+	//TODO: Handle invalid slicepoints
+	left <- String Slice[string, 0i32, slicepoint]
+	right <- String Slice[string, slicepoint, [[string]Length >>]-[slicepoint]]
+}
+
+Blueprint String Slice
+{
+	Source
+	Offset(Int32,Naked)	
+	Length(Int32,Naked)
+}
+
+String Slice[source,offset,length:out(String Slice)]
+{
+	out <- [[[Build[String Slice()]]Source <<[source]]Offset <<[offset]]Length <<[length]
 }
 
 
-