Module:HF

-- HF stands for High Frequency. -- This Module augments the built-in HF local HF = mw.InfoboxBuilderHF -- This Module helps process template parameters local getArgs = require('Dev:Arguments').getArgs

-- Libraries of functions --

--- -- Libraries of data -- ---

-- Local functions (used only in this Module) --

-- -- Public functions (called from a Template or article) -- -- -- eliminates the link portion wikitext of a File: call, leaving only the bare filename. function HF.stripFileWrapper(frame) local args = getArgs(frame) return HF._stripFileWrapper(args[1]) end

function HF.Blueprint(frame) local args = getArgs(frame) return HF._blueprint(args) end

function HF.dequalifyTitle(frame) return mw.text.split(mw.title.getCurrentTitle.baseText, '%s%(')[1] end

- -- Internal functions (used in this and other Modules) -- - -- eliminates whitespace from the front and back of a string function HF.trim(s) if type(s) == 'string' then return (s:gsub("^%s*(.-)%s*$", '%1')) else return false end end -- This creates an external link. function HF.ExternalLink( target, label, plain ) local output = string.format('[%s %s]', target, label) if plain == true then output = string.format(' %s ', output) end return output end -- This creates a link to a category, as well as placing it in that category. -- `sortkey` and `label` are optional -- If there's no `label` given, it will only place it in the category, -- which is what HF.Category is for. function HF.CategoryLink( category, sortkey, label ) if not HF.isempty( label ) then return HF.LinkToCategory( category, label ) .. HF.Category( category, sortkey ) else return HF.Category( category, sortkey ) end end -- Adds a Category -- `sortkey` is optional function HF.Category( category, sortkey ) if sortkey == nil then sortkey = '' else sortkey = '|' .. sortkey end return string.format('%s'..'Category:%s%s]]', '[[', category, sortkey) end -- Adds a link to a Category function HF.LinkToCategory( category, label ) return string.format('%s'..'Category:%s|%s]]', '[[:', category, label or 'Category:' .. category ) end -- Adds an internal link -- `label` is optional function HF.Link( link, text ) if not HF.isempty( text ) then return string.format('%s'..'%s|%s]]', '[[', link, text) else return string.format('%s'..'%s]]', '[[', link) end end -- eliminates the link portion wikitext of a File: call, leaving only the bare filename. function HF._stripFileWrapper (s) if type(s) == 'string' then return (s   :gsub("%[*(.*)", '%1') -- leading brackets    :gsub("([%a]*)|+.*", '%1') -- arguments    :gsub("([%a]*)%]*", '%1') -- closing brackets    ) else return false end end

-- creates a libTroxel invocation function HF._blueprint (args) local envelope = mw.html.create('center') :tag('div'):css('width', (args.width or 200)..'px'):css('height', (args.height or 200)..'px') :attr('data-troxel-blueprint', args.name or 'ui_questionmark') :attr('data-troxel-options', '{"rendererClearColor": "#118784"}') :wikitext(HF.trim(HF.Link(       'File:'..(args.placeholder or 'Question2.gif'),        (args.width or 200)..'x'..(args.height or 200)..'px'    ))) :allDone return tostring(envelope) end

-- Unique table items function HF.unique( raw_table ) local hash = {} local unique_results = {} for _,v in ipairs( raw_table ) do   if (not hash[v] and v ~= '') then table.insert( unique_results, mw.text.trim(v) ) hash[v] = true end end return unique_results end

- -- Output (send it back to whatever called it) -- - return HF