Rev 8728 | Rev 9180 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 8728 | Rev 9174 | ||
---|---|---|---|
Line 27... | Line 27... | ||
27 | CONST |
27 | CONST |
Line 28... | Line 28... | ||
28 | 28 | ||
29 | CR = 0DX; LF = 0AX; TAB = 9X; SPACE = 20X; |
29 | CR = 0DX; LF = 0AX; TAB = 9X; SPACE = 20X; |
Line 30... | Line -... | ||
30 | BOM = 0FEFFX; |
- | |
31 | - | ||
32 | TAB_SIZE* = 4; |
30 | BOM = 0FEFFX; |
Line 33... | Line 31... | ||
33 | 31 | ||
Line 34... | Line 32... | ||
34 | BUF_SIZE = 65536; |
32 | BUF_SIZE = 65536; |
Line 164... | Line 162... | ||
164 | PROCEDURE getCharUTF16LE (file: tInput): INTEGER; |
162 | PROCEDURE getCharUTF16LE (file: tInput): INTEGER; |
165 | RETURN getByte(file) + getByte(file) * 256 |
163 | RETURN getByte(file) + getByte(file) * 256 |
166 | END getCharUTF16LE; |
164 | END getCharUTF16LE; |
Line 167... | Line 165... | ||
167 | 165 | ||
168 | 166 | ||
169 | PROCEDURE getString* (file: tInput; line: Lines.tLine; VAR eol: BOOLEAN): INTEGER; |
167 | PROCEDURE getString* (file: tInput; line: Lines.tLine; tabs: BOOLEAN; VAR eol: BOOLEAN): INTEGER; |
170 | VAR |
168 | VAR |
171 | c: WCHAR; |
169 | c: WCHAR; |
172 | i, L, k, n: INTEGER; |
170 | i, L, k, n: INTEGER; |
Line 176... | Line 174... | ||
176 | eol := FALSE; |
174 | eol := FALSE; |
177 | n := 0; |
175 | n := 0; |
178 | i := ORD(file.cnt > 0) - 1; |
176 | i := ORD(file.cnt > 0) - 1; |
179 | WHILE (file.cnt > 0) & ~eol DO |
177 | WHILE (file.cnt > 0) & ~eol DO |
180 | c := WCHR(file.getChar(file) MOD 65536); |
178 | c := WCHR(file.getChar(file) MOD 65536); |
- | 179 | IF c = Lines.TAB1 THEN |
|
- | 180 | c := SPACE |
|
- | 181 | END; |
|
181 | IF c = CR THEN |
182 | IF c = CR THEN |
182 | eol := TRUE; |
183 | eol := TRUE; |
183 | file.CR := TRUE |
184 | file.CR := TRUE |
184 | ELSIF (c = LF) OR (c = 0X) THEN |
185 | ELSIF (c = LF) OR (c = 0X) THEN |
185 | IF ~file.CR THEN |
186 | IF ~file.CR THEN |
186 | eol := TRUE |
187 | eol := TRUE |
187 | END; |
188 | END; |
188 | file.CR := FALSE |
189 | file.CR := FALSE |
189 | ELSIF c = TAB THEN |
190 | ELSIF c = TAB THEN |
190 | k := TAB_SIZE - i MOD TAB_SIZE; |
191 | k := Lines.tab - i MOD Lines.tab; |
- | 192 | IF tabs THEN |
|
- | 193 | s[i] := TAB |
|
- | 194 | ELSE |
|
- | 195 | s[i] := SPACE |
|
- | 196 | END; |
|
- | 197 | INC(i); |
|
- | 198 | DEC(k); |
|
191 | WHILE k > 0 DO |
199 | WHILE k > 0 DO |
- | 200 | IF tabs THEN |
|
- | 201 | s[i] := Lines.TAB1 |
|
- | 202 | ELSE |
|
192 | s[i] := SPACE; |
203 | s[i] := SPACE |
- | 204 | END; |
|
193 | INC(i); |
205 | INC(i); |
194 | IF i = L THEN |
206 | IF i = L THEN |
195 | Lines.concat(line, s); |
207 | Lines.concat(line, s); |
196 | INC(n, i); |
208 | INC(n, i); |
197 | i := 0 |
209 | i := 0 |
Line 352... | Line 364... | ||
352 | 364 | ||
353 | 365 | ||
354 | PROCEDURE putString* (file: tOutput; line: Lines.tLine; n: INTEGER): INTEGER; |
366 | PROCEDURE putString* (file: tOutput; line: Lines.tLine; n: INTEGER): INTEGER; |
- | 367 | VAR |
|
- | 368 | i: INTEGER; |
|
355 | VAR |
369 | c: WCHAR; |
356 | i: INTEGER; |
370 | err: BOOLEAN; |
- | 371 | BEGIN |
|
- | 372 | i := 0; |
|
- | 373 | err := FALSE; |
|
- | 374 | WHILE (i < n) & ~err DO |
|
357 | BEGIN |
375 | c := Lines.getChar(line, i); |
- | 376 | IF c # Lines.TAB1 THEN |
|
- | 377 | IF ~file.putChar(file, ORD(c)) THEN |
|
- | 378 | err := TRUE; |
|
- | 379 | DEC(i) |
|
358 | i := 0; |
380 | END |
359 | WHILE (i < n) & file.putChar(file, ORD(Lines.getChar(line, i))) DO |
381 | END; |
360 | INC(i) |
382 | INC(i) |
361 | END |
383 | END |