Module:Utilities: Difference between revisions
Jump to navigation
Jump to search
m add_space_before_cap |
added function to split pascal into separate words |
||
Line 48: | Line 48: | ||
end | end | ||
function p.split_pascal(str) | |||
-- Insert a space before each capital letter (except the first one) that is followed by a lowercase letter | |||
local result = str:gsub("(%l)(%u)", "%1 %2") | |||
-- Return the result with a capital letter followed by another capital and lowercase letters split | |||
return result:gsub("(%u)(%u%l)", " %1%2") | |||
end | |||
return p | return p |
Revision as of 18:16, 1 October 2024
Overview
Utility functions that serve any miscellaneous purpose
Functions
get_slot_color
Retrieve's the color of a certain slot/category in any color format (default hex), formerly known in english as Weapon, Vitality, and Spirit, though their unlocalized names are Weapon, Armor, and Tech. Utilized by Template:SlotColor
Parameters
- slot - slot key, options are Weapon, Armor, and Tech
- color_format - color format - Defaults to hex. Valid options are hex, rgb, hsl, cmyk
- no_wrap - (OPTIONAL) - Defaults to false. Set to true to remove prefixes and postfixes of '#' from hex, or 'rgb()', 'hsl()', and 'cmyk()' from the other formats. May be useful for altering the values dynamically
- debug_mode - (OPTIONAL) - Defaults to false. Used mostly for documentation purposes
Examples
See examples at Template:SlotColor
local p = {};
--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
function p.add_space_before_cap(str)
return str:gsub("(%u)", function(c)
return " " .. c
end, 2)
end
function p.split_pascal(str)
-- Insert a space before each capital letter (except the first one) that is followed by a lowercase letter
local result = str:gsub("(%l)(%u)", "%1 %2")
-- Return the result with a capital letter followed by another capital and lowercase letters split
return result:gsub("(%u)(%u%l)", " %1%2")
end
return p