diff options
| author | V1K1NGbg <victor@ilchev.com> | 2024-07-22 21:10:59 +0300 |
|---|---|---|
| committer | V1K1NGbg <victor@ilchev.com> | 2024-08-05 20:49:17 +0300 |
| commit | 0a1fd0aafb84212067c2a6454bad4aa5f3a154a9 (patch) | |
| tree | 8027c00beacd34a57d8e01fa73e62c8ad995f21c | |
| parent | 0e6068b309a4bb084322ed2934b8191d33f50626 (diff) | |
| download | luarocks-0a1fd0aafb84212067c2a6454bad4aa5f3a154a9.tar.gz luarocks-0a1fd0aafb84212067c2a6454bad4aa5f3a154a9.tar.bz2 luarocks-0a1fd0aafb84212067c2a6454bad4aa5f3a154a9.zip | |
actually add the new changes
| -rw-r--r-- | src/luarocks/core/util.lua | 58 |
1 files changed, 29 insertions, 29 deletions
diff --git a/src/luarocks/core/util.lua b/src/luarocks/core/util.lua index 6011e51e..b815a028 100644 --- a/src/luarocks/core/util.lua +++ b/src/luarocks/core/util.lua | |||
| @@ -1,5 +1,9 @@ | |||
| 1 | local _tl_compat; if (tonumber((_VERSION or ''):match('[%d.]*$')) or 0) < 5.3 then local p, m = pcall(require, 'compat53.module'); if p then _tl_compat = m end end; local debug = _tl_compat and _tl_compat.debug or debug; local io = _tl_compat and _tl_compat.io or io; local ipairs = _tl_compat and _tl_compat.ipairs or ipairs; local math = _tl_compat and _tl_compat.math or math; local os = _tl_compat and _tl_compat.os or os; local package = _tl_compat and _tl_compat.package or package; local pairs = _tl_compat and _tl_compat.pairs or pairs; local string = _tl_compat and _tl_compat.string or string; local table = _tl_compat and _tl_compat.table or table | 1 | local _tl_compat; if (tonumber((_VERSION or ''):match('[%d.]*$')) or 0) < 5.3 then local p, m = pcall(require, 'compat53.module'); if p then _tl_compat = m end end; local debug = _tl_compat and _tl_compat.debug or debug; local io = _tl_compat and _tl_compat.io or io; local ipairs = _tl_compat and _tl_compat.ipairs or ipairs; local math = _tl_compat and _tl_compat.math or math; local os = _tl_compat and _tl_compat.os or os; local package = _tl_compat and _tl_compat.package or package; local pairs = _tl_compat and _tl_compat.pairs or pairs; local string = _tl_compat and _tl_compat.string or string; local table = _tl_compat and _tl_compat.table or table |
| 2 | local util = {} | 2 | local util = {Ordering = {}, } |
| 3 | |||
| 4 | |||
| 5 | |||
| 6 | |||
| 3 | 7 | ||
| 4 | 8 | ||
| 5 | 9 | ||
| @@ -16,6 +20,7 @@ local dir_sep = package.config:sub(1, 1) | |||
| 16 | 20 | ||
| 17 | 21 | ||
| 18 | 22 | ||
| 23 | |||
| 19 | function util.popen_read(cmd, spec) | 24 | function util.popen_read(cmd, spec) |
| 20 | local tmpfile = (dir_sep == "\\") and | 25 | local tmpfile = (dir_sep == "\\") and |
| 21 | (os.getenv("TMP") .. "/luarocks-" .. tostring(math.floor(math.random() * 10000))) or | 26 | (os.getenv("TMP") .. "/luarocks-" .. tostring(math.floor(math.random() * 10000))) or |
| @@ -187,7 +192,7 @@ function util.split_string(str, delim, maxNb) | |||
| 187 | for part, pos in string.gmatch(str, pat) do | 192 | for part, pos in string.gmatch(str, pat) do |
| 188 | nb = nb + 1 | 193 | nb = nb + 1 |
| 189 | result[nb] = part | 194 | result[nb] = part |
| 190 | lastPos = tonumber(pos) | 195 | lastPos = math.tointeger(pos) |
| 191 | if nb == maxNb then break end | 196 | if nb == maxNb then break end |
| 192 | end | 197 | end |
| 193 | 198 | ||
| @@ -288,51 +293,46 @@ end | |||
| 288 | 293 | ||
| 289 | 294 | ||
| 290 | 295 | ||
| 291 | function util.sortedpairs(tbl, sort_function) | 296 | function util.sortedpairs(tbl, sort_by) |
| 292 | if not sort_function then | ||
| 293 | sort_function = default_sort | ||
| 294 | end | ||
| 295 | local keys = util.keys(tbl) | 297 | local keys = util.keys(tbl) |
| 296 | local sub_orders = {} | 298 | local sub_orders = nil |
| 297 | 299 | ||
| 298 | if type(sort_function) == "function" then | 300 | if sort_by == nil then |
| 299 | table.sort(keys, sort_function) | 301 | table.sort(keys, default_sort) |
| 302 | elseif type(sort_by) == "function" then | ||
| 303 | table.sort(keys, sort_by) | ||
| 300 | else | 304 | else |
| 301 | local order = sort_function | ||
| 302 | local ordered_keys = {} | ||
| 303 | local all_keys = keys | ||
| 304 | keys = {} | ||
| 305 | 305 | ||
| 306 | for _, order_entry in ipairs(order) do | ||
| 307 | local key, sub_order | ||
| 308 | 306 | ||
| 309 | if not (type(order_entry) == "table") then | 307 | sub_orders = sort_by.sub_orders |
| 310 | key = order_entry | 308 | |
| 311 | else | 309 | local seen_ordered_key = {} |
| 312 | key = order_entry[1] | ||
| 313 | sub_order = order_entry[2] | ||
| 314 | end | ||
| 315 | 310 | ||
| 311 | local my_ordered_keys = {} | ||
| 312 | |||
| 313 | for _, key in ipairs(sort_by) do | ||
| 316 | if tbl[key] then | 314 | if tbl[key] then |
| 317 | ordered_keys[key] = true | 315 | seen_ordered_key[key] = true |
| 318 | sub_orders[key] = sub_order | 316 | table.insert(my_ordered_keys, key) |
| 319 | table.insert(keys, key) | ||
| 320 | end | 317 | end |
| 321 | end | 318 | end |
| 322 | 319 | ||
| 323 | table.sort(all_keys, default_sort) | 320 | table.sort(keys, default_sort) |
| 324 | for _, key in ipairs(all_keys) do | 321 | |
| 325 | if not ordered_keys[key] then | 322 | for _, key in ipairs(keys) do |
| 326 | table.insert(keys, key) | 323 | if not seen_ordered_key[key] then |
| 324 | table.insert(my_ordered_keys, key) | ||
| 327 | end | 325 | end |
| 328 | end | 326 | end |
| 327 | |||
| 328 | keys = my_ordered_keys | ||
| 329 | end | 329 | end |
| 330 | 330 | ||
| 331 | local i = 1 | 331 | local i = 1 |
| 332 | return function() | 332 | return function() |
| 333 | local key = keys[i] | 333 | local key = keys[i] |
| 334 | i = i + 1 | 334 | i = i + 1 |
| 335 | return key, tbl[key], sub_orders[key] | 335 | return key, tbl[key], sub_orders and sub_orders[key] |
| 336 | end | 336 | end |
| 337 | end | 337 | end |
| 338 | 338 | ||
