From 6c90555ebb89f41cc4dfb6cf3ee6bfaa8107650e Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Thu, 4 Jun 2020 03:02:40 +0000 Subject: CTAN sync 202006040302 --- indexing/xindex/lualatex/xindex-lib.lua | 88 ++++++++++++++++++++------------- 1 file changed, 55 insertions(+), 33 deletions(-) (limited to 'indexing/xindex/lualatex/xindex-lib.lua') diff --git a/indexing/xindex/lualatex/xindex-lib.lua b/indexing/xindex/lualatex/xindex-lib.lua index 8e480866c8..720d473d53 100644 --- a/indexing/xindex/lualatex/xindex-lib.lua +++ b/indexing/xindex/lualatex/xindex-lib.lua @@ -7,7 +7,7 @@ ----------------------------------------------------------------------- if not modules then modules = { } end modules ['xindex-lib'] = { - version = 0.22, + version = 0.23, comment = "main library to xindex.lua", author = "Herbert Voss", copyright = "Herbert Voss", @@ -569,43 +569,15 @@ function GenerateSortKeys(Index) end end -function UTFCompare(a,b) --- a, b are something like \indexentry{foo}{bar} --- writeLog(1,"UTFCompare: "..a["Entry"]..", "..a["pages"][1]["number"].." - "..b["Entry"]..", "..b["pages"][1]["number"].."\n",2) --- k = k + 1 --- if (k % 50) == 0 then writeLog(1,".",1) end - +function UTFCompare(a,b) local A = a["SortKey"] local B = b["SortKey"] - writeLog(1,"UTFCompare: A--B "..A.."--"..B.."\n",2) --- print(A,B) ---[[ - if A == B then -- same entry, use also page number - Apage = string.format("%09s",a["pages"][1]["number"]) - Bpage = string.format("%09s",b["pages"][1]["number"]) - A = string.format("%-90s",A)..Apage - B = string.format("%-90s",B)..Bpage - end - if numericPage then - if tonumber(a["pages"][1]["number"]) then - Apage = string.format("%09d",a["pages"][1]["number"]) - else - Apage = string.format("%09d",romanToNumber(a["pages"][1]["number"])) - end - if tonumber(b["pages"][1]["number"]) then - Bpage = string.format("%09d",b["pages"][1]["number"]) - else - Bpage = string.format("%09d",romanToNumber(b["pages"][1]["number"])) - end + if use_UCA then + return collator_obj:compare_strings(A,B) else - Apage = string.format("%09s",a["pages"][1]["number"]) - Bpage = string.format("%09s",b["pages"][1]["number"]) + return A 0 then + local codes, pos = collator_obj:get_lowest_char(codepoints, 1) + if not codes then + -- if the first character in the sort key doesn't return letter + -- continue until we find some + table.remove(codepoints, 1) + return getSortChar(codepoints) + end + local sort_char = utf8.char(table.unpack(codes)) + -- print unicode category of the first char + return upper(sort_char) -- use unicode.utf8.upper to make the char uppercase + end +end + -- cgit v1.2.3