26 lines
1.3 KiB
Lua
26 lines
1.3 KiB
Lua
local function escapeForPattern(str)
|
|
return (str:gsub("[-+*^?$.%%()[%]]", "%%%0"))
|
|
end
|
|
|
|
local function toCamelCase(str, separator)
|
|
local escapedSeparator = escapeForPattern(separator)
|
|
local namePattern = "%l%w*"..escapedSeparator.."[%w"..escapedSeparator.."]*%w" -- Starting with a lower case character and containing the separator character.
|
|
local separatorPattern = escapedSeparator.."(%w)" -- Discard the separator and capture the alphanumeric character.
|
|
|
|
return (str:gsub(namePattern, function(name)
|
|
return (name:gsub(separatorPattern, string.upper)) -- The captured character will be the one argument for string.upper().
|
|
end))
|
|
end
|
|
|
|
local function fromCamelCase(str, separator)
|
|
local namePattern = "%l+[%u%d]%w*" -- Starting with a lower case character and containing an upper case character or digit.
|
|
local separatorPattern1 = "(%l)([%u%d])" -- Lower case character followed by upper case character or digit.
|
|
local separatorPattern2 = "(%d)(%a)" -- Digit followed by alphanumeric character.
|
|
|
|
return (str:gsub(namePattern, function(name)
|
|
return (name
|
|
:gsub(separatorPattern1, function(char1,char2) return char1..separator..char2:lower() end)
|
|
:gsub(separatorPattern2, function(char1,char2) return char1..separator..char2:lower() end)
|
|
)
|
|
end))
|
|
end
|