Version 1.1.4
- typos in descriptions - ambiguous variable definitions - bumped version for all versions of WoW (Classic Era, WotLK, Retail) - added TOCs for all versions of WoW, removed release script
This commit is contained in:
parent
a75d631423
commit
97ee953b19
2647
.release/release.sh
2647
.release/release.sh
File diff suppressed because it is too large
Load Diff
@ -3,6 +3,12 @@ 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.4 - 2022-09-28
|
||||||
|
### Changed
|
||||||
|
- typos in descriptions
|
||||||
|
- ambiguous variable definitions
|
||||||
|
- bumped version for all versions of WoW (Classic Era, WotLK, Retail)
|
||||||
|
|
||||||
## Version 1.1.3 - 2021-10-06
|
## Version 1.1.3 - 2021-10-06
|
||||||
### Changed
|
### Changed
|
||||||
- bumped version for all versions of WoW (Classic Era, Season of Mastery, BCC, Retail)
|
- bumped version for all versions of WoW (Classic Era, Season of Mastery, BCC, Retail)
|
||||||
@ -131,7 +137,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
## Version 0.3.0 - 2020-05-27
|
## Version 0.3.0 - 2020-05-27
|
||||||
### Fixed
|
### Fixed
|
||||||
- fixed DB storange and debug printing
|
- fixed DB storage and debug printing
|
||||||
|
|
||||||
## Version 0.2.2 (unreleased) - 2020-05-26
|
## Version 0.2.2 (unreleased) - 2020-05-26
|
||||||
### Added
|
### Added
|
||||||
|
@ -1,37 +1,16 @@
|
|||||||
## Interface: 11401
|
## Interface: 90207
|
||||||
## Interface-Classic: 11401
|
|
||||||
## Interface-BCC: 20502
|
|
||||||
## Interface-Retail: 90100
|
|
||||||
|
|
||||||
## 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.
|
||||||
#@debug@
|
## Version: 1.1.4
|
||||||
## Version: 1.1.3
|
|
||||||
#@end-debug@
|
|
||||||
#@non-debug@
|
|
||||||
# ## Version: @project-version@
|
|
||||||
#@end-non-debug@
|
|
||||||
## Author: Teilzeit-Jedi
|
## Author: Teilzeit-Jedi
|
||||||
## eMail: tj@teilzeit-jedi.de
|
## eMail: tj@teilzeit-jedi.de
|
||||||
|
|
||||||
#@version-classic@
|
## X-Build: Retail
|
||||||
## X-Build: Classic
|
## X-Compatible: 11403
|
||||||
## X-Compatible: 20502
|
## X-Compatible: 20504
|
||||||
## X-Compatible: 90100
|
## X-Compatible: 30400
|
||||||
#@end-version-classic@
|
|
||||||
#@non-version-classic@
|
|
||||||
#@version-bcc@
|
|
||||||
# ## X-Build: BCC
|
|
||||||
# ## X-Compatible: 11401
|
|
||||||
# ## X-Compatible: 90100
|
|
||||||
#@end-version-bcc@
|
|
||||||
#@version-retail@
|
|
||||||
# ## X-Build: Retail
|
|
||||||
# ## X-Compatible: 11401
|
|
||||||
# ## X-Compatible: 20502
|
|
||||||
#@end-version-retail@
|
|
||||||
#@end-non-version-classic@
|
|
||||||
|
|
||||||
## X-Curse-Project-ID: 385480
|
## X-Curse-Project-ID: 385480
|
||||||
## X-License: GPLv3
|
## X-License: GPLv3
|
||||||
@ -42,7 +21,6 @@
|
|||||||
## OptionalDeps: LibStub, CallbackHandler, Ace3, LibDataBroker, LibDBIcon
|
## OptionalDeps: LibStub, CallbackHandler, Ace3, LibDataBroker, LibDBIcon
|
||||||
## SavedVariables: GricheldeDB
|
## SavedVariables: GricheldeDB
|
||||||
|
|
||||||
#@no-lib-strip@
|
|
||||||
Libs\LibStub\LibStub.lua
|
Libs\LibStub\LibStub.lua
|
||||||
Libs\CallbackHandler-1.0\CallbackHandler-1.0.xml
|
Libs\CallbackHandler-1.0\CallbackHandler-1.0.xml
|
||||||
Libs\AceAddon-3.0\AceAddon-3.0.xml
|
Libs\AceAddon-3.0\AceAddon-3.0.xml
|
||||||
@ -56,7 +34,6 @@ Libs\AceGUI-3.0\AceGUI-3.0.xml
|
|||||||
Libs\AceConfig-3.0\AceConfig-3.0.xml
|
Libs\AceConfig-3.0\AceConfig-3.0.xml
|
||||||
Libs\LibDataBroker-1.1\LibDataBroker-1.1.lua
|
Libs\LibDataBroker-1.1\LibDataBroker-1.1.lua
|
||||||
Libs\LibDBIcon-1.0\LibDBIcon-1.0.lua
|
Libs\LibDBIcon-1.0\LibDBIcon-1.0.lua
|
||||||
#@end-no-lib-strip@
|
|
||||||
|
|
||||||
Grichelde.lua
|
Grichelde.lua
|
||||||
GricheldeConstants.lua
|
GricheldeConstants.lua
|
||||||
@ -69,7 +46,3 @@ GricheldeUpgrade.lua
|
|||||||
GricheldeOptions.lua
|
GricheldeOptions.lua
|
||||||
GricheldeMinimap.lua
|
GricheldeMinimap.lua
|
||||||
GricheldeChat.lua
|
GricheldeChat.lua
|
||||||
|
|
||||||
#@do-not-package@
|
|
||||||
GricheldeTest.lua
|
|
||||||
#@end-do-not-package@
|
|
@ -2,9 +2,9 @@
|
|||||||
local _G = _G
|
local _G = _G
|
||||||
local Grichelde = _G.Grichelde or {}
|
local Grichelde = _G.Grichelde or {}
|
||||||
|
|
||||||
local IsAddOnLoaded, assert, nilOrEmpty, pairs, ipairs, spairs, tContains, tFilter, tInsert, tConcat, tSize, tIsEmpty, find, sub, gsub, gmatch, getNextCharUtf8, isLetter, isUpper, isLower, toUpper, toLower, capitalize, bytes2Char, trim, length, lengthUtf8
|
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
|
||||||
= 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.tConcat, Grichelde.F.tSize, 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.find, Grichelde.F.sub, Grichelde.F.gsub, Grichelde.F.gmatch, Grichelde.F.getNextCharUtf8, Grichelde.F.isLetter, Grichelde.F.isUpper, Grichelde.F.isLower, Grichelde.F.toUpper, Grichelde.F.toLower, Grichelde.F.capitalize, 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
|
||||||
-- @param text string
|
-- @param text string
|
||||||
@ -58,7 +58,6 @@ function Grichelde:SplitText(text)
|
|||||||
-- must not enforce UTF-8 support here, as the positions are used
|
-- must not enforce UTF-8 support here, as the positions are used
|
||||||
while ((length(newText) > 0) and (escape < Grichelde.ENDLESS_LOOP_LIMIT)) do
|
while ((length(newText) > 0) and (escape < Grichelde.ENDLESS_LOOP_LIMIT)) do
|
||||||
escape = escape + 1
|
escape = escape + 1
|
||||||
local previousChar = currentChar
|
|
||||||
local first, textAhead = getNextCharUtf8(newText)
|
local first, textAhead = getNextCharUtf8(newText)
|
||||||
currentChar = first
|
currentChar = first
|
||||||
self:DebugPrint("SplitText : currentChar, escape: %s, %s", currentChar, escape)
|
self:DebugPrint("SplitText : currentChar, escape: %s, %s", currentChar, escape)
|
||||||
@ -154,6 +153,24 @@ function Grichelde:SendChunkifiedChatMessage(message, ...)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function Grichelde:ReplaceCharacters(text, replName, replTable, consolidate, replacedTexts)
|
function Grichelde:ReplaceCharacters(text, replName, replTable, consolidate, replacedTexts)
|
||||||
|
local function convertToCaseInsensitivePatternGroup(p)
|
||||||
|
local upperP, lowerP = toUpper(p), toLower(p)
|
||||||
|
--[[
|
||||||
|
if (isUtf8MultiByte(p)) then
|
||||||
|
local sequence = nil
|
||||||
|
for _, byteSequence in spairs(getUtf8Table(upperP)) do
|
||||||
|
sequence = sequence .. byteSequence
|
||||||
|
end
|
||||||
|
else
|
||||||
|
]]
|
||||||
|
if (upperP ~= lowerP) then
|
||||||
|
return upperP .. lowerP
|
||||||
|
else
|
||||||
|
return p
|
||||||
|
end
|
||||||
|
--end
|
||||||
|
end
|
||||||
|
|
||||||
local function convertToCaseInsensitivePattern(pattern)
|
local function convertToCaseInsensitivePattern(pattern)
|
||||||
local ciPattern = ""
|
local ciPattern = ""
|
||||||
local ignored = {'^', '$', '(', ')', '.'}
|
local ignored = {'^', '$', '(', ')', '.'}
|
||||||
@ -184,18 +201,13 @@ function Grichelde:ReplaceCharacters(text, replName, replTable, consolidate, rep
|
|||||||
ciPattern = ciPattern .. "%" .. p
|
ciPattern = ciPattern .. "%" .. p
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
local upperP, lowerP = toUpper(p), toLower(p)
|
ciPattern = ciPattern .. convertToCaseInsensitivePatternGroup(p)
|
||||||
if (upperP ~= lowerP) then
|
|
||||||
ciPattern = ciPattern .. upperP .. lowerP
|
|
||||||
else
|
|
||||||
ciPattern = ciPattern .. p
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
p, patRest = getNextCharUtf8(patRest)
|
p, patRest = getNextCharUtf8(patRest)
|
||||||
end
|
end
|
||||||
ciPattern = ciPattern .. "]"
|
ciPattern = ciPattern .. "]"
|
||||||
else
|
else
|
||||||
ciPattern = ciPattern .. "[" .. Grichelde.F.toUpper(p) .. Grichelde.F.toLower(p) .. "]"
|
ciPattern = ciPattern .. "[" .. convertToCaseInsensitivePatternGroup(p) .. "]"
|
||||||
end
|
end
|
||||||
|
|
||||||
p, patRest = getNextCharUtf8(patRest)
|
p, patRest = getNextCharUtf8(patRest)
|
||||||
@ -204,9 +216,9 @@ function Grichelde:ReplaceCharacters(text, replName, replTable, consolidate, rep
|
|||||||
return ciPattern
|
return ciPattern
|
||||||
end
|
end
|
||||||
|
|
||||||
local function replaceCaptures(text, replaceText, captures)
|
local function replaceCaptures(txt, replaceText, captures)
|
||||||
local replText = replaceText
|
local replText = replaceText
|
||||||
self:TracePrint("replaceCaptures : text: %s, #captures: %d", text, #captures)
|
self:TracePrint("replaceCaptures : txt: %s, #captures: %d", txt, #captures)
|
||||||
|
|
||||||
if (#captures > 0) then
|
if (#captures > 0) then
|
||||||
for i, cap in ipairs(captures) do
|
for i, cap in ipairs(captures) do
|
||||||
@ -285,9 +297,6 @@ function Grichelde:ReplaceCharacters(text, replName, replTable, consolidate, rep
|
|||||||
self:TracePrint("ReplaceCharacters : pos1: %d, pos2: %d", pos1, pos2)
|
self:TracePrint("ReplaceCharacters : pos1: %d, pos2: %d", pos1, pos2)
|
||||||
self:TracePrint("ReplaceCharacters : cap1: %s, cap2: %s, cap3: %s, cap4: %s, cap5: %s, cap6: %s, cap7: %s, cap8: %s, cap9: %s", cap1, cap2, cap3, cap4, cap5, cap6, cap7, cap8, cap9)
|
self:TracePrint("ReplaceCharacters : cap1: %s, cap2: %s, cap3: %s, cap4: %s, cap5: %s, cap6: %s, cap7: %s, cap8: %s, cap9: %s", cap1, cap2, cap3, cap4, cap5, cap6, cap7, cap8, cap9)
|
||||||
while (pos1 ~= nil) and (pos2 ~= nil) and (pos1 <= pos2) do
|
while (pos1 ~= nil) and (pos2 ~= nil) and (pos1 <= pos2) do
|
||||||
-- continue from that position later
|
|
||||||
pos = pos2 + 1
|
|
||||||
|
|
||||||
if doStopOnMatch then
|
if doStopOnMatch then
|
||||||
stopOnMatch = true
|
stopOnMatch = true
|
||||||
end
|
end
|
||||||
@ -297,6 +306,24 @@ function Grichelde:ReplaceCharacters(text, replName, replTable, consolidate, rep
|
|||||||
local post = sub(result, pos2 + 1)
|
local post = sub(result, pos2 + 1)
|
||||||
local wordStart = sub(pre, -1, -1)
|
local wordStart = sub(pre, -1, -1)
|
||||||
local wordEnd = sub(post, 1, 1)
|
local wordEnd = sub(post, 1, 1)
|
||||||
|
self:TracePrint("ReplaceCharacters : result: %s", result)
|
||||||
|
self:TracePrint("ReplaceCharacters : pre: %s, match: %s, post: %s, wordStart: %s, wordEnd: %s", pre, match, post, wordStart, wordEnd)
|
||||||
|
|
||||||
|
--[[
|
||||||
|
self:TracePrint("ReplaceCharacters : pos2: %d, isChar: %s", pos2, isChar(match))
|
||||||
|
while (not isChar(match) and pos2 < length(result)) do
|
||||||
|
pos2 = pos2 + 1
|
||||||
|
pre = sub(result, 1, pos1 - 1)
|
||||||
|
match = sub(result, pos1, pos2)
|
||||||
|
post = sub(result, pos2 + 1)
|
||||||
|
wordStart = sub(pre, -1, -1)
|
||||||
|
wordEnd = sub(post, 1, 1)
|
||||||
|
self:TracePrint("ReplaceCharacters : pos2: %d, isChar: %s", pos2, isChar(match))
|
||||||
|
end
|
||||||
|
]]
|
||||||
|
|
||||||
|
-- continue from that position later
|
||||||
|
pos = pos2 + 1
|
||||||
|
|
||||||
-- additional checks for word boundaries
|
-- additional checks for word boundaries
|
||||||
local doesMatchWhen = false
|
local doesMatchWhen = false
|
||||||
@ -441,8 +468,8 @@ end
|
|||||||
-- @param text string
|
-- @param text string
|
||||||
-- @param replacements table of mappings
|
-- @param replacements table of mappings
|
||||||
-- @return string
|
-- @return string
|
||||||
function Grichelde:ReplaceAndConsolidate(text, replacements)
|
function Grichelde:ReplaceAndConsolidate(text, _replacements)
|
||||||
local replacements = replacements or self.db.profile.replacements or {}
|
local replacements = _replacements or self.db.profile.replacements or {}
|
||||||
self:TracePrint("ReplaceAndConsolidate : replacements")
|
self:TracePrint("ReplaceAndConsolidate : replacements")
|
||||||
self:TracePrint(replacements)
|
self:TracePrint(replacements)
|
||||||
|
|
||||||
@ -531,7 +558,6 @@ function Grichelde:CheckForLink(text, currentChar)
|
|||||||
for _, pattern in ipairs(Grichelde.IGNORE_PATTERNS.LINKS) do
|
for _, pattern in ipairs(Grichelde.IGNORE_PATTERNS.LINKS) do
|
||||||
local pos1, pos2 = find(text, "^" .. pattern)
|
local pos1, pos2 = find(text, "^" .. pattern)
|
||||||
if (pos1 == 1) and (pos2 ~= nil) then
|
if (pos1 == 1) and (pos2 ~= nil) then
|
||||||
local match = sub(text, pos1, pos2)
|
|
||||||
self:DebugPrint("CheckForLink : Found link or texture pattern \"%s\" at (%d, %d)", pattern, pos1, pos2)
|
self:DebugPrint("CheckForLink : Found link or texture pattern \"%s\" at (%d, %d)", pattern, pos1, pos2)
|
||||||
return pos2
|
return pos2
|
||||||
end
|
end
|
||||||
@ -590,10 +616,10 @@ function Grichelde:CheckForRaidTargetMarkers(text, currentChar)
|
|||||||
local translation = toLower(self.L["IgnorePattern_" .. localizedRT])
|
local translation = toLower(self.L["IgnorePattern_" .. localizedRT])
|
||||||
local localizedPattern = "^{" .. translation .. "}"
|
local localizedPattern = "^{" .. translation .. "}"
|
||||||
self:TracePrint("CheckForPreversableText : localizedPattern:", localizedPattern)
|
self:TracePrint("CheckForPreversableText : localizedPattern:", localizedPattern)
|
||||||
local pos1, pos2 = find(lowerText, localizedPattern)
|
local p1, p2 = find(lowerText, localizedPattern)
|
||||||
if (pos1 == 1) and (pos2 ~= nil) then
|
if (p1 == 1) and (p2 ~= nil) then
|
||||||
self:DebugPrint("CheckForPreversableText : Found localized raid target marker \"%s\" at (%d, %d)", localizedPattern, pos1, pos2)
|
self:DebugPrint("CheckForPreversableText : Found localized raid target marker \"%s\" at (%d, %d)", localizedPattern, p1, p2)
|
||||||
return pos2
|
return p2
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -636,9 +662,9 @@ end
|
|||||||
-- @param previousChar string(1) previous character of the text, otherwise unreachable
|
-- @param previousChar string(1) previous character of the text, otherwise unreachable
|
||||||
-- @param preserveEmotes boolean ignore replacements for emotes, for testing purposes
|
-- @param preserveEmotes boolean ignore replacements for emotes, for testing purposes
|
||||||
-- @return number
|
-- @return number
|
||||||
function Grichelde:CheckForPreversableText(text, currentChar, previousChar, replaceEmotes)
|
function Grichelde:CheckForPreversableText(text, currentChar, previousChar, _replaceEmotes)
|
||||||
self:DebugPrint("CheckForPreversableText : text:", text)
|
self:DebugPrint("CheckForPreversableText : text:", text)
|
||||||
local replaceEmotes = replaceEmotes or self.db.profile.channels.emote or false
|
local replaceEmotes = _replaceEmotes or self.db.profile.channels.emote or false
|
||||||
|
|
||||||
local linkPos = self:CheckForLink(text, currentChar)
|
local linkPos = self:CheckForLink(text, currentChar)
|
||||||
if (linkPos ~= nil) then
|
if (linkPos ~= nil) then
|
||||||
@ -679,11 +705,11 @@ end
|
|||||||
-- @param text string the text to apply the mappings on
|
-- @param text string the text to apply the mappings on
|
||||||
-- @param preserveEmotes boolean ignore replacements for emotes, for testing purposes
|
-- @param preserveEmotes boolean ignore replacements for emotes, for testing purposes
|
||||||
-- @return string
|
-- @return string
|
||||||
function Grichelde:ReplaceText(text, replacements, replaceEmotes)
|
function Grichelde:ReplaceText(text, _replacements, _replaceEmotes)
|
||||||
local lookAheads = { '|', '*', '<', '%', '{', '(', 'o' }
|
local lookAheads = { '|', '*', '<', '%', '{', '(', 'o' }
|
||||||
local newText = text
|
local newText = text
|
||||||
local preserveEmotes = replaceEmotes or self.db.profile.channels.emote or false
|
local preserveEmotes = _replaceEmotes or self.db.profile.channels.emote or false
|
||||||
local replacements = replacements or self.db.profile.replacements or {}
|
local replacements = _replacements or self.db.profile.replacements or {}
|
||||||
local finalText, replaceText = "", ""
|
local finalText, replaceText = "", ""
|
||||||
local currentChar
|
local currentChar
|
||||||
local escape = 0
|
local escape = 0
|
||||||
|
@ -5,7 +5,9 @@ local Grichelde = _G.Grichelde or {}
|
|||||||
-- constants and upvalues
|
-- constants and upvalues
|
||||||
Grichelde.LOG_LEVEL = { DEBUG = 1, TRACE = 2 }
|
Grichelde.LOG_LEVEL = { DEBUG = 1, TRACE = 2 }
|
||||||
|
|
||||||
|
-- chat input in client is limited to 255 bytes (unicode length is less)
|
||||||
Grichelde.INPUT_LIMIT = 255
|
Grichelde.INPUT_LIMIT = 255
|
||||||
|
-- safety measure in case malformed user input causes infinite loops on string parsing
|
||||||
Grichelde.ENDLESS_LOOP_LIMIT = 10000
|
Grichelde.ENDLESS_LOOP_LIMIT = 10000
|
||||||
Grichelde.MAPPING_OFFSET = 10
|
Grichelde.MAPPING_OFFSET = 10
|
||||||
Grichelde.MINIMAP_ENABLED = 1.0
|
Grichelde.MINIMAP_ENABLED = 1.0
|
||||||
@ -169,11 +171,11 @@ local function nilOrEmpty(s)
|
|||||||
return s == nil or s:trim() == ""
|
return s == nil or s:trim() == ""
|
||||||
end
|
end
|
||||||
|
|
||||||
local function spairs(t, orderFunc)
|
local function spairs(tbl, orderFunc)
|
||||||
-- collect the keys
|
-- collect the keys
|
||||||
local sortedKeys = {}
|
local sortedKeys = {}
|
||||||
-- for every non-nil value
|
-- for every non-nil value
|
||||||
for key, _ in Grichelde.F.pairs(t) do
|
for key, _ in Grichelde.F.pairs(tbl) do
|
||||||
Grichelde.F.tInsert(sortedKeys, key)
|
Grichelde.F.tInsert(sortedKeys, key)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -189,22 +191,22 @@ local function spairs(t, orderFunc)
|
|||||||
return function()
|
return function()
|
||||||
it = it + 1
|
it = it + 1
|
||||||
if (sortedKeys[it] ~= nil) then
|
if (sortedKeys[it] ~= nil) then
|
||||||
return sortedKeys[it], t[sortedKeys[it]]
|
return sortedKeys[it], tbl[sortedKeys[it]]
|
||||||
else
|
else
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function tFilter(t, condition, extract)
|
local function tFilter(type, condition, extract)
|
||||||
local filtered = {}
|
local filtered = {}
|
||||||
for key, value in Grichelde.F.pairs(t) do
|
for key, value in Grichelde.F.pairs(type) do
|
||||||
local cond = false
|
local cond = false
|
||||||
if (condition) then
|
if (condition) then
|
||||||
local t = Grichelde.F.type(condition)
|
local typ = Grichelde.F.type(condition)
|
||||||
if (t == "function") then
|
if (typ == "function") then
|
||||||
cond = condition(t, key, value)
|
cond = condition(typ, key, value)
|
||||||
elseif (t == "string") or (t == "number") then
|
elseif (typ == "string") or (typ == "number") then
|
||||||
cond = (value == condition)
|
cond = (value == condition)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -212,7 +214,7 @@ local function tFilter(t, condition, extract)
|
|||||||
if (cond) then
|
if (cond) then
|
||||||
local val = value
|
local val = value
|
||||||
if (extract and (Grichelde.F.type(extract) == "function")) then
|
if (extract and (Grichelde.F.type(extract) == "function")) then
|
||||||
val = extract(t, key, value)
|
val = extract(type, key, value)
|
||||||
end
|
end
|
||||||
Grichelde.F.tInsert(filtered, val)
|
Grichelde.F.tInsert(filtered, val)
|
||||||
end
|
end
|
||||||
@ -220,20 +222,20 @@ local function tFilter(t, condition, extract)
|
|||||||
return filtered
|
return filtered
|
||||||
end
|
end
|
||||||
|
|
||||||
local function tSize(t)
|
local function tSize(tbl)
|
||||||
local size = 0
|
local size = 0
|
||||||
if (t ~= nil) then
|
if (tbl ~= nil) then
|
||||||
-- for every non-nil value
|
-- for every non-nil value
|
||||||
for _, _ in Grichelde.F.pairs(t) do
|
for _, _ in Grichelde.F.pairs(tbl) do
|
||||||
size = size + 1
|
size = size + 1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return size
|
return size
|
||||||
end
|
end
|
||||||
|
|
||||||
local function tIsEmpty(t)
|
local function tIsEmpty(tbl)
|
||||||
if (not t) then return true end
|
if (not tbl) then return true end
|
||||||
return Grichelde.F.tNext(t) == nil
|
return Grichelde.F.tNext(tbl) == nil
|
||||||
end
|
end
|
||||||
|
|
||||||
local function tClone(orig)
|
local function tClone(orig)
|
||||||
@ -323,11 +325,11 @@ local function isCapital(word)
|
|||||||
return false
|
return false
|
||||||
else
|
else
|
||||||
local first, rest = Grichelde.F.getNextCharUtf8(word)
|
local first, rest = Grichelde.F.getNextCharUtf8(word)
|
||||||
local isCapital = Grichelde.F.isUpper(first)
|
local isCap = Grichelde.F.isUpper(first)
|
||||||
if (rest ~= nil) then
|
if (rest ~= nil) then
|
||||||
return isCapital and Grichelde.F.isLower(rest)
|
return isCap and Grichelde.F.isLower(rest)
|
||||||
else
|
else
|
||||||
return isCapital
|
return isCap
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -346,8 +348,8 @@ local function capitalize(word)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function color(color, text)
|
local function color(colour, text)
|
||||||
return color .. text .. Grichelde.COLOR_CODES.CLOSE
|
return colour .. text .. Grichelde.COLOR_CODES.CLOSE
|
||||||
end
|
end
|
||||||
|
|
||||||
local function cPrefix(text)
|
local function cPrefix(text)
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
local _G = _G
|
local _G = _G
|
||||||
local Grichelde = _G.Grichelde or {}
|
local Grichelde = _G.Grichelde or {}
|
||||||
|
|
||||||
local pairs, tInsert, tClone, tWipe, unpack, join, toString
|
local pairs, tInsert, tClone, unpack, join, toString
|
||||||
= Grichelde.F.pairs, Grichelde.F.tInsert, Grichelde.F.tClone, Grichelde.F.tWipe, Grichelde.F.unpack, Grichelde.F.join, Grichelde.F.toString
|
= Grichelde.F.pairs, Grichelde.F.tInsert, Grichelde.F.tClone, Grichelde.F.unpack, Grichelde.F.join, Grichelde.F.toString
|
||||||
|
|
||||||
function Grichelde.getDefaultConfig()
|
function Grichelde.getDefaultConfig()
|
||||||
return {
|
return {
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
local _G = _G
|
local _G = _G
|
||||||
local Grichelde = _G.Grichelde or {}
|
local Grichelde = _G.Grichelde or {}
|
||||||
|
|
||||||
local cPrefix, cGreen, cRed
|
local cGreen, cRed
|
||||||
= Grichelde.F.cPrefix, Grichelde.F.cGreen, Grichelde.F.cRed
|
= Grichelde.F.cGreen, Grichelde.F.cRed
|
||||||
|
|
||||||
|
|
||||||
--- add Minimap button
|
--- add Minimap button
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
local _G = _G
|
local _G = _G
|
||||||
local Grichelde = _G.Grichelde or {}
|
local Grichelde = _G.Grichelde or {}
|
||||||
|
|
||||||
local find, pairs, tSize, cRed, cGreen, format = Grichelde.F.find, Grichelde.F.pairs, Grichelde.F.tSize, Grichelde.F.cRed, Grichelde.F.cGreen, Grichelde.F.format
|
local find, pairs, tSize, cRed, cGreen = Grichelde.F.find, Grichelde.F.pairs, Grichelde.F.tSize, Grichelde.F.cRed, Grichelde.F.cGreen
|
||||||
|
|
||||||
function Grichelde:TestMatch(text, pattern)
|
function Grichelde:TestMatch(text, pattern)
|
||||||
-- disable debug print out for testing
|
-- disable debug print out for testing
|
||||||
@ -17,6 +17,7 @@ function Grichelde:TestMatch(text, pattern)
|
|||||||
Grichelde.logLevel = oldLogLevel
|
Grichelde.logLevel = oldLogLevel
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Invoke ingame with /run Grichelde:RunTests()
|
||||||
function Grichelde:RunTests()
|
function Grichelde:RunTests()
|
||||||
local function test(name, replacements, testData, replaceEmotes)
|
local function test(name, replacements, testData, replaceEmotes)
|
||||||
local i, ok, size = 0, 0, tSize(testData)
|
local i, ok, size = 0, 0, tSize(testData)
|
||||||
@ -778,7 +779,7 @@ function Grichelde:RunTests()
|
|||||||
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
|
||||||
self:PrefixedPrint("%d test %s, %d tests %s", all - ok, cRed("failed"), ok, cGreen("passed"))
|
self:PrefixedPrint("%d test%s %s, %d tests %s", all - ok, all - ok > 1 and "s" or "", cRed("failed"), ok, cGreen("passed"))
|
||||||
end
|
end
|
||||||
|
|
||||||
-- restore old loglevel
|
-- restore old loglevel
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
local _G = _G
|
local _G = _G
|
||||||
local Grichelde = _G.Grichelde or {}
|
local Grichelde = _G.Grichelde or {}
|
||||||
|
|
||||||
local pairs, tSize, tClone, find, sub, cGreen, cOrange, cRed, toNumber
|
local pairs, tClone, find, sub, cGreen, cOrange, cRed, toNumber
|
||||||
= Grichelde.F.pairs, Grichelde.F.tSize,Grichelde.F.tClone, Grichelde.F.find, Grichelde.F.sub, Grichelde.F.cGreen, Grichelde.F.cOrange, Grichelde.F.cRed, Grichelde.F.toNumber
|
= Grichelde.F.pairs, Grichelde.F.tClone, Grichelde.F.find, Grichelde.F.sub, Grichelde.F.cGreen, Grichelde.F.cOrange, Grichelde.F.cRed, Grichelde.F.toNumber
|
||||||
|
|
||||||
function Grichelde:Upgrade_To_v060()
|
function Grichelde:Upgrade_To_v060()
|
||||||
self:PrefixedPrint(self.L.Upgrade_ToVersion, cOrange("0.6.0"))
|
self:PrefixedPrint(self.L.Upgrade_ToVersion, cOrange("0.6.0"))
|
||||||
|
48
Grichelde_TBC.toc
Normal file
48
Grichelde_TBC.toc
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
## Interface: 20504
|
||||||
|
|
||||||
|
## Title: Grichelde
|
||||||
|
## Notes: Replaces characters of your chat input line before sending.
|
||||||
|
## Notes-de: Ersetzt eingegebene Zeichen in der Chat-Zeile vor dem Versenden.
|
||||||
|
## Version: 1.1.4
|
||||||
|
## Author: Teilzeit-Jedi
|
||||||
|
## eMail: tj@teilzeit-jedi.de
|
||||||
|
|
||||||
|
## X-Build: BCC
|
||||||
|
## X-Compatible: 11403
|
||||||
|
## X-Compatible: 30400
|
||||||
|
## X-Compatible: 90207
|
||||||
|
|
||||||
|
## X-Curse-Project-ID: 385480
|
||||||
|
## X-License: GPLv3
|
||||||
|
## X-Category: Chat/Communication
|
||||||
|
## X-Credits: Teilzeit-Jedi
|
||||||
|
## X-Embeds: LibStub, CallbackHandler, Ace3, LibDataBroker, LibDBIcon
|
||||||
|
|
||||||
|
## OptionalDeps: LibStub, CallbackHandler, Ace3, LibDataBroker, LibDBIcon
|
||||||
|
## SavedVariables: GricheldeDB
|
||||||
|
|
||||||
|
Libs\LibStub\LibStub.lua
|
||||||
|
Libs\CallbackHandler-1.0\CallbackHandler-1.0.xml
|
||||||
|
Libs\AceAddon-3.0\AceAddon-3.0.xml
|
||||||
|
Libs\AceLocale-3.0\AceLocale-3.0.xml
|
||||||
|
Libs\AceEvent-3.0\AceEvent-3.0.xml
|
||||||
|
Libs\AceHook-3.0\AceHook-3.0.xml
|
||||||
|
Libs\AceConsole-3.0\AceConsole-3.0.xml
|
||||||
|
Libs\AceDB-3.0\AceDB-3.0.xml
|
||||||
|
Libs\AceDBOptions-3.0\AceDBOptions-3.0.xml
|
||||||
|
Libs\AceGUI-3.0\AceGUI-3.0.xml
|
||||||
|
Libs\AceConfig-3.0\AceConfig-3.0.xml
|
||||||
|
Libs\LibDataBroker-1.1\LibDataBroker-1.1.lua
|
||||||
|
Libs\LibDBIcon-1.0\LibDBIcon-1.0.lua
|
||||||
|
|
||||||
|
Grichelde.lua
|
||||||
|
GricheldeConstants.lua
|
||||||
|
|
||||||
|
localisation.xml
|
||||||
|
|
||||||
|
GricheldeUtils.lua
|
||||||
|
GricheldeDatabase.lua
|
||||||
|
GricheldeUpgrade.lua
|
||||||
|
GricheldeOptions.lua
|
||||||
|
GricheldeMinimap.lua
|
||||||
|
GricheldeChat.lua
|
48
Grichelde_Vanilla.toc
Normal file
48
Grichelde_Vanilla.toc
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
## Interface: 11403
|
||||||
|
|
||||||
|
## Title: Grichelde
|
||||||
|
## Notes: Replaces characters of your chat input line before sending.
|
||||||
|
## Notes-de: Ersetzt eingegebene Zeichen in der Chat-Zeile vor dem Versenden.
|
||||||
|
## Version: 1.1.4
|
||||||
|
## Author: Teilzeit-Jedi
|
||||||
|
## eMail: tj@teilzeit-jedi.de
|
||||||
|
|
||||||
|
## X-Build: Classic
|
||||||
|
## X-Compatible: 20504
|
||||||
|
## X-Compatible: 30400
|
||||||
|
## X-Compatible: 90207
|
||||||
|
|
||||||
|
## X-Curse-Project-ID: 385480
|
||||||
|
## X-License: GPLv3
|
||||||
|
## X-Category: Chat/Communication
|
||||||
|
## X-Credits: Teilzeit-Jedi
|
||||||
|
## X-Embeds: LibStub, CallbackHandler, Ace3, LibDataBroker, LibDBIcon
|
||||||
|
|
||||||
|
## OptionalDeps: LibStub, CallbackHandler, Ace3, LibDataBroker, LibDBIcon
|
||||||
|
## SavedVariables: GricheldeDB
|
||||||
|
|
||||||
|
Libs\LibStub\LibStub.lua
|
||||||
|
Libs\CallbackHandler-1.0\CallbackHandler-1.0.xml
|
||||||
|
Libs\AceAddon-3.0\AceAddon-3.0.xml
|
||||||
|
Libs\AceLocale-3.0\AceLocale-3.0.xml
|
||||||
|
Libs\AceEvent-3.0\AceEvent-3.0.xml
|
||||||
|
Libs\AceHook-3.0\AceHook-3.0.xml
|
||||||
|
Libs\AceConsole-3.0\AceConsole-3.0.xml
|
||||||
|
Libs\AceDB-3.0\AceDB-3.0.xml
|
||||||
|
Libs\AceDBOptions-3.0\AceDBOptions-3.0.xml
|
||||||
|
Libs\AceGUI-3.0\AceGUI-3.0.xml
|
||||||
|
Libs\AceConfig-3.0\AceConfig-3.0.xml
|
||||||
|
Libs\LibDataBroker-1.1\LibDataBroker-1.1.lua
|
||||||
|
Libs\LibDBIcon-1.0\LibDBIcon-1.0.lua
|
||||||
|
|
||||||
|
Grichelde.lua
|
||||||
|
GricheldeConstants.lua
|
||||||
|
|
||||||
|
localisation.xml
|
||||||
|
|
||||||
|
GricheldeUtils.lua
|
||||||
|
GricheldeDatabase.lua
|
||||||
|
GricheldeUpgrade.lua
|
||||||
|
GricheldeOptions.lua
|
||||||
|
GricheldeMinimap.lua
|
||||||
|
GricheldeChat.lua
|
48
Grichelde_Wrath.toc
Normal file
48
Grichelde_Wrath.toc
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
## Interface: 30400
|
||||||
|
|
||||||
|
## Title: Grichelde
|
||||||
|
## Notes: Replaces characters of your chat input line before sending.
|
||||||
|
## Notes-de: Ersetzt eingegebene Zeichen in der Chat-Zeile vor dem Versenden.
|
||||||
|
## Version: 1.1.4
|
||||||
|
## Author: Teilzeit-Jedi
|
||||||
|
## eMail: tj@teilzeit-jedi.de
|
||||||
|
|
||||||
|
## X-Build: WotLK
|
||||||
|
## X-Compatible: 11403
|
||||||
|
## X-Compatible: 20504
|
||||||
|
## X-Compatible: 90207
|
||||||
|
|
||||||
|
## X-Curse-Project-ID: 385480
|
||||||
|
## X-License: GPLv3
|
||||||
|
## X-Category: Chat/Communication
|
||||||
|
## X-Credits: Teilzeit-Jedi
|
||||||
|
## X-Embeds: LibStub, CallbackHandler, Ace3, LibDataBroker, LibDBIcon
|
||||||
|
|
||||||
|
## OptionalDeps: LibStub, CallbackHandler, Ace3, LibDataBroker, LibDBIcon
|
||||||
|
## SavedVariables: GricheldeDB
|
||||||
|
|
||||||
|
Libs\LibStub\LibStub.lua
|
||||||
|
Libs\CallbackHandler-1.0\CallbackHandler-1.0.xml
|
||||||
|
Libs\AceAddon-3.0\AceAddon-3.0.xml
|
||||||
|
Libs\AceLocale-3.0\AceLocale-3.0.xml
|
||||||
|
Libs\AceEvent-3.0\AceEvent-3.0.xml
|
||||||
|
Libs\AceHook-3.0\AceHook-3.0.xml
|
||||||
|
Libs\AceConsole-3.0\AceConsole-3.0.xml
|
||||||
|
Libs\AceDB-3.0\AceDB-3.0.xml
|
||||||
|
Libs\AceDBOptions-3.0\AceDBOptions-3.0.xml
|
||||||
|
Libs\AceGUI-3.0\AceGUI-3.0.xml
|
||||||
|
Libs\AceConfig-3.0\AceConfig-3.0.xml
|
||||||
|
Libs\LibDataBroker-1.1\LibDataBroker-1.1.lua
|
||||||
|
Libs\LibDBIcon-1.0\LibDBIcon-1.0.lua
|
||||||
|
|
||||||
|
Grichelde.lua
|
||||||
|
GricheldeConstants.lua
|
||||||
|
|
||||||
|
localisation.xml
|
||||||
|
|
||||||
|
GricheldeUtils.lua
|
||||||
|
GricheldeDatabase.lua
|
||||||
|
GricheldeUpgrade.lua
|
||||||
|
GricheldeOptions.lua
|
||||||
|
GricheldeMinimap.lua
|
||||||
|
GricheldeChat.lua
|
9
Libs/LibStub/LibStub.toc
Normal file
9
Libs/LibStub/LibStub.toc
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
## Interface: 20400
|
||||||
|
## Title: Lib: LibStub
|
||||||
|
## Notes: Universal Library Stub
|
||||||
|
## Credits: Kaelten, Cladhaire, ckknight, Mikk, Ammo, Nevcairiel
|
||||||
|
## X-Website: http://jira.wowace.com/browse/LS
|
||||||
|
## X-Category: Library
|
||||||
|
## X-License: Public Domain
|
||||||
|
|
||||||
|
LibStub.lua
|
@ -1,6 +1,6 @@
|
|||||||
# Grichelde - Text replacer
|
# Grichelde - Text replacer
|
||||||
|
|
||||||
Grichelde is a WoW Addon for Classic, Burning Crusade Classic and Retail (Shadowlands) that replaces any characters or words you typed in a chat input line according to your replacement rules.
|
Grichelde is a WoW Addon for Classic, Wrath of the Lich King Classic and Retail (Shadowlands) that replaces any characters or words you typed in a chat input line according to your replacement rules.
|
||||||
The replacement is done **before** the text is send to other players/in the target channel. It does **not** change text other players have written in the chat, but the text they will see **from you**.
|
The replacement is done **before** the text is send to other players/in the target channel. It does **not** change text other players have written in the chat, but the text they will see **from you**.
|
||||||
|
|
||||||
Its purpose is to simulate a speaking disability of your toon and hereby strengthen immersion in roleplay.
|
Its purpose is to simulate a speaking disability of your toon and hereby strengthen immersion in roleplay.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user