vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
--[[
This is the basic template for adding a variable:

["variable"] = { func = function(text, unit)
                code that creates the value that replaces your variable
                text = TipBuddy_gsub(text, 'variable', value);
                return text;
        end,

variable - Can be anything you want and doesn't necessarily have to be preceded with a $.
func - This is the function called when the variable needs to be updated.
        text - This is the entire text of the TextBox and must be returned after it is modified.
        unit - This is the unit ID (party1, player, target, etc.) that the TextBox refers to.
        No other parameters will be passed to your function and those 2 will always be passed.
        text = TipBuddy_gsub(text, 'variable', value) - This line is used to replace the variable 
        with the value you generated in the preceding code.  It handles trimming leading spaces 
        if value is nil or false.
--]]

TB_VARIABLE_FUNCTIONS = {
        -- New Line (resets coloring)
        ["$nl"] = { func = function(text, unit)
                                text = string.gsub(text, '$nl', "\n");
                                return text;
                end,
                },

        -- Carriage Return (resets coloring)
        ["\n"] = { func = function(text, unit)
                                text = string.gsub(text, "\n", "|r\n");
                                return text;
                end,
                },
        -- Name
        ["$nm"] = { func = function(text, unit)
                                local unitname = UnitName(unit);
                                if (not unitname) then unitname = unit; end
                                text = TipBuddy_gsub(text, '$nm', unitname, "nm");
                                return text;
                end,
                },

        --Guild - Returns guild name for PCs, title for NPCs
        ["$gu"] = { func = function(text, unit)
                        local value = TipBuddy.gtt_guild;
                        text = TipBuddy_gsub(text, '$gu', value, "gu");
                        return text;
                end,
                },

        --Guild Title - returns the player's title rank in their guild
        ["$gt"] = { func = function(text, unit)
                        local _, value = GetGuildInfo(unit);
                        text = TipBuddy_gsub(text, '$gt', value, "gt");
                        return text;
                end,
                },

        -- Level
        ["$lv"] = { func = function(text, unit)
                                TipBuddy.gtt_level = UnitLevel(unit);
                                local level = TipBuddy.gtt_level;
                                if (level == -1) then
                                        level = "??";   
                                end
                                text = TipBuddy_gsub(text, '$lv', level, "lv");
                                return text;
                end,
                },

        -- Unit's Class
        ["$cl"] = { func = function(text, unit)
                        --local class = TipBuddy.gtt_class;
                        local class = UnitClass(unit);
                        text = TipBuddy_gsub(text, '$cl', class, "cl");
                        return text;
                end,
                },

        -- Race (players only)
        ["$rc"] = { func = function(text, unit)
                        local race = UnitRace(unit);
                        text = TipBuddy_gsub(text, '$rc', race, "rc");
                        return text;
                end,
                },

        -- Faction - Horde, Alliance, or nothing (players only)
        ["$fa"] = { func = function(text, unit)
                        local value = UnitFactionGroup(unit);
                        if (not UnitName(unit)) then value = "faction"; end
                        text = TipBuddy_gsub(text, '$fa', value, "fa");
                        return text;
                end,
                },

        -- City Faction - Stormwind, Darkspear Trolls, etc. (NPCs only)
        ["$cf"] = { func = function(text, unit)
                        local value = TipBuddy.gtt_cityfac;
                        if (not UnitName(unit)) then value = "city faction"; end
                        text = TipBuddy_gsub(text, '$cf', value, "cf");
                        return text;
                end,
                },

        -- Current Health (actual)
        ["$hc"] = { func = function(text, unit)
                        local health = TB_GetHealth_Text( unit, "current" );
                        text = TipBuddy_gsub(text, '$hc', health, "hc");
                        return text;
                end,
                },

        -- Max Health (actual)
        ["$hm"] = { func = function(text, unit)
                        local healthmax = TB_GetHealth_Text( unit, "max" );
                        text = TipBuddy_gsub(text, '$hm', healthmax, "hm");
                        return text;
                end,
                },

        -- Health as a percent
        ["$hp"] = { func = function(text, unit)
                        local health = TB_GetHealth_Text( unit, "percent" );
                        text = TipBuddy_gsub(text, '$hp', health, "hp");
                        return text;
                end,
                },

        -- Current Mana (actual)
        ["$mc"] = { func = function(text, unit)
                        local mana = UnitMana(unit);
                        text = TipBuddy_gsub(text, '$mc', mana, "mc");
                        return text;
                end,
                },

        -- Max Mana (actual)
        ["$mm"] = { func = function(text, unit)
                        local manamax = UnitManaMax(unit);
                        if (not manamax) then
                                manamax = 0;
                        end
                        text = TipBuddy_gsub(text, '$mm', manamax, "mm");
                        return text;
                end,
                },

        -- Mana as a percent
        ["$mp"] = { func = function(text, unit)
                        local mana = UnitMana(unit);
                        local manamax = UnitManaMax(unit);
                        local percent = 0;
                        if (manamax == 0) then
                                percent = 0;
                        else
                                percent = math.floor(mana/manamax * 100);
                        end
                        text = TipBuddy_gsub(text, '$mp', percent, "mp");
                        return text;
                end,
                },

        --[[ Death Status - DEAD, GHOST, or nothing
        ["$ds"] = { func = function(text, unit)
                        local value;
                        if (UnitIsGhost(unit)) then
                                value = TipBuddy_TEXT.Ghost;
                        elseif (UnitIsDead(unit)) then
                                value = TipBuddy_TEXT.Dead;
                        elseif (not UnitName(unit)) then
                                value = TipBuddy_TEXT.Dead;
                        else
                                value = "";
                        end
                        text = TipBuddy_gsub(text, '$ds', value);
                        return text;
                end,
                },]]

        --[[In Combat - COMBAT or nothing
        ["$ic"] = { func = function(text, unit)
                        local value = "";
                        if (UnitAffectingCombat(unit) or (not UnitName(unit))) then
                                value = TipBuddy_TEXT.Combat;
                        end
                        text = TipBuddy_gsub(text, '$ic', value);
                        return text;
                end,
                },]]

        -- NPC Classification - Elite, Boss, etc.
        ["$ns"] = { func = function(text, unit)
                        local value = UnitClassification(unit);
                        if (value == "normal") then
                                value = "";
                        elseif (value == "elite" or (not UnitName(unit))) then
                                value = TB_elite;
                        elseif (value == "worldboss") then
                                value = TB_worldboss;
                        elseif (value == "rare") then
                                value = TB_rare;
                        elseif (value == "rareelite") then
                                value = TB_rareelite;
                        end
                        text = TipBuddy_gsub(text, '$ns', value, "ns");
                        return text;
                end,
                },

        -- NPC Type - Beast, Humanoid, Undead, etc.
        ["$nt"] = { func = function(text, unit)
                        local value = UnitCreatureType(unit);
                        if (UnitIsPlayer(unit)) then value = nil; end
                        if (not UnitName(unit)) then value = "beast"; end
                        text = TipBuddy_gsub(text, '$nt', value, "nt");
                        return text;
                end,
                },

        -- NPC Family - Bear, Crab, Cat, etc.
        ["$nf"] = { func = function(text, unit)
                        local value = UnitCreatureFamily(unit);
                        if (not UnitName(unit)) then value = "cat"; end
                        text = TipBuddy_gsub(text, '$nf', value, "nf");
                        return text;
                end,
                },

        -- Tapped - TAPPED or nothing
        ["$tp"] = { func = function(text, unit)
                        local value;
                        if (UnitIsTapped(unit) and (not UnitIsTappedByPlayer(unit))) then
                                value = TB_tapped;
                        end
                        text = TipBuddy_gsub(text, '$tp', value, "tp");
                        return text;
                end,
                },

        -- Unit Reaction - Hostile, Neutral, Friendly
        ["$re"] = { func = function(text, unit)
                        local value = UnitReaction("player", unit);
                        if (value) then
                                if (value < 4) then
                                        value = FACTION_STANDING_LABEL2;
                                elseif (value == 4) then
                                        value = FACTION_STANDING_LABEL4;
                                else
                                        value = FACTION_STANDING_LABEL5;
                                end
                        end
                        text = TipBuddy_gsub(text, '$re', value, "re");
                        return text;
                end,
                },

        --PVP Rank
        ["$pr"] = { func = function(text, unit)
                        local value = GetPVPRankInfo(UnitPVPRank(unit), unit);
                        text = TipBuddy_gsub(text, '$pr', value, "pr");
                        return text;
                end,
                },

        --PVP Rank Number
        ["$pn"] = { func = function(text, unit)
                        local value = UnitPVPRank(unit);
                        if (value > 0) then
                                value = value - 4;
                        else
                                value = nil;
                        end
                        text = TipBuddy_gsub(text, '$pn', value, "pn");
                        return text;
                end,
                },

        --PVP Flagged - PvP or PvP Free For All
        ["$pv"] = { func = function(text, unit)
                        local value;
                        if (UnitIsPVPFreeForAll(unit)) then
                                value = "FFA";
                        elseif (UnitIsPVP(unit)) then
                                value = PVP_ENABLED;
                        end
                        text = TipBuddy_gsub(text, '$pv', value, "pv");
                        return text;
                end,
                },

        --Mana Label - Mana, Energy, Rage, Focus
        ["$ml"] = { func = function(text, unit)
                        local value = UnitPowerType(unit);
                        if (value == 0) then
                                value = MANA;
                        elseif (value == 1) then
                                value = RAGE;
                        elseif (value == 2) then
                                value = FOCUS;
                        elseif (value == 3) then
                                value = ENERGY;
                        end
                        text = TipBuddy_gsub(text, '$ml', value, "ml");
                        return text;
                end,
                },

        --Unit Difficulty - Trivial, Minor, Suicide, etc.
        ["$df"] = { func = function(text, unit)
                        local _, value = TipBuddy_GetDifficultyColor(UnitLevel(unit));
                        text = TipBuddy_gsub(text, '$df', value, "df");
                        return text;
                end,
                },

        -- Unit Target's Target Name
        ["$tn"] = { func = function(text, unit)
                        local target = TipBuddy_Adv_TargetsTarget( unit );
                        text = TipBuddy_gsub(text, '$tn', target, "tn");
                        return text;
                end,
                },

        -- Civilian
        --[[["$cv"] = { func = function(text, unit)
                local value;
                if (UnitIsCivilian(unit)) then
                        value = "Civilian";
                end
                text = TipBuddy_gsub(text, '$cv', value, "cv");
                return text;
                end,
                },]]

        -- Shorthand Elite Text
        ["$cx"] = { func = function(text, unit)
                        local value = UnitClassification(unit);
                        if (value == "normal") then
                                value = nil;
                        elseif (value == "elite" or (not UnitName(unit))) then
                                value = "+";
                        elseif (value == "worldboss") then
                                value = "++";
                        elseif (value == "rare") then
                                value = "(R)";
                        elseif (value == "rareelite") then
                                value = "(R)+";
                        end
                        text = TipBuddy_gsub(text, '$cx', value, "cx");
                        return text;
                end,
                },

        ---- COLORS ----
        -- Reaction Name
        ["@Crn"] = { func = function(text, unit)
                local value = getglobal("tbcolor_nam_"..TipBuddy_GetUnitReaction( unit ));
                text = TipBuddy_gsub(text, '@Crn', value);
                return text;
                end,
                },

        -- Reaction Guild
        ["@Crg"] = { func = function(text, unit)
                local value = getglobal("tbcolor_gld_"..TipBuddy_GetUnitReaction( unit ));
                text = TipBuddy_gsub(text, '@Crg', value);
                return text;
                end,
                },

        -- Difficulty
        ["@Cdf"] = { func = function(text, unit)
                local value = TipBuddy_GetDifficultyColor(UnitLevel(unit));
                text = TipBuddy_gsub(text, '@Cdf', value);
                return text;
                end,
                },

        -- Class Color
        ["@Ccl"] = { func = function(text, unit)
                if (UnitClass(unit) == TB_mage) then
                        TipBuddy.gtt_classcolor = tbcolor_cls_mage;
                elseif (UnitClass(unit) == TB_warlock) then
                        TipBuddy.gtt_classcolor = tbcolor_cls_warlock;
                elseif (UnitClass(unit) == TB_priest) then
                        TipBuddy.gtt_classcolor = tbcolor_cls_priest;
                elseif (UnitClass(unit) == TB_druid) then
                        TipBuddy.gtt_classcolor = tbcolor_cls_druid;
                elseif (UnitClass(unit) == TB_shaman) then
                        TipBuddy.gtt_classcolor = tbcolor_cls_shaman;
                elseif (UnitClass(unit) == TB_paladin) then
                        TipBuddy.gtt_classcolor = tbcolor_cls_paladin;
                elseif (UnitClass(unit) == TB_rogue) then
                        TipBuddy.gtt_classcolor = tbcolor_cls_rogue;
                elseif (UnitClass(unit) == TB_hunter) then
                        TipBuddy.gtt_classcolor = tbcolor_cls_hunter;
                elseif (UnitClass(unit) == TB_warrior) then
                        TipBuddy.gtt_classcolor = tbcolor_cls_warrior;
                else
                        TipBuddy.gtt_classcolor = tbcolor_cls_other;
                end
                local value = TipBuddy.gtt_classcolor;
                text = TipBuddy_gsub(text, '@Ccl', value);
                return text;
                end,
                },

        -- Target's Target Color (only color's if the unit has a target)
        ["@Ctt"] = { func = function(text, unit)
                local _, value = TipBuddy_Adv_TargetsTarget( unit );
                text = TipBuddy_gsub(text, '@Ctt', value);
                return text;
                end,
                },


        -- Corpse Color
        -- Will only color text if unit is a corpse
        ["@Ccp"] = { func = function(text, unit)
                local value;
                if (UnitHealth(unit) <= 0) then
                        value = tbcolor_corpse;
                        --TipBuddy.gtt_classlvlcolor = tbcolor_corpse;
                        --TipBuddy.gtt_classcorpse = " "..CORPSE;
                else
                        value = "";
                end
                text = TipBuddy_gsub(text, '@Ccp', value);
                return text;
                end,
                },

        -- Orange
        ["@Cor"] = { func = function(text, unit)
                local value = TB_NML_TXT;
                text = TipBuddy_gsub(text, '@Cor', value);
                return text;
                end,
                },
        -- White
        ["@Cwt"] = { func = function(text, unit)
                local value = TB_WHT_TXT;
                text = TipBuddy_gsub(text, '@Cwt', value);
                return text;
                end,
                },
        -- Grey
        ["@Cgy"] = { func = function(text, unit)
                local value = TB_GRY_TXT;
                text = TipBuddy_gsub(text, '@Cgy', value);
                return text;
                end,
                },
        -- Red
        ["@Crd"] = { func = function(text, unit)
                local value = TB_RED_TXT;
                text = TipBuddy_gsub(text, '@Crd', value);
                return text;
                end,
                },
        -- Green
        ["@Cgn"] = { func = function(text, unit)
                local value = TB_GRN_TXT;
                text = TipBuddy_gsub(text, '@Cgn', value);
                return text;
                end,
                },
        -- Yellow
        ["@Cyw"] = { func = function(text, unit)
                local value = TB_YLW_TXT;
                text = TipBuddy_gsub(text, '@Cyw', value);
                return text;
                end,
                },
        -- Blue
        ["@Cbl"] = { func = function(text, unit)
                local value = TB_BLE_TXT;
                text = TipBuddy_gsub(text, '@Cbl', value);
                return text;
                end,
                },
        -- Pink
        ["@Cpk"] = { func = function(text, unit)
                local value = TB_PNK_TXT;
                text = TipBuddy_gsub(text, '@Cpk', value);
                return text;
                end,
                }
};

function TipBuddy_gsub(text, variable, value, tag)
        if (not tag) then
                tag = "";       
        end
        if (value and value ~= "") then
                if (string.find(text, "<"..tag..">.-"..variable..".-<\/"..tag..">")) then
                        --TB_AddMessage("found pattern: "..variable);
                        text = string.gsub(text, "<"..tag..">(.-)"..variable.."(.-)<\/"..tag..">", "%1"..value.."%2");
                else
                        --TB_AddMessage("didn't find pattern...: "..variable);
                        text = string.gsub(text, variable, value);
                end
        elseif (string.find(text, "<"..tag..">.-"..variable..".-<\/"..tag..">")) then
                text = string.gsub(text, "<"..tag..">.-"..variable..".-</"..tag..">", "");
        else
                text = string.gsub(text, variable, "", 1);
        end
        --TB_AddMessage("start: "..text);
        return text;
end

Generated by GNU Enscript 1.6.5.90.