1 - Problems with TagCompiler-1.0
i am the current "maintainer" of the version of Aloft over at WoWInterface.
a user reported a problem with text tags recently, using TagCompiler-1.0 r70. i dug into it, and i will lay it out for you (on the assumption it might need attention, and the library author would have more coherent ideas about what to do with it than i would).
if an Aloft text field (i.e. "Name Text") contains the following tag text:
> [IsFriendly:Name:White][~IsFriendly:Name:Red]
this results in a formatting function loadstring that looks like this (reformatted slightly for readability):
> local TagCompiler = AceLibrary("TagCompiler-1.0")
> local tagMethodHexColor = TagCompiler.tagCompilerData["HexColor"].method
> return function(data)
> return
> tagMethodHexColor(data, (data.type == "friendlyPlayer" or data.type == "friendlyNPC") and data.name, "ffffff")..
> tagMethodHexColor(data, not ((data.type == "friendlyPlayer" or data.type == "friendlyNPC")) and data.name, "ff0000")
> end
in this sort of mutually-exclusive tag construct, one or the other of the boolean conditions involving "(data.type == "friendlyPlayer" or data.type == "friendlyNPC")" is going to evaluate to "false" for any given unit, and "false" will be passed into the "value" parameter of TagCompiler.CommonTagData.HexColor.method
> method = function(data, value, colorValue) return value and ("|cff"..colorValue..value.."|r") end,
this function returns "false", not a string, and this results in a "Attempt to concatenate boolean value" error back up in the formatting function loadstring. what i think i need in tag methods like this one is something like:
> method = function(data, value, colorValue) return (value and ("|cff"..colorValue..value.."|r")) or "" end,
so that i get an empty string out of the formatting process if "value" evaluates to "false".
what do you think? should this instead be done a completely different way at the tag level to begin with (ColorIf, or whatever)? if so, i can pass that along to the user. in the meantime, i have tweaked my local copy of TagCompiler-1.0 to generate empty strings, as a safety, out of formatting that should ultimately return strings. i don't know what side-effects that could have (i will do some testing).
thanks for any ideas you can contribute.
| User | When | Change |
|---|---|---|
| acapela | Wed, 24 Dec 2008 00:25:50 | Create |
Facts
- Reported on
- 24 Dec 2008
- Status
- New - Issue has not had initial review yet.
- Type
- Defect - A shortcoming, fault, or imperfection
- Priority
- Medium - Normal priority.