r20160529033353

Details

Supported Game Versions

7.0.3

6.2.4

Changelog

Chris Pickett:
- Prevent string:format explosion with the new minor version number
Because our new minor version number is much larger than a 32-bit int, we now divide the number we pass into :format() as a %d into a number that can fit in a 32-bit signed integer. This means the version number we'll get in error reports is YYYYMMDD (year, month, day) format instead of YYYYMMDDHHmmSS (year, month, day, hour, minute, second).
Parnic:
- Switched to file-date-integer and increased dev version number
- Replaced SVN keyword substitution
- Marked as compatible with 7.0
- - TOC bump for 6.2
- - TOC bump for 6.1
- - Fixes for APIs returning 1/0/nil -> true/false in 6.0. Enables the /dog help frame to function. (ticket #26 - thanks Cybeloras!)
- - WoW 6.0 TOC update. Committing early to allow consumer mods to package the new lib.
- - Recommended change from Cybeloras (thanks!)
- - TOC update for 5.4
- - Submitted Cybeloras's fix for "script ran too long" errors. (ticket #23)
- - Updated TOC for 5.3
- - 5.2 TOC update
- - TOC increased for 5.1
- - Updated TOC for 5.0.
cybeloras:
- Extended a fix that I did a while ago that solved an issue with events not recognizing & matching number arguments to strings of tags with more than one arg checker.
- Fixed some missing upvalues, fixed an error being caused when no kwargs were included with AddFontString
- Implemented a much more efficient workaround for the kwargsToKwargTypes caching issue.
- Accidentally left a print in the code
- Implemented a big performance boost in DogTag:AddFontString()
- More efficient timer stuff
Parnic:
- - Replaced intentional divide-by-zeroes with math.huge - Added Monk to raid class color list
cybeloras:
- Added a new tag property: noDoc. Set it true if you wish for a tag not to be listed in the help frame.
- Added a universal error handler func for tag errors (DogTag.tagError
- Fixed the UpdateFontString throttling (broke in 4.3 i think)
Events fired with number arguments should now properly match up with tags whose kwargs are defined explicitly in the tag itself.
For example: Tag "Tag" implemented as "[Tag(1, 2)]" with kwargs "arg1" and "arg2" and event handler "EVENT#$arg1#$arg2" should now be properly updated by calling "DogTag:FireEvent("EVENT", 1, 2)". Previously it would only be updated by calling "DogTag:FireEvent("EVENT", tostring(1), tostring(2))"
- Added upvalues Fixed leaked/unused globals
- Added upvalues
- Added upvalues
- Added upvalues
- Nevermind on that TODO. Blizzard's utf8sub is extremely inefficient.
- Added upvalues Removed an unused global variable
- Investigating SVN weirdness
- Updated to incorporate some past changes, but it still doesn't pass 100% because I gave up when it started getting into adding compilation steps
- Added a Monochrome outline tag FontString outline is now only changed if something changed (performance increase)
- Cleanup unused code
- Replaced convoluted xpcall implementations with much simple pcall implementations.
- Caching kwargsToKwargTypes caching with the kwargs table as the key causes bad errors if the kwargs table is reused in the addon that is implementing DogTag
Parnic:
- - updated TOC to 4.3
- - updated toc to 4.2
- - toc bump
- - fixed "test on" drop-down to work in 4.0 (missing 'this' parameter in the dropdown's OnClick handler)
shefki:
- TOC Bump.
- Fix FormatDuration for the format string changes that happened forever ago.
- Bump TOC for 3.2
s8095324:
- zhTW update
ckknight:
- fix a small memory leak
- bump toc to 30100
nevcairiel:
- Restore LoD to Libraries, as 3.0.8 fixed all bugs that blocked LoD OptionalDeps to load properly.
ckknight:
- add .docmeta
shefki:
- - Add alias for Black so you can do say [Black Name].
ckknight:
- Small bugfix
anadale:
- - Fixed a bug in Help window.
stanzilla:
- Update TOC for WotLK
nevcairiel:
- Patch 3.0 prep: Remove LoD from Libraries that have no load manager (LoD+OptDep Bug)
- WoWAce Post-Processing: Virtually inflate Library Revision numbers for proper upgrade path
root:
- Facilitate WowAce-on-CurseForge transition
ckknight:
- - add runicPower color
- - Change the titration time to 1/1000 of a second instead of 1/300 of a second.
shefki:
- - Fix a bug that caused errors/bad formating with FormatDuration. - Add myself to credits per ckknight's request.
ckknight:
- - Eep, fix typo
- - add tag [SeparateDigits(number, thousands=",", decimal=".")], which will do the following: [1234567.89:SeparateDigits] => "1,234,567.89" [1234567.89:SeparateDigits(" ", ",")] => "1 234 567,89" Note: if you're non-enUS, it should have defaults of " ", "," rather than ",", "."
- - Change the lazy fontstring updating a bit to be a bit more efficient.
- - fix a bug that caused an assertion error at line 298
- - Make fontstring updates somewhat lazy. Don't allow more than 1/300 of a second to be used per-frame. In most situations, this will have absolutely no effect, but this will mostly affect situations where absolutely every fontstring issues an update request, at which point it may take multiple frames to update all your data, but it won't freeze things anymore (hopefully).
kurax:
- Make namespaces on help treeview localizable
ckknight:
- - remove debug line
- - instead of showing the circle as a bullet point, use a utf bulletpoint character. This is to fix searching for "target", which would return everything before.
scorpio0920:
- - Added zhTW Localization. (Thanks s8095324)
- - Added zhTW Localization. (Thanks s8095324)
ckknight:
- - fix hasEvent to check callbacks
- - make FormatDuration and Icon static tags - make compilations that return only static strings bypass unneeded checks
- - make sure not to clean out the codes of something that has a callback still on it. - don't clear out codes in combat
- - bugfix to callbacks being called more than once - add the ability to supply an extra argument for callbacks
- - change callback system internals.
- - change API so that specifying multiple namespaces is done by a single string separated by semicolons rather than a tuple of strings.
kurax:
- Add a zhCN translation for in-game syntax tutorial.
ckknight:
- - add a Replace tag.
- - literal numbers that have no modifiers or anything of that nature will be taken out of their [] barriers with :CleanCode() fixes DOGTAG-27, sorta.
- - fix an issue where [ThingyThatReturnsFalse and 'hi'] ['test'] would return nothing instead of just test.
- - fix an issue where something like "[One][Two] [Three]" would turn into "[One Two] Three]" instead of "[One Two] [Three]"
arrowmaster:
- .You are not a special or unique snowflake. Get back in line and use the 'Lib: ...' title format like everybody else to save the sanity of those of us looking through an alpha sorted addon list
ckknight:
- - verify the form that examples are in. - fix the Contains example
- - dynamically generate the list of namespaces from the registered tags instead of always using Base and Unit
- - possibly fix issue with event list not being created.
kurax:
- zhCN Bug fix
ckknight:
- - every 15 seconds, look for dead functions (i.e. functions not manually evaluated in the last 180 seconds and not registered to any fontstrings) and nil them. This is especially noticeable when you're using the sandbox which creates functions every time a character is pressed.
kurax:
- Forgot to add zhCN.lua to lib.xml
ckknight:
- - every 15 seconds, look for dead functions (i.e. functions not manually evaluated in the last 180 seconds and not registered to any fontstrings) and nil them. This is especially noticeable when you're using the sandbox which creates functions every time a character is pressed.
- - add Autodoc documentation
- - fix issues with ['+' 1234] getting rid of the + at the start. - make the syntax page on the ingame help simpler code-wise.
- - fix issues with :Color("999999"), no longer sees the "999999" as a number;
- - set scroll bar to the top whenever there's a category change - when typing something into search, automatically switch to the Search Results category. - add backgrounds to the search and test input editboxes, change the background of the output fontstring.
- - change the syntax a bit, make numbers pink (same as strings) and operators a light fuchsia, which should help : and the like show up better.
- - only update search results 0.5 seconds after typing something into the search box.
- - for the ingame help, make the output box have a black background to match the other places that tags are shown.
- - make :CleanCode also fix casing. - change the sandbox on the ingame help to be a lot nicer and easier to understand.
- - make help use a left tree view and an html pane on the right instead of a tab system. - optimize help immensely Note: work still needs to be done on the help, mostly the sandbox.
- - rename the " " operator "concat" internally.
- - fix ingame help to pick up colors properly
- - fix issue where an event that takes multiple args is used multiple times in one tag sequence, e.g. [HasAura("Blessing of Freedom") or HasAura("Blessing of Protection")]
- - simplify ColorizeCode to not stick |r's in unnecessarily.
- - make = and ~= work if the left side is nil. Use :Hide instead of ~= to do a saner check for that.
- - fix parser to not see ["95e495"] (or something along those lines) as a number.
- - clear codes after adding a tag. - wait 1 frame after the request to clear codes.
- - add :ClearNamespace, which will be used by sublibraries when upgrading.
- - make upgrading a lot cleaner and don't horribly break.
- - fix an issue with string to number forcing. - add in tests for upgrading, not done yet.
- - fix the help's sandbox dropdown thing
- - fix Substring documentation
kurax:
- Add zhCN translation for docs
- Make colors localizable for doc purpose
ckknight:
- - fix an issue with aliases that have aliases as arguments
- - fix VeryShort doc
kurax:
- Doc typo fix, should be "is not equal" rather than "is equal" for ~= operator
ckknight:
- - make else-if statements use the syntax "elseif" instead of "else if", mostly to match lua. Both versions work fine.
- - if statements now have "end" on the end, for clarity. It serves no real purpose otherwise. This doesn't break any tags that leave off "end". - make the literal '||' stay as '||' instead of '\124\124'. - make CleanCode indent if statements. This does not indent the ternary ?! syntax, though, just if-then-else-end
- - make :CleanCode change [1 and 2 or 3] into [(1 and 2) or 3] and [1 or 2 and 3] into [(1 or 2) and 3]. [1 and 2 and 3] and [1 or 2 or 3] stay as they are.
- - for unparsing, leave Alpha, Outline, and ThickOutline in separate sections, cause they're special.
- - fix issue where tags without args wouldn't catch if an arg was passed in.
- - change another assertion to give more information
- - change an assertion to give slightly more info
- - make the Alpha tag saner. - add the Outline and ThickOutline tags. They now no longer need to be at the start and you can use if statements and all that fun stuff on them. e.g. [IsPlayer ? Outline]
- - make searching also work on category titles (so searching for Math will give you the Mathematics category) - fix Text Manipulation -> Text manipulation
- - add a search box to the top-right corner of the DogTag ingame help.
- - add Help.lua which shows ingame help. Note: there will be improvements to this. Can be accessed with /dog
- - allow people to use '\n' as a newline.
- - fix an issue with removing spaces
- - fix issues caused by ginormous strings.
- - fix a bug with compilation accidentally removing keys from the t table
- - more tweaks to spacing oddities
- - handle spaces better, so that "[1] [nil] [2]" turns into "1 2" instead of "1 2", but if you specify a lot of spaces on purpose, it'll keep em.
- - make ColorizeCode work better with the pipe.
- - rename Fuschia to Fuchsia. Whoops.
- - remove tests of large numbers because Windows sucks.
- - remove opacity hack - properly reset opacity
- - separate the :CleanCode method from the :ColorizeCode method, make :ColorizeCode not use parse, use a very dumb and simplistic parsing mechanism instead that does not require syntax perfection.
ellipsis:
- quick hack to fix alpha issues.
ckknight:
- - fix colorizing a bit, change grouping operators to white.
- - fix tags without proper documentation - add checks for documentation
- - expose getTagData
- - preserve whether the user specifies single or double quotes. - fix issues with unparsing and quotes
- - fix an issue with type forcing not checking for numbers.
- - change the parser so that if it detects something along the lines of [Alpha -Bravo], it will assume concatenation instead of subtraction. If the spacing is different in any way, it will assume subtraction.
- - fix some issues with negation.
- - fix issues with variables not being cleared properly
- - allow :CleanCode to take a second argument, which means to color the code as well as clean it up.
- - fix issues with tags like ['Hello [One] There']
- - Turn multiple spaces into single spaces
- - fix a syntax error issue
- - fix an error message
ellipsis:
- itty bitty bugfix
ckknight:
- - fix an issue with unparse where sequences such as [(thing)] would occur.
- - fix a bug with aliases and holding onto references that are deleted.
ellipsis:
- added color entry for tapped units.
ckknight:
- - add colors I forgot about
- - add Icon tag - add Prepend and Append tags
- - possibly fix a bug with event handling
- - replace the assertion error with a much nicer error that can give me real info.
- - fix toc
- - fix issues with AddonFinders - trim leading and trailing spaces
- - add more options to the compilation step process
- - add newlines where appropriate to their proper places in the compilation code. This should make error messages a lot more accurate.
- - allow if statements within other if statements without requiring grouping brackets. This also allows for [if 1 then 2 else if 3 then 4 else 5]-style statements.
- - also clear the stored key on if statements
- - fix an issue with the and type not clearing properly
- - add another test
- - fix some bugs in the compilation process, specifically in the treatment of arguments and static value in if statements - make :CleanCode not crap out if there's a syntax error
- - fix a nil bug - compile in a safer manner - handle kwargs in aliases in a way that doesn't fail - add :UpdateFontString and :UpdateAllForFrame
- - fix a weird issue with nested strings
- - try to load requested libraries automatically
- - add ability to register for events with multiple arguments.
- - add some helper functions for sublibraries
- - change the way FormatDuration works slightly
- - add FormatDuration tag.
- - optimization for dynamic functions
- - add ability to register tags that have functions which return other functions (good for optional library support)
- - plug a few memory leaks, now every single table in the testsuite is accounted for.
- - fix a memory leak with static functions
- - (following changes cut CPU usage roughly 25% and memory usage roughly 20% - instead of registering tags as strings, they will be registered as functions. - add ability to mark tags as static, which means if all args are literal or static (or there are no args), then the function will be run on compiletime rather than runtime - remove number flattening in parser (e.g. 1/4 => 0.25) - remove globals field and FakeGlobal system - make a lot of error messages better
- - add Format tag, acts the same as lua's format function, errors are shown to the user. - make sure that string in non-standard number formats such as "001" or "1.00" do not turn into numbers, so that users can format their numbers the way they want and appear the way they want.
- - rename Modules to Categories
- - make setting globals faster
- - rename Append to Concatenate, make it take a tuple instead of two strings. it's different than standard concatenation, since if a single argument is nil, it will return nil.
- - add unpack to default globals
- - make sure that literal hex strings don't get converted either.
- - no longer try to convert hex numbers like "0x0000000000000000" to numbers, cause the 64-bit GUIDs get a few numbers chopped off.
- - add tag Substring(value, start [, finish]). UTF-8 aware.
- - tweaks to the Append tag. - add static color support (for things like minHP and the like). This will likely change.
- - for tags that take a number as its first argument and are supposed to return a string, check to see if said string can coerce to a number, and if it can, do so.
- - add Boolean tag, which turns a value into true/false.
- - instead of going with list-whatever, go with tuple-whatever, since it makes more sense and fits in better.
- - no longer tie tuples to just number or strings, they can take on any type and intermix types without issue.
- - add "boolean" type to work with, so tags can specify it as a return or an argument. Will work as expected in most cases. If you specify boolean as a return and return something like nil/1, it will automatically convert to false/true. When showing as a string, it will automatically convert to ''/"True". - add "list-boolean" tuple type. - make operators "if", "and", "or", and "not" handle booleans cleanly. - make tags which returned/expected "True"/nil before now use boolean types. - add priority to :AddTimerHandler, defaults to 5.
- - remove another needless check
- - remove a lot of unnecessary error checking in the compiler, as that is done primarily before the compilation phase.
- - add a check for syntax errors, so that if you enter an improper tag sequence, it'll tell you "Syntax error", but it doesn't provide any other information. - update the EBNF so that OUTER_STRING = ( ANY - "[" ), { ANY - "[" }
- - change the way Update and SlowUpdate run
- - Add :AddTimerHandler(func) and :RemoveTimerHandler(func) - add fake events FastUpdate (every 0.05 seconds), Update (every 0.15 seconds), and SlowUpdate (every 10 seconds)
- - add :AddEventHandler(event, func) :RemoveEventHandler(event, func), and :FireEvent(event, ...), for modules to use.
- - bugfix with compilation messing up events - add compilation step 'tagevents', that allows the events of a tag to be altered arbitrarily.
- - change the way the Color tag works
- - prevent syntax like Tag(alpha=true, 1, 2, 3), as that's a syntax error (and ambiguous to boot), kwargs are only allowed after normal args, so Tag(1, 2, 3, alpha=true) is perfectly appropriate. - before compilation, turn all normal args into kwargs, to make the overall code simpler and easier for external compilation steps.
- - fix an issue with forceToTypes in compilation. - add Append tag to TextManip - add some more tests
- - support a single event multiple times (with different args) on a single tag. Good for MODIFIER_STATE_CHANGED#LALT;MODIFIER_STATE_CHANGED#RALT, which will only register if either of those are arg1, so it won't react to LSHIFT et al. - update Alt, Shift, and Ctrl tags. - add optimization to Compiler, as well as fixing an error message.
- - move the code clearing function from Compiler to Helpers, as it does more than just clear the compiled data, and it is used by more than that file. - when an event is fired, check to see if the DogTag namespace can react to that event. - Add :AddAddonFinder("namespace", "kind", "name", func)
- - saner support for tuples in aliases. Some optimizations in parser.
- - for parser, move EBNF to the top of the file. Reorganize the position of UNARY_MINUS to not be as hackish.
- - optimization with predefined kwargs
- - pass along the compiledKwargs for the tag compilation step
- - add compilation step injection on a namespace basis.
- - for the parser, instead of using chars as strings, treat them as bytes, so that there's just a bunch of passing numbers around.
- - for the parser, instead of using a complex tokenization system that wasn't all that efficient, treat each character as a token.
- - remove a lot of unneeded localization data. - make the library creation process a bit simpler
- - add some tests to check concatenation and if statements
- - add Contains tag.
- - optimizations - when doing [Alpha:~Bravo(...)], if Bravo returns nil, then return Alpha instead of "True", which makes more sense all in all, especially if ~Bravo is an alias for something else - add tag IsIn, e.g. ['Alpha':IsIn('Bravo', 'Charlie')] => nil, [1:IsIn(1, 2, 3)] => 1 - add tag Hide, alias for ~IsIn, e.g. ['Alpha':Hide('Bravo', 'Charlie')] => "Alpha", [1:Hide(1, 2, 3)] => nil - fix unaliasing bug
- - fix = and ~= operators slightly. - standardization will turn any strings that can act as numbers into numbers properly.
- - add reserved words true and false, which essentially translate into "True" and nil, respectively.
- - add test for tuple aliases on non-tuple tags.
- - allow kwargs to work with aliases - allow prespecified kwargs to work with aliases - allow tuples to work with aliases
- - add support for undef arguments, which are different from nil, only difference being if you specify it, it is nil, if you don't, it's undef. They act the same in most cases - add support for aliases. - fix a bug with the standardize function. - when standardizing { "unm", someNumber }, turn it into -someNumber.
sayclub:
- : - zhCN typo fix
ckknight:
- - add some more base tags - some minimal touchups
- - for tags that have their first argument require a non-nil, do not provide a default, and receive a nil as its first argument, do not evaluate, instead just stay as nil. e.g. [HP:Green] => nil if HP is nil, instead of |cffff0000|r
- - assorted refactoring and renaming - random optimizations - add tags to Math.lua and add TextManip.lua - add fake global system - update lib.xml - fix negative handling by the parser.
- - make sure to update lib.xml
- - some file cleanup, move general helper functions into Helpers.lua - add basic event support, currently only callbacks work, no FontStrings yet. - allow tag.events to be a function - allow events to specify the argument to look at, and that argument can even be dynamic instead of a literal.
- - allow globals to be a function, pass in relevant data
- - allow code to be a function, pass in relevant data
- - allow ret to be a function, pass in relevant data to said function - simplify the tag compilation process.
cwdg:
- Add zhCN local file
7destiny:
- - Add koKR localization
ckknight:
- - in tags, allow ${arg:string} and ${arg:type} to reference arg's string representation or type, respectively.
- - Support in strings, e.g. [Func("Alpha\"Bravo")] works the same as [Func('Alpha"Bravo')]
- - initial commit - note: this is not to be used yet, it is not finished, it is mostly so I can have a proper code history as well as allowing others to view what I have thus far. - Differences from 2.0: Different syntax, uses a proper LALR parser instead of regexes. Vigorous testing, no longer unit-specific, that will be part of its own namespace. Feel free to check out test.lua it's pretty much a full testsuite for LibDogTag-3.0 thus far, and it will stay that way.