# HG changeset patch # User Mike Pavone # Date 1272520030 14400 # Node ID 048046186d22b8e9438be6ed09ac3d87d94aee0c # Parent 243d013a49cbf076dea351533867029134e7796e Started working on Slice@String diff -r 243d013a49cb -r 048046186d22 string.rhope --- 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] } -