Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
7d9b30fff2 | |||
396e140102 |
10
CHANGELOG.md
10
CHANGELOG.md
@@ -3,6 +3,16 @@ 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 - 2022-xx-yy
|
||||||
|
### Fixed
|
||||||
|
- handling of german umlauts (and other unicode characters)
|
||||||
|
|
||||||
|
## Version 1.1.6 - 2023-01-18
|
||||||
|
### Changed
|
||||||
|
- bumped version for latest WotLK Classic patch
|
||||||
|
### Fixed
|
||||||
|
- updated Ace3.0 libraries for latest WotLK Classic patch
|
||||||
|
|
||||||
## Version 1.1.5 - 2022-12-04
|
## Version 1.1.5 - 2022-12-04
|
||||||
### Fixed
|
### Fixed
|
||||||
- updated Ace3 libraries for Dragonflight
|
- updated Ace3 libraries for Dragonflight
|
||||||
|
@@ -3,13 +3,13 @@
|
|||||||
## Title: Grichelde
|
## Title: Grichelde
|
||||||
## Notes: Replaces characters of your chat input line before sending.
|
## Notes: Replaces characters of your chat input line before sending.
|
||||||
## Notes-de: Ersetzt eingegebene Zeichen in der Chat-Zeile vor dem Versenden.
|
## Notes-de: Ersetzt eingegebene Zeichen in der Chat-Zeile vor dem Versenden.
|
||||||
## Version: 1.1.5
|
## Version: 1.1.6
|
||||||
## Author: Teilzeit-Jedi
|
## Author: Teilzeit-Jedi
|
||||||
## eMail: tj@teilzeit-jedi.de
|
## eMail: tj@teilzeit-jedi.de
|
||||||
|
|
||||||
## X-Build: Retail
|
## X-Build: Retail
|
||||||
## X-Compatible: 11403
|
## X-Compatible: 11403
|
||||||
## X-Compatible: 30400
|
## X-Compatible: 30401
|
||||||
|
|
||||||
## X-Curse-Project-ID: 385480
|
## X-Curse-Project-ID: 385480
|
||||||
## X-License: GPLv3
|
## X-License: GPLv3
|
||||||
|
@@ -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))
|
||||||
@@ -418,6 +509,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,
|
||||||
|
@@ -72,7 +72,7 @@ function Grichelde:RunTests()
|
|||||||
["OSSO"] = "OCHO",
|
["OSSO"] = "OCHO",
|
||||||
["ooSS"] = "ooCH",
|
["ooSS"] = "ooCH",
|
||||||
["schmeissen"] = "chmeichen",
|
["schmeissen"] = "chmeichen",
|
||||||
["Schön"] = "Chön",
|
["Schö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
|
||||||
|
@@ -3,12 +3,12 @@
|
|||||||
## Title: Grichelde
|
## Title: Grichelde
|
||||||
## Notes: Replaces characters of your chat input line before sending.
|
## Notes: Replaces characters of your chat input line before sending.
|
||||||
## Notes-de: Ersetzt eingegebene Zeichen in der Chat-Zeile vor dem Versenden.
|
## Notes-de: Ersetzt eingegebene Zeichen in der Chat-Zeile vor dem Versenden.
|
||||||
## Version: 1.1.5
|
## Version: 1.1.6
|
||||||
## Author: Teilzeit-Jedi
|
## Author: Teilzeit-Jedi
|
||||||
## eMail: tj@teilzeit-jedi.de
|
## eMail: tj@teilzeit-jedi.de
|
||||||
|
|
||||||
## X-Build: Classic
|
## X-Build: Classic
|
||||||
## X-Compatible: 30400
|
## X-Compatible: 30401
|
||||||
## X-Compatible: 100002
|
## X-Compatible: 100002
|
||||||
|
|
||||||
## X-Curse-Project-ID: 385480
|
## X-Curse-Project-ID: 385480
|
||||||
@@ -45,3 +45,5 @@ GricheldeUpgrade.lua
|
|||||||
GricheldeOptions.lua
|
GricheldeOptions.lua
|
||||||
GricheldeMinimap.lua
|
GricheldeMinimap.lua
|
||||||
GricheldeChat.lua
|
GricheldeChat.lua
|
||||||
|
|
||||||
|
GricheldeTest.lua
|
@@ -1,9 +1,9 @@
|
|||||||
## Interface: 30400
|
## Interface: 30401
|
||||||
|
|
||||||
## Title: Grichelde
|
## Title: Grichelde
|
||||||
## Notes: Replaces characters of your chat input line before sending.
|
## Notes: Replaces characters of your chat input line before sending.
|
||||||
## Notes-de: Ersetzt eingegebene Zeichen in der Chat-Zeile vor dem Versenden.
|
## Notes-de: Ersetzt eingegebene Zeichen in der Chat-Zeile vor dem Versenden.
|
||||||
## Version: 1.1.5
|
## Version: 1.1.6
|
||||||
## Author: Teilzeit-Jedi
|
## Author: Teilzeit-Jedi
|
||||||
## eMail: tj@teilzeit-jedi.de
|
## eMail: tj@teilzeit-jedi.de
|
||||||
|
|
||||||
|
@@ -7,7 +7,7 @@ local LibStub = LibStub
|
|||||||
local gui = LibStub("AceGUI-3.0")
|
local gui = LibStub("AceGUI-3.0")
|
||||||
local reg = LibStub("AceConfigRegistry-3.0")
|
local reg = LibStub("AceConfigRegistry-3.0")
|
||||||
|
|
||||||
local MAJOR, MINOR = "AceConfigDialog-3.0", 85
|
local MAJOR, MINOR = "AceConfigDialog-3.0", 86
|
||||||
local AceConfigDialog, oldminor = LibStub:NewLibrary(MAJOR, MINOR)
|
local AceConfigDialog, oldminor = LibStub:NewLibrary(MAJOR, MINOR)
|
||||||
|
|
||||||
if not AceConfigDialog then return end
|
if not AceConfigDialog then return end
|
||||||
@@ -147,6 +147,7 @@ local stringIsLiteral = {
|
|||||||
width = true,
|
width = true,
|
||||||
image = true,
|
image = true,
|
||||||
fontSize = true,
|
fontSize = true,
|
||||||
|
tooltipHyperlink = true
|
||||||
}
|
}
|
||||||
|
|
||||||
--Is Never a function or method
|
--Is Never a function or method
|
||||||
@@ -501,6 +502,14 @@ local function OptionOnMouseOver(widget, event)
|
|||||||
local tooltip = AceConfigDialog.tooltip
|
local tooltip = AceConfigDialog.tooltip
|
||||||
|
|
||||||
tooltip:SetOwner(widget.frame, "ANCHOR_TOPRIGHT")
|
tooltip:SetOwner(widget.frame, "ANCHOR_TOPRIGHT")
|
||||||
|
|
||||||
|
local tooltipHyperlink = GetOptionsMemberValue("tooltipHyperlink", opt, options, path, appName)
|
||||||
|
if tooltipHyperlink then
|
||||||
|
tooltip:SetHyperlink(tooltipHyperlink)
|
||||||
|
tooltip:Show()
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
local name = GetOptionsMemberValue("name", opt, options, path, appName)
|
local name = GetOptionsMemberValue("name", opt, options, path, appName)
|
||||||
local desc = GetOptionsMemberValue("desc", opt, options, path, appName)
|
local desc = GetOptionsMemberValue("desc", opt, options, path, appName)
|
||||||
local usage = GetOptionsMemberValue("usage", opt, options, path, appName)
|
local usage = GetOptionsMemberValue("usage", opt, options, path, appName)
|
||||||
|
@@ -11,7 +11,7 @@
|
|||||||
-- @release $Id$
|
-- @release $Id$
|
||||||
local CallbackHandler = LibStub("CallbackHandler-1.0")
|
local CallbackHandler = LibStub("CallbackHandler-1.0")
|
||||||
|
|
||||||
local MAJOR, MINOR = "AceConfigRegistry-3.0", 20
|
local MAJOR, MINOR = "AceConfigRegistry-3.0", 21
|
||||||
local AceConfigRegistry = LibStub:NewLibrary(MAJOR, MINOR)
|
local AceConfigRegistry = LibStub:NewLibrary(MAJOR, MINOR)
|
||||||
|
|
||||||
if not AceConfigRegistry then return end
|
if not AceConfigRegistry then return end
|
||||||
@@ -83,6 +83,7 @@ local basekeys={
|
|||||||
dialogHidden=optmethodbool,
|
dialogHidden=optmethodbool,
|
||||||
dropdownHidden=optmethodbool,
|
dropdownHidden=optmethodbool,
|
||||||
cmdHidden=optmethodbool,
|
cmdHidden=optmethodbool,
|
||||||
|
tooltipHyperlink=optstringfunc,
|
||||||
icon=optstringnumberfunc,
|
icon=optstringnumberfunc,
|
||||||
iconCoords=optmethodtable,
|
iconCoords=optmethodtable,
|
||||||
handler=opttable,
|
handler=opttable,
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
--[[ $Id$ ]]
|
--[[ $Id$ ]]
|
||||||
local MAJOR, MINOR = "CallbackHandler-1.0", 7
|
local MAJOR, MINOR = "CallbackHandler-1.0", 8
|
||||||
local CallbackHandler = LibStub:NewLibrary(MAJOR, MINOR)
|
local CallbackHandler = LibStub:NewLibrary(MAJOR, MINOR)
|
||||||
|
|
||||||
if not CallbackHandler then return end -- No upgrade needed
|
if not CallbackHandler then return end -- No upgrade needed
|
||||||
@@ -7,21 +7,16 @@ if not CallbackHandler then return end -- No upgrade needed
|
|||||||
local meta = {__index = function(tbl, key) tbl[key] = {} return tbl[key] end}
|
local meta = {__index = function(tbl, key) tbl[key] = {} return tbl[key] end}
|
||||||
|
|
||||||
-- Lua APIs
|
-- Lua APIs
|
||||||
local error = error
|
local securecallfunction, error = securecallfunction, error
|
||||||
local setmetatable, rawget = setmetatable, rawget
|
local setmetatable, rawget = setmetatable, rawget
|
||||||
local next, select, pairs, type, tostring = next, select, pairs, type, tostring
|
local next, select, pairs, type, tostring = next, select, pairs, type, tostring
|
||||||
|
|
||||||
local xpcall = xpcall
|
|
||||||
|
|
||||||
local function errorhandler(err)
|
|
||||||
return geterrorhandler()(err)
|
|
||||||
end
|
|
||||||
|
|
||||||
local function Dispatch(handlers, ...)
|
local function Dispatch(handlers, ...)
|
||||||
local index, method = next(handlers)
|
local index, method = next(handlers)
|
||||||
if not method then return end
|
if not method then return end
|
||||||
repeat
|
repeat
|
||||||
xpcall(method, errorhandler, ...)
|
securecallfunction(method, ...)
|
||||||
index, method = next(handlers, index)
|
index, method = next(handlers, index)
|
||||||
until not method
|
until not method
|
||||||
end
|
end
|
||||||
|
Reference in New Issue
Block a user