Commit a48b451a authored by Taddeüs Kroes's avatar Taddeüs Kroes

--sort now also sorts beyond the stem of a declaration for consistent results

parent f7c7c13c
...@@ -244,14 +244,26 @@ let is_color = Color_names.is_color ...@@ -244,14 +244,26 @@ let is_color = Color_names.is_color
(** Sorting declarations *) (** Sorting declarations *)
let sort_stylesheet = let sort_stylesheet =
let pattern = Str.regexp "^\\([^-]+\\)-\\(.*\\)$" in
transform_stylesheet begin function transform_stylesheet begin function
| Statement (Ruleset (selectors, decls)) -> | Statement (Ruleset (selectors, decls)) ->
let pattern = Str.regexp "^\\([^-]+\\)-" in let split x =
let stem x = if Str.string_match pattern x 0
if Str.string_match pattern x 0 then Str.matched_group 1 x else x then Some (Str.matched_group 1 x, Str.matched_group 2 x)
else None
in in
let cmp (a, _, _) (b, _, _) = String.compare (stem a) (stem b) in let rec cmp a b =
Statement (Ruleset (selectors, List.stable_sort cmp decls)) match split a, split b with
| Some (stem_a, tail_a), Some (stem_b, tail_b) ->
begin
match String.compare stem_a stem_b with
| 0 -> cmp tail_a tail_b
| n -> n
end
| _ -> String.compare a b
in
let cmp_decls (a, _, _) (b, _, _) = cmp a b in
Statement (Ruleset (selectors, List.stable_sort cmp_decls decls))
| v -> v | v -> v
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment