Version 0.9.1-rc

- emote detection mixed in other channels
- minimap button and dialog no longer resets active state after profile change
- default entries are no longer shown after example import
- better handling of capture groups and character sets
This commit is contained in:
2020-08-01 01:35:47 +02:00
parent bafb116bb9
commit 45099a9a3b
17 changed files with 326 additions and 163 deletions

View File

@@ -2,8 +2,8 @@
local _G = _G
local Grichelde = _G.Grichelde or {}
local pairs, tInsert, tClone, unpack, join, toString
= Grichelde.F.pairs, Grichelde.F.tInsert, Grichelde.F.tClone, Grichelde.F.unpack, Grichelde.F.join, Grichelde.F.toString
local pairs, tInsert, tClone, tWipe, unpack, join, toString
= Grichelde.F.pairs, Grichelde.F.tInsert, Grichelde.F.tClone, Grichelde.F.tWipe, Grichelde.F.unpack, Grichelde.F.join, Grichelde.F.toString
function Grichelde.getDefaultConfig()
return {
@@ -24,7 +24,7 @@ function Grichelde.getDefaultConfig()
},
replacements = {
["**"] = {
order = 9999,
order = 999,
searchText = "",
replaceText = "",
exactCase = false,
@@ -32,34 +32,52 @@ function Grichelde.getDefaultConfig()
matchWhen = 2,
stopOnMatch = false,
},
replacement_10 = {
order = 10,
searchText = "s",
replaceText = "ch",
},
replacement_11 = {
order = 11,
searchText = "t",
replaceText = "ck",
},
replacement_12 = {
order = 12,
searchText = "p",
replaceText = "b",
},
}
}
}
end
function Grichelde.getDefaultSampleMappings()
return {
replacement_10 = {
order = 10,
searchText = "s",
replaceText = "ch",
exactCase = false,
consolidate = true,
matchWhen = 2,
stopOnMatch = false,
},
replacement_11 = {
order = 11,
searchText = "t",
replaceText = "ck",
exactCase = false,
consolidate = true,
matchWhen = 2,
stopOnMatch = false,
},
replacement_12 = {
order = 12,
searchText = "p",
replaceText = "b",
exactCase = false,
consolidate = true,
matchWhen = 2,
stopOnMatch = false,
}
}
end
function Grichelde:LoadDatabase()
local db = LibStub("AceDB-3.0"):New(self.name .."DB", self.getDefaultConfig(), true)
db.RegisterCallback(self, "OnNewProfile", "RefreshOptions")
db.RegisterCallback(self, "OnProfileChanged", "RefreshOptions")
db.RegisterCallback(self, "OnProfileDeleted", "RefreshOptions")
db.RegisterCallback(self, "OnProfileCopied", "RefreshOptions")
db.RegisterCallback(self, "OnProfileReset", "RefreshOptions")
db.RegisterCallback(self, "OnNewProfile", "RefreshProfiles")
db.RegisterCallback(self, "OnProfileChanged", "RefreshProfiles")
db.RegisterCallback(self, "OnProfileDeleted", "RefreshProfiles")
db.RegisterCallback(self, "OnProfileCopied", "RefreshProfiles")
db.RegisterCallback(self, "OnProfileReset", "RefreshProfiles")
db.RegisterCallback(self, "OnProfileShutdown", "RefreshProfiles")
return db
end
@@ -104,15 +122,15 @@ end
--- Sorts a replacements table by order sub-field and rename.
--- Do NOT reassign self.db.profile.replacements here or with its output as it will break defaults
function Grichelde:ReorderReplacements()
local replacements = self.db.profile.replacements or {}
function Grichelde:ReorderReplacements(replacements)
local repls = replacements or self.db.profile.replacements or {}
self:TracePrint("ReorderReplacements : unsorted table")
self:TracePrint(replacements)
self:TracePrint(repls)
local orderToName = {}
local size = 0
for replName, replTable in pairs(replacements) do
for replName, replTable in pairs(repls) do
size = size + 1
tInsert(orderToName, replTable.order, replName)
end
@@ -125,31 +143,19 @@ function Grichelde:ReorderReplacements()
while count < size do
local replName = orderToName[index]
if (replName ~= nil) and (replacements[replName] ~= nil) then
if (replName ~= nil) and (repls[replName] ~= nil) then
self:TracePrint("ReorderReplacements : replName: %s, replTable", replName)
self:TracePrint(replacements[replName])
self:TracePrint(repls[replName])
local order = Grichelde.MAPPING_OFFSET + count
sorted["replacement_" .. order] = tClone(replacements[replName])
sorted["replacement_" .. order] = tClone(repls[replName])
sorted["replacement_" .. order].order = order
count = count + 1
end
index = index + 1
if ( index > 10000) then break end
if (index > 999) then break end
end
-- self:TracePrint("ReorderReplacements : sorted")
-- self:TracePrint(sorted)
-- do NOT set self.db.profile.replacements = {} it will break defaults
for replName, _ in pairs(replacements) do
replacements[replName] = nil
end
-- copy over sorted replacements
for replName, replTable in pairs(sorted) do
replacements[replName] = replTable
end
self:DebugPrint("ReorderReplacements : sorted table")
self:DebugPrint(self.db.profile.replacements)
return sorted
end