Mercurial > repos > rhope
comparison string.rhope @ 55:048046186d22
Started working on Slice@String
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Thu, 29 Apr 2010 01:47:10 -0400 |
parents | 079200bc3e75 |
children | d0ce696786cc |
comparison
equal
deleted
inserted
replaced
54:243d013a49cb | 55:048046186d22 |
---|---|
1 | |
2 Blueprint Null String | |
3 { | |
4 } | |
5 | |
6 Null String[:out(Null String)] | |
7 { | |
8 out <- Build[Null String()] | |
9 } | |
10 | |
11 Depth@Null String[in:out(Int32)] | |
12 { | |
13 out <- 0i32 | |
14 } | |
15 | |
16 Blueprint Base String | |
17 { | |
18 Buffer | |
19 Length(Int32,Naked) | |
20 } | |
21 | |
22 Print@Base String[string:out] | |
23 { | |
24 //TODO: Sanitize string (remove terminal escapes and replace invalid UTF) | |
25 write[1i32, [string]Buffer >>, Int64[[[string]Buffer >>]Length >>]] | |
26 { out <- write[1i32, [Array[1]]Append[10u8], 1i64] } | |
27 } | |
28 | 1 |
29 UTF8 Expect[num,arr,index,count,consumed:out] | 2 UTF8 Expect[num,arr,index,count,consumed:out] |
30 { | 3 { |
31 byte <- [arr]Index[index] | 4 byte <- [arr]Index[index] |
32 { | 5 { |
105 } | 78 } |
106 } | 79 } |
107 | 80 |
108 Blueprint String | 81 Blueprint String |
109 { | 82 { |
110 Left | 83 Buffer |
111 Right | |
112 L Offset(Int32,Naked) | |
113 L Length(Int32,Naked) | |
114 Depth(Int32,Naked) | |
115 Length(Int32,Naked) | 84 Length(Int32,Naked) |
116 } | 85 } |
117 | 86 |
118 String[in(Array):out(Base String)] | 87 String[in(Array):out(String)] |
119 { | 88 { |
120 out <- [[Build[Base String()]]Buffer <<[in]]Length <<[Count UTF8[in, 0, 0]] | 89 out <- [[Build[String()]]Buffer <<[in]]Length <<[Count UTF8[in, 0, 0]] |
90 } | |
91 | |
92 Print@String[string:out] | |
93 { | |
94 //TODO: Sanitize string (remove terminal escapes and replace invalid UTF) | |
95 write[1i32, [string]Buffer >>, Int64[[[string]Buffer >>]Length >>]] | |
96 { out <- write[1i32, [Array[1]]Append[10u8], 1i64] } | |
97 } | |
98 | |
99 Flatten@String[string:out] | |
100 { | |
101 out <- string | |
102 } | |
103 | |
104 Slice@String[string,slicepoint:left,right] | |
105 { | |
106 //TODO: Handle invalid slicepoints | |
107 left <- String Slice[string, 0i32, slicepoint] | |
108 right <- String Slice[string, slicepoint, [[string]Length >>]-[slicepoint]] | |
109 } | |
110 | |
111 Blueprint String Slice | |
112 { | |
113 Source | |
114 Offset(Int32,Naked) | |
115 Length(Int32,Naked) | |
116 } | |
117 | |
118 String Slice[source,offset,length:out(String Slice)] | |
119 { | |
120 out <- [[[Build[String Slice()]]Source <<[source]]Offset <<[offset]]Length <<[length] | |
121 } | 121 } |
122 | 122 |
123 | 123 |
124 |