diff options
author | Oleh Prypin <oleh@pryp.in> | 2021-01-20 10:48:45 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-20 10:48:45 +0100 |
commit | 6f4309217326430145564ae8b1bb393ea684f39f (patch) | |
tree | bf4025a5e709426dc927c4afc4fd2286f8450ed9 /tests/examplefiles/lua/example.lua | |
parent | f0445be718da83541ea3401aad882f3937147263 (diff) | |
download | pygments-git-6f4309217326430145564ae8b1bb393ea684f39f.tar.gz |
Also add auto-updatable output-based tests to examplefiles (#1689)
Co-authored-by: Georg Brandl <georg@python.org>
Diffstat (limited to 'tests/examplefiles/lua/example.lua')
-rw-r--r-- | tests/examplefiles/lua/example.lua | 274 |
1 files changed, 274 insertions, 0 deletions
diff --git a/tests/examplefiles/lua/example.lua b/tests/examplefiles/lua/example.lua new file mode 100644 index 00000000..8ecd6a13 --- /dev/null +++ b/tests/examplefiles/lua/example.lua @@ -0,0 +1,274 @@ +--[[ + Auctioneer Advanced + Version: <%version%> (<%codename%>) + Revision: $Id: CoreMain.lua 2233 2007-09-25 03:57:33Z norganna $ + URL: http://auctioneeraddon.com/ + + This is an addon for World of Warcraft that adds statistical history to the auction data that is collected + when the auction is scanned, so that you can easily determine what price + you will be able to sell an item for at auction or at a vendor whenever you + mouse-over an item in the game + + License: + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program(see GPL.txt); if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + Note: + This AddOn's source code is specifically designed to work with + World of Warcraft's interpreted AddOn system. + You have an implicit licence to use this AddOn with these facilities + since that is its designated purpose as per: + http://www.fsf.org/licensing/licenses/gpl-faq.html#InterpreterIncompat +]] + + +--[[ + See CoreAPI.lua for a description of the modules API +]] + +if (not AucAdvanced) then AucAdvanced = {} end +if (not AucAdvancedData) then AucAdvancedData = {} end +if (not AucAdvancedLocal) then AucAdvancedLocal = {} end +if (not AucAdvancedConfig) then AucAdvancedConfig = {} end + +AucAdvanced.Version="<%version%>"; +if (AucAdvanced.Version == "<".."%version%>") then + AucAdvanced.Version = "5.0.DEV"; +end + +local private = {} + +-- For our modular stats system, each stats engine should add their +-- subclass to AucAdvanced.Modules.<type>.<name> and store their data into their own +-- data table in AucAdvancedData.Stats.<type><name> +if (not AucAdvanced.Modules) then AucAdvanced.Modules = {Stat={},Util={},Filter={}} end +if (not AucAdvancedData.Stats) then AucAdvancedData.Stats = {} end +if (not AucAdvancedLocal.Stats) then AucAdvancedLocal.Stats = {} end + +function private.TooltipHook(vars, ret, frame, name, hyperlink, quality, quantity, cost, additional) + if EnhTooltip.LinkType(hyperlink) ~= "item" then + return -- Auctioneer hooks into item tooltips only + end + + -- Check to see if we need to force load scandata + local getter = AucAdvanced.Settings.GetSetting + if (getter("scandata.tooltip.display") and getter("scandata.force")) then + AucAdvanced.Scan.GetImage() + end + + for system, systemMods in pairs(AucAdvanced.Modules) do + for engine, engineLib in pairs(systemMods) do + if (engineLib.Processor) then engineLib.Processor("tooltip", frame, name, hyperlink, quality, quantity, cost, additional) end + end + end +end + +function private.HookAH() + hooksecurefunc("AuctionFrameBrowse_Update", AucAdvanced.API.ListUpdate) + for system, systemMods in pairs(AucAdvanced.Modules) do + for engine, engineLib in pairs(systemMods) do + if (engineLib.Processor) then + engineLib.Processor("auctionui") + end + end + end +end + +function private.OnLoad(addon) + addon = addon:lower() + + -- Check if the actual addon itself is loading + if (addon == "auc-advanced") then + Stubby.RegisterAddOnHook("Blizzard_AuctionUi", "Auc-Advanced", private.HookAH) + Stubby.RegisterFunctionHook("EnhTooltip.AddTooltip", 600, private.TooltipHook) + for pos, module in ipairs(AucAdvanced.EmbeddedModules) do + -- These embedded modules have also just been loaded + private.OnLoad(module) + end + end + + -- Notify the actual module if it exists + local auc, sys, eng = strsplit("-", addon) + if (auc == "auc" and sys and eng) then + for system, systemMods in pairs(AucAdvanced.Modules) do + if (sys == system:lower()) then + for engine, engineLib in pairs(systemMods) do + if (eng == engine:lower() and engineLib.OnLoad) then + engineLib.OnLoad(addon) + end + end + end + end + end + + -- Check all modules' load triggers and pass event to processors + for system, systemMods in pairs(AucAdvanced.Modules) do + for engine, engineLib in pairs(systemMods) do + if (engineLib.LoadTriggers and engineLib.LoadTriggers[addon]) then + if (engineLib.OnLoad) then + engineLib.OnLoad(addon) + end + end + if (engineLib.Processor and auc == "auc" and sys and eng) then + engineLib.Processor("load", addon) + end + end + end +end + +function private.OnUnload() + for system, systemMods in pairs(AucAdvanced.Modules) do + for engine, engineLib in pairs(systemMods) do + if (engineLib.OnUnload) then + engineLib.OnUnload() + end + end + end +end + +private.Schedule = {} +function private.OnEvent(...) + local event, arg = select(2, ...) + if (event == "ADDON_LOADED") then + local addon = string.lower(arg) + if (addon:sub(1,4) == "auc-") then + private.OnLoad(addon) + end + elseif (event == "AUCTION_HOUSE_SHOW") then + -- Do Nothing for now + elseif (event == "AUCTION_HOUSE_CLOSED") then + AucAdvanced.Scan.Interrupt() + elseif (event == "PLAYER_LOGOUT") then + AucAdvanced.Scan.Commit(true) + private.OnUnload() + elseif event == "UNIT_INVENTORY_CHANGED" + or event == "ITEM_LOCK_CHANGED" + or event == "CURSOR_UPDATE" + or event == "BAG_UPDATE" + then + private.Schedule["inventory"] = GetTime() + 0.15 + end +end + +function private.OnUpdate(...) + if event == "inventory" then + AucAdvanced.Post.AlertBagsChanged() + end + + local now = GetTime() + for event, time in pairs(private.Schedule) do + if time > now then + for system, systemMods in pairs(AucAdvanced.Modules) do + for engine, engineLib in pairs(systemMods) do + if engineLib.Processor then + engineLib.Processor(event, time) + end + end + end + end + private.Schedule[event] = nil + end +end + +private.Frame = CreateFrame("Frame") +private.Frame:RegisterEvent("ADDON_LOADED") +private.Frame:RegisterEvent("AUCTION_HOUSE_SHOW") +private.Frame:RegisterEvent("AUCTION_HOUSE_CLOSED") +private.Frame:RegisterEvent("UNIT_INVENTORY_CHANGED") +private.Frame:RegisterEvent("ITEM_LOCK_CHANGED") +private.Frame:RegisterEvent("CURSOR_UPDATE") +private.Frame:RegisterEvent("BAG_UPDATE") +private.Frame:RegisterEvent("PLAYER_LOGOUT") +private.Frame:SetScript("OnEvent", private.OnEvent) +private.Frame:SetScript("OnUpdate", private.OnUpdate) + +-- Auctioneer's debug functions +AucAdvanced.Debug = {} +local addonName = "Auctioneer" -- the addon's name as it will be displayed in + -- the debug messages +------------------------------------------------------------------------------- +-- Prints the specified message to nLog. +-- +-- syntax: +-- errorCode, message = debugPrint([message][, category][, title][, errorCode][, level]) +-- +-- parameters: +-- message - (string) the error message +-- nil, no error message specified +-- category - (string) the category of the debug message +-- nil, no category specified +-- title - (string) the title for the debug message +-- nil, no title specified +-- errorCode - (number) the error code +-- nil, no error code specified +-- level - (string) nLog message level +-- Any nLog.levels string is valid. +-- nil, no level specified +-- +-- returns: +-- errorCode - (number) errorCode, if one is specified +-- nil, otherwise +-- message - (string) message, if one is specified +-- nil, otherwise +------------------------------------------------------------------------------- +function AucAdvanced.Debug.DebugPrint(message, category, title, errorCode, level) + return DebugLib.DebugPrint(addonName, message, category, title, errorCode, level) +end + +------------------------------------------------------------------------------- +-- Used to make sure that conditions are met within functions. +-- If test is false, the error message will be written to nLog and the user's +-- default chat channel. +-- +-- syntax: +-- assertion = assert(test, message) +-- +-- parameters: +-- test - (any) false/nil, if the assertion failed +-- anything else, otherwise +-- message - (string) the message which will be output to the user +-- +-- returns: +-- assertion - (boolean) true, if the test passed +-- false, otherwise +------------------------------------------------------------------------------- +function AucAdvanced.Debug.Assert(test, message) + return DebugLib.Assert(addonName, test, message) +end + +--[==[ +Here follow further tests of Lua syntax. +]]==] +---[[ +local t = { + [ [[ +x +]==] \]]]=1|2; a={b={c={}}}, + 1, 1., 1.2, .2, 1e3, 1.e3, 1.2e3, .2e3, 1.2e+3, 1.2E-3; + 0xA, 0Xa, 0xA., 0x.F, 0xA.F, 0xA.Fp1, 0xA.FP+1, 0Xa.fp-1; +} + +function t.f() + goto eof + os.exit() + :: eof :: +end + +function t . a --[==[x]==] .b --[==[y]==] -- +-- () end + . c : d (file) + return '.\a.\b.\f.\n.\r.\t.\v.\\.\".\'.\ +.\z + .\0.\00.\000.\0000.\xFa.\u{1}.\u{1234}' +end |