mirror of
https://github.com/sbrl/Minetest-WorldEditAdditions.git
synced 2024-11-22 15:33:00 +00:00
Port human_time from Pepperminty Wiki & put it to use in //multi
Also, we've got a changelog!
This commit is contained in:
parent
00177637b5
commit
c0624f5a94
3 changed files with 49 additions and 8 deletions
6
CHANGELOG.md
Normal file
6
CHANGELOG.md
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
# WorldEditAdditions Changelog
|
||||||
|
It's about time I started a changelog! This will serve from now on as the master changelog for WorldEditAdditions.
|
||||||
|
|
||||||
|
|
||||||
|
## v1.8 (unreleased)
|
||||||
|
- Update `//multi` to display human readable times (e.g. `2.11mins` instead of `126600ms`)
|
|
@ -63,14 +63,14 @@ end
|
||||||
--- Pads str to length len with char from right
|
--- Pads str to length len with char from right
|
||||||
-- @source https://snipplr.com/view/13092/strlpad--pad-string-to-the-left
|
-- @source https://snipplr.com/view/13092/strlpad--pad-string-to-the-left
|
||||||
function worldeditadditions.str_padend(str, len, char)
|
function worldeditadditions.str_padend(str, len, char)
|
||||||
if char == nil then char = ' ' end
|
if char == nil then char = ' ' end
|
||||||
return str .. string.rep(char, len - #str)
|
return str .. string.rep(char, len - #str)
|
||||||
end
|
end
|
||||||
--- Pads str to length len with char from left
|
--- Pads str to length len with char from left
|
||||||
-- Adapted from the above
|
-- Adapted from the above
|
||||||
function worldeditadditions.str_padstart(str, len, char)
|
function worldeditadditions.str_padstart(str, len, char)
|
||||||
if char == nil then char = ' ' end
|
if char == nil then char = ' ' end
|
||||||
return string.rep(char, len - #str) .. str
|
return string.rep(char, len - #str) .. str
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Equivalent to string.startsWith in JS
|
--- Equivalent to string.startsWith in JS
|
||||||
|
@ -208,3 +208,30 @@ function worldeditadditions.parse_weighted_nodes(parts, as_list)
|
||||||
|
|
||||||
return true, result
|
return true, result
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Converts a float milliseconds into a human-readable string.
|
||||||
|
-- Ported from PHP human_time from Pepperminty Wiki: https://github.com/sbrl/Pepperminty-Wiki/blob/fa81f0d/core/05-functions.php#L82-L104
|
||||||
|
-- @param ms float The number of milliseconds to convert.
|
||||||
|
-- @return string A human-readable string representing the input ms.
|
||||||
|
function worldeditadditions.human_time(ms)
|
||||||
|
local tokens = {
|
||||||
|
{ 31536000 * 1000, 'year' },
|
||||||
|
{ 2592000 * 1000, 'month' },
|
||||||
|
{ 604800 * 1000, 'week' },
|
||||||
|
{ 86400 * 1000, 'day' },
|
||||||
|
{ 3600 * 1000, 'hr' },
|
||||||
|
{ 60 * 1000, 'min' },
|
||||||
|
{ 1 * 1000, 's' },
|
||||||
|
{ 1, 'ms'}
|
||||||
|
}
|
||||||
|
|
||||||
|
for _,pair in pairs(tokens) do
|
||||||
|
if ms > pair[1] or pair[2] == "ms" then
|
||||||
|
local unit = pair[2]
|
||||||
|
if ms > 60 * 1000 and math.floor(ms / pair[1]) > 1 then
|
||||||
|
unit = unit.."s"
|
||||||
|
end
|
||||||
|
return string.format("%.2f", ms / pair[1])..unit
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
|
@ -66,12 +66,20 @@ minetest.register_chatcommand("/multi", {
|
||||||
end
|
end
|
||||||
|
|
||||||
local total_time = (os.clock() - master_start_time) * 1000
|
local total_time = (os.clock() - master_start_time) * 1000
|
||||||
local done_message = string.format("Executed %d commands in %.2fms (", #times, total_time)
|
local done_message = {}
|
||||||
|
table.insert(done_message,
|
||||||
|
string.format("Executed %d commands in %s (",
|
||||||
|
#times,
|
||||||
|
worldeditadditions.human_time(total_time)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
local message_parts = {}
|
||||||
for j=1,#times do
|
for j=1,#times do
|
||||||
done_message = done_message..string.format("%.2fms, ", times[j])
|
table.insert(message_parts, worldeditadditions.human_time(times[j]))
|
||||||
end
|
end
|
||||||
done_message = string.sub(done_message, 0, string.len(done_message) - 2)..")"
|
table.insert(done_message, table.concat(message_parts, ", "))
|
||||||
|
table.insert(done_message, ")")
|
||||||
|
|
||||||
worldedit.player_notify(name, done_message)
|
worldedit.player_notify(name, table.concat(done_message, ""))
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in a new issue