Module:HF

-- HF stands for High Frequency. -- This Module augments the built-in HF local HF = mw.InfoboxBuilderHF

-- Libraries of functions --

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

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

-- -- Public functions (called from a Template or article) -- -- - -- 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(''..'Category:%s%s', category, sortkey) end -- Adds a link to a Category function HF.LinkToCategory( category, label ) return string.format('%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', link, text) else return string.format(''..'%s', link) end end

-- Adds a SMW inline property -- `label` is optional function HF.SMWP( property, value, label ) if label and (#label > 0) then return string.format('%s', property, value, label ) elseif type(label) == 'string' and ((#label == 0) or label == ' ')then return string.format(' ', property, value ) else return string.format(''..'%s::%s', property, value) end end

-- Normalize page name function HF.NP( title ) title = title or mw.title.getCurrentTitle.text clear = title:gsub( '&#34;', '\"'):gsub('&#38;','&'):gsub('&#39;', "\'"):gsub('&#61;', '=')    return clear 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