Module:InterPro content/sandbox
Appearance
| This is the module sandbox page for Module:InterPro content (diff). |
| This module is rated as beta. It is considered ready for widespread use, but as it is still relatively new, it should be applied with some caution to ensure results are as expected. |
| This module depends on the following other modules: |
This module implements {{InterPro content}}.
Usage
[edit]{{#invoke:InterPro content|function_name}}
local getArgs = require('Module:Arguments').getArgs
local beginText = 'This article incorporates text from the public domain [[Pfam]] and [[InterPro]]: '
local baseUrl = 'https://www.ebi.ac.uk/interpro/entry/'
local p = {}
local function interproLink(arg)
-- text before first space, if any; otherwise, whole arg
local accessionNumber = arg:match('^([^ ]*) ') or arg
-- text after first space, if any; otherwise, accessionNumber
local linkText = arg:match(' (.*)') or accessionNumber
return '[' .. baseUrl .. accessionNumber .. ' ' .. linkText .. ']'
end
local function renderList(args)
local list_args = {
class = 'inline'
}
for _, a in ipairs(args) do
table.insert(list_args, interproLink(a))
end
return require('Module:List').horizontal(list_args)
end
function p.main(frame)
local args = getArgs(frame)
if not args[1] then
return '<div class="error">[[Module:InterPro content]]: required argument 1 is missing</div>'
elseif not args[2] then
return '<div role="note" style="font-style: italic;">' .. beginText .. interproLink(args[1]) .. '</div>'
else
return '<div role="note" style="font-style: italic;">' .. beginText .. renderList(args) .. '</div>'
end
end
return p