diff options
Diffstat (limited to 'Data/BuiltIn/Libraries/addons/addons/Lookup/Lookup.lua')
-rw-r--r-- | Data/BuiltIn/Libraries/addons/addons/Lookup/Lookup.lua | 248 |
1 files changed, 0 insertions, 248 deletions
diff --git a/Data/BuiltIn/Libraries/addons/addons/Lookup/Lookup.lua b/Data/BuiltIn/Libraries/addons/addons/Lookup/Lookup.lua deleted file mode 100644 index 499f2a6..0000000 --- a/Data/BuiltIn/Libraries/addons/addons/Lookup/Lookup.lua +++ /dev/null @@ -1,248 +0,0 @@ ---[[ - Copyright © 2018, Karuberu - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Lookup nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -]] -_addon.name = 'Lookup' -_addon.author = 'Karuberu' -_addon.version = '1.0' -_addon.commands = {'lookup', 'lu'} - -config = require('config') -res = require('resources') - -settings = nil -ids = nil -last_item = nil - -function load_settings() - settings = config.load({ - default = 'ffxiclopedia'; - sites = { - ffxiclopedia = { - search = 'https://ffxiclopedia.fandom.com/wiki/Special:Search?query=${term}'; - }; - ['bg-wiki'] = { - search = 'https://www.bg-wiki.com/bg/Special:Search?go=Go&search=${term}'; - }; - ffxidb = { - item = 'http://www.ffxidb.com/items/${term}'; - zone = 'http://www.ffxidb.com/zones/${term}'; - search = 'http://www.ffxidb.com/search?q=${term}'; - }; - ffxiah = { - item = 'http://www.ffxiah.com/item/${term}'; - search = 'http://www.ffxiah.com/search/item?q=${term}'; - }; - ffxiahplayer = { - search = 'https://www.ffxiah.com/search/player?name=${term}'; - }; - google = { - search = 'https://www.google.com/search?q=${term}'; - }; - ffxi = { redirect = 'ffxiclopedia'; }; - wikia = { redirect = 'ffxiclopedia'; }; - bgwiki = { redirect = 'bg-wiki'; }; - bg = { redirect = 'bg-wiki'; }; - db = { redirect = 'ffxidb'; }; - ah = { redirect = 'ffxiah'; }; - ffxiahp = { redirect = 'ffxiahplayer'; }; - ahp = { redirect = 'ffxiahplayer'; }; - }; - }) -end - --- Creates a list of item and zone ids by name for quicker lookup by name -function initialize_ids() - ids = { - items = {}; - zones = {}; - } - for item in res.items:it() do - ids.items[item.name] = item.id - ids.items[item.name_log] = item.id - end - for zone in res.zones:it() do - ids.zones[zone.name] = zone.id - end -end - -function get_id(name) - if id == nil then - return {} - end - return { - item = ids.items[name]; - zone = ids.zones[name]; - } -end - -function get_name(id, list) - if id == nil then - return nil - end - return (list[id] or {}).name -end - --- Converts auto-translate strings to plain text. --- If the string is not an auto-translate string, the original string is returned. -function translate(str) - return windower.convert_auto_trans(str) -end - --- Checks to see if the string is a selector (enclosed by <>) and returns a replacement. --- If the string is not a selector, the original string is returned. -function parse_selection(str) - local target = str:match('<(.+)>') - if target == nil then - return str - end - - -- custom selection handlers - if target == 'job' or target == 'mjob' then - return windower.ffxi.get_player().main_job_full - elseif target == 'sjob' then - return windower.ffxi.get_player().sub_job_full - elseif target == 'zone' then - if windower.ffxi.get_info().mog_house then - return 'Mog House' - else - return get_name(windower.ffxi.get_info().zone, res.zones) - end - elseif target == 'item' then - return get_name(last_item, res.items) - end - -- default to windower's selection handlers - return (windower.ffxi.get_mob_by_target(str) or {}).name -end - -function set_default_site(command_modifier, site) - settings.default = site - if command_modifier == 'player' or command_modifier == 'p' then - -- save only for the current character - settings:save() - else - -- save for all characters - settings:save('all') - end -end - -function modify_site_settings(site, type, url) - if url == 'remove' then - url = nil - end - settings.sites[site][type] = url -end - -function set_last_item(bag, index, id, count) - if bag == 0 then - last_item = id - end -end - --- Replaces the named parameters in the url -function format_url(url, term) - if term == nil then - return term - end - return url:gsub('${term}', '%s':format(term)) -end - -function get_site(command) - local site = settings.sites[command] - if site ~= nil and site.redirect ~= nil then - site = settings.sites[site.redirect] - end - return site -end - -function get_url(site, term) - term = translate(term) - term = parse_selection(term) - local id = get_id(term) - if id.item ~= nil and site.item ~= nil then - url = format_url(site.item, id.item) - elseif id.zone ~= nil and site.zone ~= nil then - url = format_url(site.zone, id.zone) - else - url = format_url(site.search, term) - end - return url -end - -function process_command(...) - -- get the first argument and set it as the command for now - local command = ({...}[1] or ''):lower() - - if command == 'default' then - local command_modifier, default_site - if {...}[3] ~= nil then - -- if there are three or more arguments, the second one is the modifier - command_modifier = {...}[2] - default_site = {...}[3] - else - default_site = {...}[2] - end - set_default_site(command_modifier, default_site) - return - elseif command == 'site' then - local site = {...}[2] - local type = {...}[3] - local url = {...}[4] - modify_site_settings(site, type, url) - return - end - - local term; - if {...}[2] ~= nil then - -- if there are two arguments, the first is the command and the second the term - command = {...}[1] - term = {...}[2] - else - -- otherwise, just a term is provided, so use the default command - command = settings.default - term = {...}[1] - end - if term == nil then - return - end - - local site = get_site(command:lower()) - if site == nil then - return - end - - local url = get_url(site, term) - if url == nil then - return - end - windower.open_url(url) -end - -load_settings() -initialize_ids() - -windower.register_event('add item', set_last_item) -windower.register_event('addon command', process_command) |