Home
Random
Log in
Settings
About the Deadlock Wiki
Search
Editing
Module:Utilities
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
local p = {}; -- "Default %hero_name% Build" --> "Default Build", or "Default Build" with -1 or +1 for spaces function p.remove_var(input, spaces) -- spaces = -- -1: also remove prefixed character -- 0 or nil: no character -- 1: postfixed character -- Remove text between % and % including the % local result = input:gsub("%%.-%%", "") -- If spaces == -1, remove the character before the removed section if spaces ~= nil and spaces == -1 then result = result:gsub("%s+%s*", "", 1) -- Removes the preceding space or character -- If spaces == 1, remove the character after the removed section elseif spaces ~= nil and spaces == 1 then result = result:gsub("%s+", "", 1) -- Removes the postfixed space end -- Trim any extra whitespace result = result:gsub("^%s*(.-)%s*$", "%1") return result end --round_to_significant_figures(12345.6789, 3) -- Output: 12300 --round_to_significant_figures(0.0012345, 2) -- Output: 0.0012 --round_to_significant_figures(-98765, 4) -- Output: -98760 function p.round_to_sig_fig(num, n) if num == 0 then return 0 end -- Calculate the order of magnitude (log10 returns the logarithm base 10) local order_of_magnitude = math.floor(math.log10(math.abs(num))) -- Scale the number to move the significant digits into the integer part local scale = math.pow(10, n - 1 - order_of_magnitude) -- Round the scaled number and then scale it back local rounded_num = math.floor(num * scale + 0.5) / scale return rounded_num end -- If the image exists exists, return it back enclosed in brackets, else return a blank string function p.get_image_file(image_file_name, px, link) if (px == nil) then px = 15 end --default if (link == nil) then link = "" end --default image_file = mw.title.new(image_file_name) if image_file and image_file.exists then image_file_name = "[[" .. image_file_name .. "|" .. px .. "px|link=" .. link .. "]]" else image_file_name = '' end return image_file_name end function p.string_endswith(str, ending) return ending == "" or str:sub(-#ending) == ending end -- Add a space before each capital letter that is not the first character -- i.e. BulletVelocity > Bullet Velocity -- when a string doesn't have localization, it can outputted as add_space_before_cap(unlocalized_key) function p.add_space_before_cap(str) local result = str:gsub("(%l)(%u)", "%1 %2") return result:gsub("(%u)(%u%l)", " %1%2") end --Much room for expansion here, currently just replaces spaces with underscores essentially --so that it can be used in a url directly p.url_encode = function(str) if type(str) == 'table' and str.args then frame = str str = frame.args[1] end if (str == nil) then return "First parameter must be a string" end if (str == '') then return '' end -- Just replaces spaces with %20 local result = string.gsub(str, " ", "%%20") return result --must assign as local result first to grab just first returned result end --Creates a deepCopy of a table function p.deep_copy(orig) local orig_type = type(orig) local copy if orig_type == "table" then copy = {} for key, value in pairs(orig) do copy[p.deep_copy(key)] = p.deep_copy(value) end setmetatable(copy, p.deep_copy(getmetatable(orig))) else -- For non-table types, simply return the original value copy = orig end return copy end -- Hash for color values local slot_colors = { ["Weapon"] = { hex = "c97a03", rgb = "201,122,3", hsl = "35,97%,40%", cmyk = "0%,39%,98%,21%" }, ["Armor"] = { hex = "659818", rgb = "101,152,24", hsl = "82,73%,34%", cmyk = "34%,0%,84%,40%" }, ["Tech"] = { hex = "c288f0", -- purple rgb = "194,136,240", hsl = "276,79%,74%", cmyk = "19%,43%,0%,6%" } } -- Hash for format configuration local color_formats = { hex = { prefix = "#", postfix = "" }, rgb = { prefix = "rgb(", postfix = ")" }, hsl = { prefix = "hsl(", postfix = ")" }, cmyk = { prefix = "cmyk(", postfix = ")" } } function p.get_slot_color(slot, color_format, no_wrap, debug_mode) if type(slot) == 'table' and slot.args then frame = slot slot = frame.args[1] color_format = frame.args[2] no_wrap = frame.args["no_wrap"] debug_mode = frame.args["debug_mode"] end -- Validate arguments if slot == nil or slot == "" then return "'slot' parameter must be provided" end if color_format == nil or color_format == "" then color_format = "hex" end if no_wrap == nil or no_wrap == 'false' or no_wrap == "" then no_wrap = false else no_wrap = true end if debug_mode == nil or debug_mode == 'false' or debug_mode == "" then debug_mode = false end local slot_data = slot_colors[slot] if slot_data == nil then return "slot '" .. slot .. "' was not in slots_data map" end --Retrieve the color local color = slot_data[color_format] if color == nil then return "color_format '" .. color_format .. "' is not in slots_data map" end -- Add prefix and postfix wrapping if not no_wrap then -- Retrieve prefix and postfix prefix = color_formats[color_format]['prefix'] postfix = color_formats[color_format]['postfix'] -- Add to color color = prefix .. color .. postfix end -- Return result if debug_mode then return " " .. color end return color end return p
Summary:
Please note that all contributions to Deadlock Wiki are considered to be released under the Creative Commons Attribution-NonCommercial-ShareAlike (see
Deadlock:Copyrights
for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource.
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Preview page with this template
Template used on this page:
Module:Utilities/doc
(
edit
)