Skip to content

Commit 04c1ed9

Browse files
Maria-12648430vinoski
authored andcommitted
Fix line numbering in yaws_html
1 parent f9cb2a3 commit 04c1ed9

File tree

1 file changed

+45
-55
lines changed

1 file changed

+45
-55
lines changed

src/yaws_html.erl

Lines changed: 45 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,9 @@ tokenize([$<|R0], Acc, Tokens, L0) ->
107107
Data = {data,lists:reverse(Acc),L0},
108108
next_token(Tag, R1, [Tag,Data|Tokens], L1)
109109
end;
110-
tokenize([C=$\n|R0], Acc, Tokens, L) ->
111-
tokenize(R0, [C|Acc], Tokens, L+1);
112-
tokenize([C=$\r|R0], Acc, Tokens, L) ->
110+
tokenize([$\r,$\n|R0], Acc, Tokens, L) ->
111+
tokenize(R0, [$\n,$\r|Acc], Tokens, L+1);
112+
tokenize([C|R0], Acc, Tokens, L) when C=:=$\n; C=:=$\r ->
113113
tokenize(R0, [C|Acc], Tokens, L+1);
114114
tokenize([C|R0], Acc, Tokens, L) ->
115115
tokenize(R0, [C|Acc], Tokens, L).
@@ -183,31 +183,26 @@ scan_value(R, L) ->
183183

184184
scan_token([], Acc, L) ->
185185
{lists:reverse(Acc), [], L};
186-
scan_token(R=[$>|_], Acc, L) ->
187-
{lists:reverse(Acc), R, L};
188-
scan_token(R=[$<|_], Acc, L) -> %%% bad html
186+
scan_token([$\r,$\n|R], Acc, L) ->
187+
{lists:reverse(Acc), R, L+1};
188+
scan_token([C|R], Acc, L) when C=:=$\n; C=:=$\r ->
189+
{lists:reverse(Acc), R, L+1};
190+
scan_token([C|R], Acc, L) when C=:=$\s; C=:=$\t ->
189191
{lists:reverse(Acc), R, L};
190-
scan_token(R=[$=|_], Acc, L) -> %% bad html
192+
scan_token(R=[C|_], Acc, L) when C=:=$>; C=:=$<; C=:=$= ->
191193
{lists:reverse(Acc), R, L};
192-
scan_token([C|R], Acc, L0) ->
193-
case char_class(C) of
194-
space ->
195-
{lists:reverse(Acc), R, L0};
196-
nl ->
197-
{lists:reverse(Acc), R, L0+1};
198-
_ ->
199-
scan_token(R, [C|Acc], L0)
200-
end.
194+
scan_token([C|R], Acc, L) ->
195+
scan_token(R, [C|Acc], L).
201196

202197
%%
203198

204199
scan_quote([], Acc, _Q, L) ->
205200
{lists:reverse(Acc), [], L};
206201
scan_quote([Q|R], Acc, Q, L) ->
207202
{lists:reverse(Acc), R, L};
208-
scan_quote([C=$\n|R], Acc, Q, L) ->
209-
scan_quote(R, [C|Acc], Q, L+1);
210-
scan_quote([C=$\r|R], Acc, Q, L) ->
203+
scan_quote([$\r,$\n|R], Acc, Q, L) ->
204+
scan_quote(R, [$\n,$\r|Acc], Q, L+1);
205+
scan_quote([C|R], Acc, Q, L) when C=:=$\n; C=:=$\r ->
211206
scan_quote(R, [C|Acc], Q, L+1);
212207
scan_quote([C|R], Acc, Q, L) ->
213208
scan_quote(R, [C|Acc], Q, L).
@@ -219,6 +214,10 @@ scan_endtag(R, Tag, L) ->
219214

220215
scan_endtag([], _Tag, Acc, L) ->
221216
{lists:reverse(Acc), [], L};
217+
scan_endtag([$\r,$\n|R], Tag, Acc, L) ->
218+
scan_endtag(R, Tag, [$\n,$\r|Acc], L+1);
219+
scan_endtag([C|R], Tag, Acc, L) when C=:=$\n; C=:=$\r ->
220+
scan_endtag(R, Tag, [C|Acc], L+1);
222221
scan_endtag(R=[$<,$/|R0], Tag, Acc, L0) ->
223222
case casecmp(Tag, R0) of
224223
{true, R1} ->
@@ -231,54 +230,45 @@ scan_endtag(R=[$<,$/|R0], Tag, Acc, L0) ->
231230
false ->
232231
scan_endtag(R0, Tag, Acc, L0)
233232
end;
234-
scan_endtag([C=$\n|R], Tag, Acc, L) ->
235-
scan_endtag(R, Tag, [C|Acc], L+1);
236-
scan_endtag([C=$\r|R], Tag, Acc, L) ->
237-
scan_endtag(R, Tag, [C|Acc], L+1);
238233
scan_endtag([C|R], Tag, Acc, L) ->
239234
scan_endtag(R, Tag, [C|Acc], L).
240235

241236
%%
242237

243-
casecmp([], R) -> {true, R};
244-
casecmp([C1|T1], [C2|T2]) ->
245-
C2low = lowercase_ch(C2),
246-
if C1 == C2low -> casecmp(T1,T2);
247-
true -> false
248-
end.
238+
casecmp([], R) ->
239+
{true, R};
240+
casecmp([C|T1], [C|T2]) ->
241+
casecmp(T1, T2);
242+
casecmp([C1|T1], [C2|T2]) when C1>=$a, C1=<$z, C1=:=(C2-$A+$a) ->
243+
casecmp(T1, T2);
244+
casecmp([C1|T1], [C2|T2]) when C2>=$a, C2=<$z, C2=:=(C1-$A+$a) ->
245+
casecmp(T1, T2);
246+
casecmp(_L1, _L2) ->
247+
false.
249248

250249
%%
251250

252-
char_class($\n) -> nl;
253-
char_class($\r) -> nl;
254-
char_class($ ) -> space;
255-
char_class($\t) -> space;
256-
char_class(C) when C >= $a, C =< $z -> alpha;
257-
char_class(C) when C >= $A, C =< $Z -> alpha;
258-
char_class(C) when C >= $0, C =< $9 -> digit;
259-
char_class(_C) -> other.
251+
skip_space([$\r,$\n|R], L) ->
252+
skip_space(R, L+1);
253+
skip_space([C|R], L) when C=:=$\n; C=:=$\r ->
254+
skip_space(R, L+1);
255+
skip_space([C|R], L) when C=:=$\s; C=:=$\t ->
256+
skip_space(R, L);
257+
skip_space(R, L) ->
258+
{R, L}.
260259

261260
%%
262261

263-
skip_space([], L) ->
262+
skip_comment([], L) ->
264263
{[], L};
265-
skip_space(R = [C|R0], L) ->
266-
case char_class(C) of
267-
nl ->
268-
skip_space(R0, L+1);
269-
space ->
270-
skip_space(R0, L);
271-
_ ->
272-
{R, L}
273-
end.
274-
275-
%%
276-
277-
skip_comment([], L) -> {[], L};
278-
skip_comment([$-,$-,$>|R],L) -> {R,L};
279-
skip_comment([$\n|R],L) -> skip_comment(R,L+1);
280-
skip_comment([$\r|R],L) -> skip_comment(R,L+1);
281-
skip_comment([_C|R],L) -> skip_comment(R,L).
264+
skip_comment([$-, $-, $>|R], L) ->
265+
{R, L};
266+
skip_comment([$\r,$\n|R], L) ->
267+
skip_comment(R, L+1);
268+
skip_comment([C|R], L) when C=:=$\n; C=:=$\r ->
269+
skip_comment(R, L+1);
270+
skip_comment([_C|R], L) ->
271+
skip_comment(R, L).
282272

283273
%%
284274

0 commit comments

Comments
 (0)