]> Repositorios git - scryer-prolog.git/commitdiff
replace adjacent whitespace characters with a single SPACE character
authorMarkus Triska <[email protected]>
Sun, 27 Aug 2023 10:55:29 +0000 (12:55 +0200)
committerMarkus Triska <[email protected]>
Sun, 27 Aug 2023 11:01:13 +0000 (13:01 +0200)
src/lib/xpath.pl

index 4ec012034bcee65142e32961b79e0973ced17a66..10f0fdef76edddb2dbbacaa9e84149fb3022238e 100644 (file)
@@ -642,7 +642,8 @@ normalize_space(Cs0, Cs) :-
         no_leading_whitespace(Cs0, Cs1),
         reverse(Cs1, Cs2),
         no_leading_whitespace(Cs2, Cs3),
-        reverse(Cs3, Cs).
+        reverse(Cs3, Cs4),
+        single_intermediate_space(Cs4, Cs).
 
 no_leading_whitespace([], []).
 no_leading_whitespace([C0|Cs0], Cs) :-
@@ -650,3 +651,13 @@ no_leading_whitespace([C0|Cs0], Cs) :-
             no_leading_whitespace(Cs0, Cs)
         ;   Cs = [C0|Cs0]
         ).
+
+single_intermediate_space([], []).
+single_intermediate_space([C0|Cs0], [C|Cs]) :-
+        (   char_type(C0, whitespace) ->
+            no_leading_whitespace(Cs0, Cs1),
+            C = ' ',
+            single_intermediate_space(Cs1, Cs)
+        ;   C = C0,
+            single_intermediate_space(Cs0, Cs)
+        ).