FANDOM


-- 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('<span class="plainlinks">%s</span>', 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('[[:'..'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]]', 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::%s|%s]]', property, value, label )
    elseif type(label) == 'string' and ((#label == 0) or label == ' ')then
        return string.format('[['..'%s::%s| ]]', 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

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.