Mercurial > repos > rhope
annotate countstring.rhope @ 145:357f4ce3ca6d
Add incredibly ugly implementation of Read Delim to TCP Connection
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 21 Nov 2010 22:08:17 -0500 |
parents | 0a4682be2db2 |
children |
rev | line source |
---|---|
2 | 1 |
2 Blueprint Count String | |
3 { | |
4 Text | |
5 Line | |
6 Column | |
7 } | |
8 | |
9 Count String[text:out] | |
10 { | |
11 out <- Count String At Pos[text, 0, 0] | |
12 } | |
13 | |
14 Count String At Pos[text,line,col:out] | |
15 { | |
131
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
16 out <- [[[Build[Count String()]]Text <<[text]]Line <<[line]]Column <<[col] |
2 | 17 } |
18 | |
19 Slice@Count String[string,index:left,right] | |
20 { | |
21 | |
22 If[[index] = [0]] | |
23 { | |
24 left <- [string]Text <<[""] | |
25 right <- Val[string] | |
26 }{ | |
27 ltext,rtext <- [[string]Text >>]Slice[index] | |
28 left <- [string]Text <<[ltext] | |
29 parts <- [ltext]Split["\n"] | |
30 last line <- [[parts]Length] - [1] | |
31 rline <- [[string]Line >>] + [last line] | |
32 prercol <- [[parts]Index[last line]]Length | |
33 If[[last line] > [0]] | |
34 { | |
35 rcol <- Val[prercol] | |
36 }{ | |
37 rcol <- [prercol] + [[string]Column >>] | |
38 } | |
39 right <- Count String At Pos[rtext, rline, rcol] | |
40 } | |
41 } | |
42 | |
43 Length@Count String[string:out] | |
44 { | |
45 out <- Length[[string]Text >>] | |
46 } | |
47 | |
131
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
48 Byte Length@Count String[string:out] |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
49 { |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
50 out <- Byte Length[[string]Text >>] |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
51 } |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
52 |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
53 Byte@Count String[string,index:out,invalid] |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
54 { |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
55 out,invalid <- Byte[[string]Text >>, index] |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
56 } |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
57 |
2 | 58 Append@Count String[left,right:out] |
59 { | |
60 If[[[left]Length] > [0]] | |
61 { | |
131
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
62 out <- [left]Text << [ [String[left]]Append[String[right]] ] |
2 | 63 }{ |
64 out <- right | |
65 } | |
66 } | |
67 | |
68 =@Count String[left,right:out] | |
69 { | |
131
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
70 out <- [String[left]] = [String[right]] |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
71 } |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
72 |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
73 _Slice=@Count String[left,right:out] |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
74 { |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
75 out <- _Slice=[String[left], String[right]] |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
76 } |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
77 |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
78 _Flat=@Count String[left,right:out] |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
79 { |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
80 out <- _Flat=[String[left], String[right]] |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
81 } |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
82 |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
83 _Flatten@Count String[string,dest,offset,count:out] |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
84 { |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
85 out <- _Flatten[[string]Text >>, dest, offset, count] |
2 | 86 } |
87 | |
131
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
88 /*Partition@Count String[string, delims:before,delim,after,nomatch] |
2 | 89 { |
131
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
90 ,delim,,nomatch <- [[string]Text >>]Partition[delims] |
2 | 91 { |
131
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
92 before <- [string]Text <<[~] |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
93 bparts <- [~]Split["\n"] |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
94 preblines <- [[bparts]Length] - [1] |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
95 If[[preblines] > [-1]] |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
96 { |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
97 blines <- Val[preblines] |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
98 bcols <- Length[[bparts]Index[blines]] |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
99 }{ |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
100 bcols <- 0 |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
101 blines <- 0 |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
102 } |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
103 }{ |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
104 dparts <- [~]Split["\n"] |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
105 dlines <- [[dparts]Length]-[1] |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
106 dcols <- Length[[dparts]Index[dlines]] |
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
107 }{ |
2 | 108 If[[dlines] > [0]] |
109 { | |
110 cols <- Val[dcols] | |
111 }{ | |
112 If[[blines] > [0]] | |
113 { | |
114 cols <- [bcols] + [dcols] | |
115 }{ | |
116 cols <- [[bcols] + [dcols]] + [[string]Column >>] | |
117 } | |
118 } | |
119 after <- Count String At Pos[~, [[blines]+[dlines]] + [[string]Line >>], cols] | |
120 } | |
131
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
121 }*/ |
2 | 122 |
131
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
123 String@Count String[string:out] |
2 | 124 { |
125 out <- [string]Text >> | |
126 } | |
127 | |
128 Empty@Count String[string:out] | |
129 { | |
130 out <- Count String[""] | |
131 } | |
131
0a4682be2db2
Modify lexer and new parser to work in compiler
Mike Pavone <pavone@retrodev.com>
parents:
2
diff
changeset
|
132 |