diff --git a/generator/generate b/generator/generate index 30dc3505c141f832675b4dc2b843d7de70a772cf..9e39283b1c8f572dff0fd8e48cf4ae48d593cdca 100755 Binary files a/generator/generate and b/generator/generate differ diff --git a/generator/lexer.mll b/generator/lexer.mll index 0f5bebb53d54958c765d5bab029487576e72732c..9b9a8273fec202c59ede3178be3e9c0844d46a63 100755 --- a/generator/lexer.mll +++ b/generator/lexer.mll @@ -254,13 +254,18 @@ and text e = parse { major; minor; patch } (* compares both old-style (YYYYMMDD) and new-style numbering (MAJOR.MINOR) - note: codenames are only used in case of equality + note: codenames are only used for old versions or in case of equality *) let compare_version v1 v2 cn1 cn2 = - let re_old_numbering = Str.regexp "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9].*" in + let re_old_numbering = Str.regexp ".*\\([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\\)" in let is_old_numbering v = Str.string_match re_old_numbering v 0 in - match is_old_numbering v1, is_old_numbering v2 with - | true, true -> String.compare v2 v1 + let get_old_version v = + let v = String.map (fun c -> if c = '_' then '-' else c) v in + assert(Str.string_match re_old_numbering v 0) ; + Str.matched_group 1 v + in + match is_old_numbering cn1, is_old_numbering cn2 with + | true, true -> String.compare (get_old_version cn2) (get_old_version cn1) | false, true -> (* new numbering is always newer *) -1 | true, false -> (* old numbering is always older *) 1 | false, false -> (* compare new-style versions *)