- restored previous changes; cleanup workspace

This commit is contained in:
2026-10-31 23:53:44 +01:00
parent 396e140102
commit ba160aface
13 changed files with 218 additions and 49 deletions
+5
View File
@@ -3,6 +3,11 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## Version 1.1.7 - 2026-11-01
### Fixed
- handling of german umlauts (and other unicode characters)
- updated libraries and bumped version for all incarnations of WoW (Classic Era, Forever, Classic, Retail)
-
## Version 1.1.6 - 2023-01-18 ## Version 1.1.6 - 2023-01-18
### Changed ### Changed
- bumped version for latest WotLK Classic patch - bumped version for latest WotLK Classic patch
+1 -1
View File
@@ -2,7 +2,7 @@
Grichelde - Text Replacer Grichelde - Text Replacer
Copyright 2020 Teilzeit-Jedi <tj@teilzeit-jedi.de> Copyright 2020 - 2026 Teilzeit-Jedi <tj@teilzeit-jedi.de>
This addon is distributed in the hope that it will be useful, This addon is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
+2 -2
View File
@@ -1,4 +1,4 @@
## Interface: 100002 ## Interface: 100007
## Title: Grichelde ## Title: Grichelde
## Notes: Replaces characters of your chat input line before sending. ## Notes: Replaces characters of your chat input line before sending.
@@ -9,7 +9,7 @@
## X-Build: Retail ## X-Build: Retail
## X-Compatible: 11403 ## X-Compatible: 11403
## X-Compatible: 30401 ## X-Compatible: 30403
## X-Curse-Project-ID: 385480 ## X-Curse-Project-ID: 385480
## X-License: GPLv3 ## X-License: GPLv3
+8 -7
View File
@@ -1,9 +1,9 @@
-- import addon read namespace from global env -- import addon read namespace from global env
local _G = _G local _G = _G or getfenv()
local Grichelde = _G.Grichelde or {} local Grichelde = _G.Grichelde or {}
local IsAddOnLoaded, assert, nilOrEmpty, pairs, ipairs, spairs, tContains, tFilter, tInsert, tIsEmpty, find, sub, gsub, getNextCharUtf8, isUtf8MultiByte, getUtf8Sequence, isUpper, isLower, toUpper, toLower, bytes2Char, trim, length, lengthUtf8 local IsAddOnLoaded, assert, nilOrEmpty, pairs, ipairs, spairs, tContains, tFilter, tInsert, tIsEmpty, tSize, find, sub, gsub, getNextCharUtf8, isUtf8MultiByte, getUtf8Sequence, isUpper, isLower, toUpper, toLower, bytes2Char, trim, length, lengthUtf8
= Grichelde.F.IsAddOnLoaded, Grichelde.F.assert, Grichelde.F.nilOrEmpty, Grichelde.F.pairs, Grichelde.F.ipairs, Grichelde.F.spairs, Grichelde.F.tContains, Grichelde.F.tFilter, Grichelde.F.tInsert, Grichelde.F.tIsEmpty, = Grichelde.F.IsAddOnLoaded, Grichelde.F.assert, Grichelde.F.nilOrEmpty, Grichelde.F.pairs, Grichelde.F.ipairs, Grichelde.F.spairs, Grichelde.F.tContains, Grichelde.F.tFilter, Grichelde.F.tInsert, Grichelde.F.tIsEmpty, Grichelde.F.tSize,
Grichelde.F.find, Grichelde.F.sub, Grichelde.F.gsub, Grichelde.F.getNextCharUtf8, Grichelde.F.isUtf8MultiByte, Grichelde.F.getUtf8Sequence, Grichelde.F.isUpper, Grichelde.F.isLower, Grichelde.F.toUpper, Grichelde.F.toLower, Grichelde.F.bytes2Char, Grichelde.F.trim, Grichelde.F.length, Grichelde.F.lengthUtf8 Grichelde.F.find, Grichelde.F.sub, Grichelde.F.gsub, Grichelde.F.getNextCharUtf8, Grichelde.F.isUtf8MultiByte, Grichelde.F.getUtf8Sequence, Grichelde.F.isUpper, Grichelde.F.isLower, Grichelde.F.toUpper, Grichelde.F.toLower, Grichelde.F.bytes2Char, Grichelde.F.trim, Grichelde.F.length, Grichelde.F.lengthUtf8
--- Splits a long text in longest possible chunks of <= 255 length, split at last available space --- Splits a long text in longest possible chunks of <= 255 length, split at last available space
@@ -142,7 +142,7 @@ end
function Grichelde:SendChunkifiedChatMessage(message, ...) function Grichelde:SendChunkifiedChatMessage(message, ...)
if (length(message) > 255) then if (length(message) > 255) then
local chunks = self:SplitText(message) local chunks = self:SplitText(message)
self:DebugPrint("SendChunkifiedChatMessage : #chunks:", #chunks) self:DebugPrint("SendChunkifiedChatMessage : #chunks:", tSize(chunks))
for _, chunk in ipairs(chunks) do for _, chunk in ipairs(chunks) do
self.hooks["SendChatMessage"](chunk, ...); self.hooks["SendChatMessage"](chunk, ...);
@@ -218,9 +218,10 @@ function Grichelde:ReplaceCharacters(text, replName, replTable, consolidate, rep
local function replaceCaptures(txt, replaceText, captures) local function replaceCaptures(txt, replaceText, captures)
local replText = replaceText local replText = replaceText
self:TracePrint("replaceCaptures : txt: %s, #captures: %d", txt, #captures) local n = tSize(captures)
self:TracePrint("replaceCaptures : txt: %s, #captures: %d", txt, n)
if (#captures > 0) then if (n > 0) then
for i, cap in ipairs(captures) do for i, cap in ipairs(captures) do
--self:TracePrint("replaceCaptures : i: %d, cap: %s", i, cap) --self:TracePrint("replaceCaptures : i: %d, cap: %s", i, cap)
if (cap == nil) then if (cap == nil) then
@@ -875,7 +876,7 @@ function Grichelde:CheckAndExtractMessageTypeTarget(message)
local type = tFilter(self.SUPPORTED_CHAT_COMMANDS, local type = tFilter(self.SUPPORTED_CHAT_COMMANDS,
function(_, k, _) return chatCmd == k end function(_, k, _) return chatCmd == k end
) )
assert(#type < 2) assert(tSize(type) < 2)
if (not tIsEmpty(type)) then if (not tIsEmpty(type)) then
self:DebugPrint("CheckAndExtractMessageTypeTarget : determined type: %s", type[1]) self:DebugPrint("CheckAndExtractMessageTypeTarget : determined type: %s", type[1])
+107 -3
View File
@@ -1,5 +1,5 @@
-- read namespace from global env -- read namespace from global env
local _G = _G local _G = _G or getfenv()
local Grichelde = _G.Grichelde or {} local Grichelde = _G.Grichelde or {}
-- constants and upvalues -- constants and upvalues
@@ -168,7 +168,7 @@ Grichelde.IGNORE_PATTERNS = {
} }
local function nilOrEmpty(s) local function nilOrEmpty(s)
return s == nil or s:trim() == "" return s == nil or Grichelde.F.trim(s) == ""
end end
local function spairs(tbl, orderFunc) local function spairs(tbl, orderFunc)
@@ -287,6 +287,97 @@ local function getNextCharUtf8(word)
end end
end end
local function isUtf8MultiByte(word)
return Grichelde.F.length(word) ~= Grichelde.F.lengthUtf8(word)
end
local function getUtf8Sequence(word)
if ((word == nil) or (Grichelde.F.type(word) ~= "string") or (Grichelde.F.lengthUtf8(word) ~= 1)) then
return nil
end
--[[
You could use the following code snippet to iterate over UTF-8 sequences
(this will simply skip over most invalid codes):
for uchar in string.gmatch(ustring, "([%z\1-\127\194-\244][\128-\191]*)") do
...
end
]]--
local sequence = "%z"
local c1 = Grichelde.F.toByte(word, 1)
sequence = sequence .. "\\" .. c1
if (c1 > 0) and (c1 <= 127) then
-- UTF8-1
return sequence
end
local c2 = Grichelde.F.toByte(word, 2)
sequence = sequence .. "\\" .. c2
if (c1 >= 194) and (c1 <= 223) then
-- UTF8-2
return sequence
end
local c3 = Grichelde.F.toByte(word, 3)
sequence = sequence .. "\\" .. c3
if (c1 >= 224) and (c1 <= 239) then
-- UTF8-3
return sequence
end
local c4 = Grichelde.F.toByte(word, 4)
sequence = sequence .. "\\" .. c4
if (c1 >= 240) and (c1 <= 244) then
-- UTF8-4
return sequence
end
return nil
end
local function getUtf8Table(word)
if ((word == nil) or (Grichelde.F.type(word) ~= "string") or (Grichelde.F.lengthUtf8(word) ~= 1)) then
return nil
end
--[[
You could use the following code snippet to iterate over UTF-8 sequences
(this will simply skip over most invalid codes):
for uchar in string.gmatch(ustring, "([%z\1-\127\194-\244][\128-\191]*)") do
...
end
]]--
local tbl = {}
local c1 = Grichelde.F.toByte(word, 1)
Grichelde.F.tInsert(tbl, "%z\\" .. c1)
local c2 = Grichelde.F.toByte(word, 2)
if (c1 >= 194) and (c1 <= 223) then
-- UTF8-2
Grichelde.F.tInsert(tbl, "\\" .. c2)
end
local c3 = Grichelde.F.toByte(word, 3)
if (c1 >= 224) and (c1 <= 239) then
-- UTF8-3
Grichelde.F.tInsert(tbl, "\\" .. c3)
end
local c4 = Grichelde.F.toByte(word, 4)
if (c1 >= 240) and (c1 <= 244) then
-- UTF8-4
Grichelde.F.tInsert(tbl, "\\" .. c4)
end
return tbl
end
local function isLetter(word) local function isLetter(word)
local char = Grichelde.F.getNextCharUtf8(word) local char = Grichelde.F.getNextCharUtf8(word)
return (char ~= nil) and (Grichelde.F.toUpper(char) ~= Grichelde.F.toLower(char)) return (char ~= nil) and (Grichelde.F.toUpper(char) ~= Grichelde.F.toLower(char))
@@ -348,6 +439,15 @@ local function capitalize(word)
end end
end end
local function trim(s)
if ((s == nil) or (Grichelde.F.type(s) ~= "string")) then
return nil
end
local n = Grichelde.F.find(s, "%S")
return n and Grichelde.F.match(s, ".*%S", n) or ""
end
local function color(colour, text) local function color(colour, text)
return colour .. text .. Grichelde.COLOR_CODES.CLOSE return colour .. text .. Grichelde.COLOR_CODES.CLOSE
end end
@@ -418,6 +518,9 @@ Grichelde.F = {
toUpper = _G.strupper, toUpper = _G.strupper,
toLower = _G.strlower, toLower = _G.strlower,
getNextCharUtf8 = getNextCharUtf8, getNextCharUtf8 = getNextCharUtf8,
isUtf8MultiByte = isUtf8MultiByte,
getUtf8Sequence = getUtf8Sequence,
getUtf8Table = getUtf8Table,
isLetter = isLetter, isLetter = isLetter,
isNumber = isNumber, isNumber = isNumber,
isUpper = isUpper, isUpper = isUpper,
@@ -437,7 +540,8 @@ Grichelde.F = {
bytes2Char = _G.string.char, bytes2Char = _G.string.char,
format = _G.string.format, format = _G.string.format,
rep = _G.string.rep, rep = _G.string.rep,
trim = _G.strtrim, -- trim = _G.strtrim,
trim = trim,
length = _G.string.len, length = _G.string.len,
lengthUtf8 = _G.strlenutf8, lengthUtf8 = _G.strlenutf8,
toString = _G.tostring, toString = _G.tostring,
+11 -9
View File
@@ -1,9 +1,9 @@
-- read namespace from global env -- read namespace from global env
local _G = _G local _G = _G or getfenv()
local Grichelde = _G.Grichelde or {} local Grichelde = _G.Grichelde or {}
local pairs, tInsert, tClone, unpack, join, toString local pairs, tInsert, tClone, tSize, unpack, join, toString
= Grichelde.F.pairs, Grichelde.F.tInsert, Grichelde.F.tClone, Grichelde.F.unpack, Grichelde.F.join, Grichelde.F.toString = Grichelde.F.pairs, Grichelde.F.tInsert, Grichelde.F.tClone, Grichelde.F.tSize, Grichelde.F.unpack, Grichelde.F.join, Grichelde.F.toString
function Grichelde.getDefaultConfig() function Grichelde.getDefaultConfig()
return { return {
@@ -84,38 +84,40 @@ end
function Grichelde:SyncToDatabase(info, val) function Grichelde:SyncToDatabase(info, val)
self:TracePrint("SyncToDatabase : info") self:TracePrint("SyncToDatabase : info")
for i = 0, #info do local n = tSize(info)
for i = 0, n do
self:TracePrint("%d = %s", i, info[i]) self:TracePrint("%d = %s", i, info[i])
end end
local option = self.db.profile local option = self.db.profile
local path = 1 local path = 1
while (path < #info) do while (path < n) do
if (info[path] ~= "mappings") then if (info[path] ~= "mappings") then
option = option[info[path]] option = option[info[path]]
end end
path = path + 1 path = path + 1
end end
local optionPath = join(".", unpack(info, 1, #info)) local optionPath = join(".", unpack(info, 1, n))
self:DebugPrint("change option \"%s\" from %s to %s", optionPath, toString(option[info[path]]), toString(val)) self:DebugPrint("change option \"%s\" from %s to %s", optionPath, toString(option[info[path]]), toString(val))
option[info[path]] = val option[info[path]] = val
end end
function Grichelde:ReadFromDatabase(info) function Grichelde:ReadFromDatabase(info)
self:TracePrint("ReadFromDatabase : info") self:TracePrint("ReadFromDatabase : info")
for i = 0, #info do local n = tSize(info)
for i = 0, n do
self:TracePrint("%d = %s", i, info[i]) self:TracePrint("%d = %s", i, info[i])
end end
local option = self.db.profile local option = self.db.profile
local path = 1 local path = 1
while (path <= #info) do while (path <= n) do
if (info[path] ~= "mappings") then if (info[path] ~= "mappings") then
option = option[info[path]] option = option[info[path]]
end end
path = path + 1 path = path + 1
end end
local optionPath = join(".", unpack(info, 1, #info)) local optionPath = join(".", unpack(info, 1, n))
self:DebugPrint("read option \"%s\": %s", optionPath, toString(option)) self:DebugPrint("read option \"%s\": %s", optionPath, toString(option))
return option return option
end end
+2 -3
View File
@@ -1,9 +1,8 @@
-- read namespace from global env -- read namespace from global env
local _G = _G local _G = _G or getfenv()
local Grichelde = _G.Grichelde or {} local Grichelde = _G.Grichelde or {}
local cGreen, cRed local cGreen, cRed = Grichelde.F.cGreen, Grichelde.F.cRed
= Grichelde.F.cGreen, Grichelde.F.cRed
--- add Minimap button --- add Minimap button
+21 -13
View File
@@ -1,9 +1,9 @@
-- read namespace from global env -- read namespace from global env
local _G = _G local _G = _G or getfenv()
local Grichelde = _G.Grichelde or {} local Grichelde = _G.Grichelde or {}
local assert, nilOrEmpty, pairs, ipairs, spairs, tContains, tInsert, tClone, tWipe, find, match, cPrefix, cGray, cGreen, cOrange, cRed, format, toString, toNumber local assert, nilOrEmpty, pairs, ipairs, spairs, tContains, tInsert, tClone, tSize, tWipe, find, match, cPrefix, cGray, cGreen, cOrange, cRed, format, toString, toNumber
= Grichelde.F.assert, Grichelde.F.nilOrEmpty, Grichelde.F.pairs, Grichelde.F.ipairs, Grichelde.F.spairs, Grichelde.F.tContains, Grichelde.F.tInsert, Grichelde.F.tClone, Grichelde.F.tWipe, Grichelde.F.find, Grichelde.F.match, Grichelde.F.cPrefix, Grichelde.F.cGray, Grichelde.F.cGreen, Grichelde.F.cOrange, Grichelde.F.cRed, Grichelde.F.format, Grichelde.F.toString, Grichelde.F.toNumber = Grichelde.F.assert, Grichelde.F.nilOrEmpty, Grichelde.F.pairs, Grichelde.F.ipairs, Grichelde.F.spairs, Grichelde.F.tContains, Grichelde.F.tInsert, Grichelde.F.tClone, Grichelde.F.tSize, Grichelde.F.tWipe, Grichelde.F.find, Grichelde.F.match, Grichelde.F.cPrefix, Grichelde.F.cGray, Grichelde.F.cGreen, Grichelde.F.cOrange, Grichelde.F.cRed, Grichelde.F.format, Grichelde.F.toString, Grichelde.F.toNumber
local selectedExample = 1 local selectedExample = 1
@@ -415,8 +415,9 @@ function Grichelde:SetupOptions()
-- Adding options to blizzard frame -- Adding options to blizzard frame
LibStub("AceConfig-3.0"):RegisterOptionsTable(self.name, options) LibStub("AceConfig-3.0"):RegisterOptionsTable(self.name, options)
local dialog = LibStub("AceConfigDialog-3.0") local dialog = LibStub("AceConfigDialog-3.0")
dialog:AddToBlizOptions(self.name, self.L.AddonName) local _, categoryID = dialog:AddToBlizOptions(self.name, self.L.AddonName)
self.optionsCategoryID = categoryID
return options, dialog return options, dialog
end end
@@ -507,7 +508,8 @@ end
-- @return (boolean) -- @return (boolean)
function Grichelde:IsMappingActive(info) function Grichelde:IsMappingActive(info)
self:TracePrint("IsMappingActive : info") self:TracePrint("IsMappingActive : info")
for i = 0, #info do local n = tSize(info)
for i = 0, n do
self:TracePrint("IsMappingActive : info[%d] = %s", i, info[i]) self:TracePrint("IsMappingActive : info[%d] = %s", i, info[i])
end end
@@ -559,7 +561,7 @@ end
function Grichelde:ExtractExampleCodes(num) function Grichelde:ExtractExampleCodes(num)
self:TracePrint("ExtractExampleCodes : number is: %d", num) self:TracePrint("ExtractExampleCodes : number is: %d", num)
if (self.L.Options_Help_Examples[num] == nil) or (#self.L.Options_Help_Examples < num) then if (self.L.Options_Help_Examples[num] == nil) or (tSize(self.L.Options_Help_Examples) < num) then
self:DebugPrint("ExtractExampleCodes : invalid number: %d", num) self:DebugPrint("ExtractExampleCodes : invalid number: %d", num)
return self.L.Options_Help_Examples_Text return self.L.Options_Help_Examples_Text
end end
@@ -581,7 +583,7 @@ end
function Grichelde:ImportExample(num) function Grichelde:ImportExample(num)
self:TracePrint("ImportExample : number is: %d", num) self:TracePrint("ImportExample : number is: %d", num)
if (self.L.Options_Help_Examples[num] == nil) or (#self.L.Options_Help_Examples < num) then if (self.L.Options_Help_Examples[num] == nil) or (tSize(self.L.Options_Help_Examples) < num) then
self:DebugPrint("ImportExample : invalid number: %d", num) self:DebugPrint("ImportExample : invalid number: %d", num)
end end
@@ -670,7 +672,8 @@ end
function Grichelde:MoveUp(info) function Grichelde:MoveUp(info)
self:TracePrint("MoveUp : info") self:TracePrint("MoveUp : info")
for i = 0, #info do local n = tSize(info)
for i = 0, n do
self:TracePrint("%d = %s", i, info[i]) self:TracePrint("%d = %s", i, info[i])
end end
@@ -704,7 +707,8 @@ end
function Grichelde:MoveDown(info) function Grichelde:MoveDown(info)
self:TracePrint("MoveDown : info") self:TracePrint("MoveDown : info")
for i = 0, #info do local n = tSize(info)
for i = 0, n do
self:TracePrint("%d = %s", i, info[i]) self:TracePrint("%d = %s", i, info[i])
end end
@@ -747,7 +751,8 @@ end
function Grichelde:GetMoveUpImage(info) function Grichelde:GetMoveUpImage(info)
self:TracePrint("GetMoveUpImage : info") self:TracePrint("GetMoveUpImage : info")
for i = 0, #info do local n = tSize(info)
for i = 0, n do
self:TracePrint("%d = %s", i, info[i]) self:TracePrint("%d = %s", i, info[i])
end end
@@ -766,7 +771,8 @@ end
function Grichelde:GetMoveDownImage(info) function Grichelde:GetMoveDownImage(info)
self:TracePrint("GetMoveDownImage : info") self:TracePrint("GetMoveDownImage : info")
for i = 0, #info do local n = tSize(info)
for i = 0, n do
self:TracePrint("%d = %s", i, info[i]) self:TracePrint("%d = %s", i, info[i])
end end
@@ -794,7 +800,8 @@ end
function Grichelde:GetDeleteImage(info) function Grichelde:GetDeleteImage(info)
self:TracePrint("GetDeleteImage : info") self:TracePrint("GetDeleteImage : info")
for i = 0, #info do local n = tSize(info)
for i = 0, n do
self:TracePrint("%d = %s", i, info[i]) self:TracePrint("%d = %s", i, info[i])
end end
@@ -807,7 +814,8 @@ end
function Grichelde:DeleteMapping(info) function Grichelde:DeleteMapping(info)
self:TracePrint("DeleteMapping : info") self:TracePrint("DeleteMapping : info")
for i = 0, #info do local n = tSize(info)
for i = 0, n do
self:TracePrint("%d = %s", i, info[i]) self:TracePrint("%d = %s", i, info[i])
end end
+52 -2
View File
@@ -1,5 +1,5 @@
-- import addon read namespace from global env -- import addon read namespace from global env
local _G = _G local _G = _G or getfenv()
local Grichelde = _G.Grichelde or {} local Grichelde = _G.Grichelde or {}
local find, pairs, tSize, cRed, cGreen = Grichelde.F.find, Grichelde.F.pairs, Grichelde.F.tSize, Grichelde.F.cRed, Grichelde.F.cGreen local find, pairs, tSize, cRed, cGreen = Grichelde.F.find, Grichelde.F.pairs, Grichelde.F.tSize, Grichelde.F.cRed, Grichelde.F.cGreen
@@ -72,7 +72,7 @@ function Grichelde:RunTests()
["OSSO"] = "OCHO", ["OSSO"] = "OCHO",
["ooSS"] = "ooCH", ["ooSS"] = "ooCH",
["schmeissen"] = "chmeichen", ["schmeissen"] = "chmeichen",
["Schön"] = "Chön", ["Sch&#246;n"] = "Chön",
} }
) )
ok = ok + o ok = ok + o
@@ -776,6 +776,56 @@ function Grichelde:RunTests()
ok = ok + o ok = ok + o
all = all + a all = all + a
o, a = test(
"umlauts",
{
replacement_10 = {
order = 10,
searchText = "ä",
replaceText = "ae",
exactCase = false,
consolidate = false,
matchWhen = 2,
stopOnMatch = false,
},
replacement_11 = {
order = 11,
searchText = "ö",
replaceText = "oe",
exactCase = false,
consolidate = false,
matchWhen = 2,
stopOnMatch = false,
},
replacement_12 = {
order = 12,
searchText = "ü",
replaceText = "ue",
exactCase = false,
consolidate = false,
matchWhen = 2,
stopOnMatch = false,
},
replacement_13 = {
order = 13,
searchText = "ß",
replaceText = "ss",
exactCase = false,
consolidate = false,
matchWhen = 2,
stopOnMatch = false,
},
},
{
["Hallä"] = "Hallae",
["Ätsch"] = "Aetsch",
["Hällöleü"] = "Haelloeleue",
["ÜöÄ"] = "UeoeAe",
}
)
ok = ok + o
all = all + a
if (ok == all) then if (ok == all) then
self:PrefixedPrint("All %d tests %s", all, cGreen("passed")) self:PrefixedPrint("All %d tests %s", all, cGreen("passed"))
else else
+1 -1
View File
@@ -1,5 +1,5 @@
-- read namespace from global env -- read namespace from global env
local _G = _G local _G = _G or getfenv()
local Grichelde = _G.Grichelde or {} local Grichelde = _G.Grichelde or {}
local pairs, tClone, find, sub, cGreen, cOrange, cRed, toNumber local pairs, tClone, find, sub, cGreen, cOrange, cRed, toNumber
+3 -3
View File
@@ -1,5 +1,5 @@
-- import addon read namespace from global env -- import addon read namespace from global env
local _G = _G local _G = _G or getfenv()
local Grichelde = _G.Grichelde or {} local Grichelde = _G.Grichelde or {}
local type, print, pairs, tSize, select, unpack, find, cGray, cDarkgray, cRed, cPrefix, format, rep, toString local type, print, pairs, tSize, select, unpack, find, cGray, cDarkgray, cRed, cPrefix, format, rep, toString
@@ -93,7 +93,7 @@ function Grichelde:Format(message, ...)
--print("...: ", ...) --print("...: ", ...)
return message, ... return message, ...
else else
local l = select("#", ...) local l = tSize(...)
if (l > 0) then if (l > 0) then
-- sanitize nil values in vararg -- sanitize nil values in vararg
local packed = { ... } local packed = { ... }
@@ -144,7 +144,7 @@ function Grichelde:LogPrint(printFunc, obj, ...)
printF("<nil>") printF("<nil>")
else else
if type(obj) == "string" then if type(obj) == "string" then
local l = select("#", ...) local l = tSize(...)
if (l == 0) or (find(obj, "%%") == nil) then if (l == 0) or (find(obj, "%%") == nil) then
printF(obj, ...) printF(obj, ...)
else else
+2 -2
View File
@@ -8,8 +8,8 @@
## eMail: tj@teilzeit-jedi.de ## eMail: tj@teilzeit-jedi.de
## X-Build: Classic ## X-Build: Classic
## X-Compatible: 30401 ## X-Compatible: 30403
## X-Compatible: 100002 ## X-Compatible: 100007
## X-Curse-Project-ID: 385480 ## X-Curse-Project-ID: 385480
## X-License: GPLv3 ## X-License: GPLv3
+2 -2
View File
@@ -1,4 +1,4 @@
## Interface: 30401 ## Interface: 30403
## Title: Grichelde ## Title: Grichelde
## Notes: Replaces characters of your chat input line before sending. ## Notes: Replaces characters of your chat input line before sending.
@@ -9,7 +9,7 @@
## X-Build: WotLK ## X-Build: WotLK
## X-Compatible: 11403 ## X-Compatible: 11403
## X-Compatible: 100002 ## X-Compatible: 100007
## X-Curse-Project-ID: 385480 ## X-Curse-Project-ID: 385480
## X-License: GPLv3 ## X-License: GPLv3