Open main menu
Home
Random
Donate
Recent changes
Special pages
Community portal
Preferences
About Stockhub
Disclaimers
Search
User menu
Talk
Contributions
Create account
Log in
Editing
Module:Excerpt/staging
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
local Transcluder = require('Module:Transcluder') local yesno = require('Module:Yesno') local ok, config = pcall(require, 'Module:Excerpt/config') if not ok then config = {} end local p = {} -- Helper function to get arguments local args function getArg(key, default) value = args[key] if value and mw.text.trim(value) ~= '' then return value end return default end -- Helper function to handle errors function getError(message, value) if type(message) == 'string' then message = Transcluder.getError(message, value) end if config.categories and config.categories.errors and mw.title.getCurrentTitle().isContentPage then message:node('[[Category:' .. config.categories.errors .. ']]') end return message end -- Helper function to get localized messages function getMessage(key) local ok, TNT = pcall(require, 'Module:TNT') if not ok then return key end return TNT.format('I18n/Module:Excerpt.tab', key) end function p.main(frame) args = Transcluder.parseArgs(frame) -- Make sure the requested page exists local page = getArg(1) if not page then return getError('no-page') end local title = mw.title.new(page) if not title then return getError('no-page') end if title.isRedirect then title = title.redirectTarget end if not title.exists then return getError('page-not-found', page) end page = title.prefixedText -- Set variables local fragment = getArg('fragment') local section = fragment or getArg(2, getArg('section', mw.ustring.match(getArg(1), '[^#]+#([^#]+)') ) ) local hat = yesno( getArg('hat', true) ) local this = getArg('this') local only = getArg('only') local files = getArg('files') local lists = getArg('lists') local tables = getArg('tables') local sections = not yesno( getArg('sections') ) local templates = table.concat((config.templates or {}), ',') local paragraphs = getArg('paragraphs') local references = getArg('references') local noBold = not yesno( getArg('bold') ) local inline = yesno( getArg('inline') ) local quote = yesno( getArg('quote') ) local more = yesno( getArg('more') ) local class = getArg('class') -- Build the hatnote if hat and not inline then if this then hat = this elseif quote then hat = getMessage('this') elseif only then hat = getMessage(only) else hat = getMessage('section') end hat = hat .. ' ' .. getMessage('excerpt') .. ' ' if section and not fragment then hat = hat .. '[[' .. page .. '#' .. mw.uri.anchorEncode(section) .. '|' .. page .. ' Β§ ' .. mw.ustring.gsub(section, '%[%[([^]|]+)|?[^]]*%]%]', '%1') .. ']]' -- remove nested links else hat = hat .. '[[' .. page .. ']]' end hat = hat .. "''" .. '<span class="mw-editsection-like plainlinks"><span class="mw-editsection-bracket">[</span>[' hat = hat .. title:fullUrl('action=edit') .. ' ' .. mw.message.new('editsection'):plain() hat = hat .. ']<span class="mw-editsection-bracket">]</span></span>' .. "''" local ok, Hatnote = pcall(require, 'Module:Hatnote') if ok then hat = Hatnote._hatnote( hat, { extraclasses = 'dablink excerpt-hat', selfref = true } ) else hat = mw.html.create('div'):addClass('dablink excerpt-hat'):wikitext(hat) end else hat = nil end -- Build the "Read more" link if more and not inline then more = "'''[[" .. page .. '#' .. (section or '') .. "|" .. getMessage('more') .. "]]'''" more = mw.html.create('div'):addClass('noprint excerpt-more'):wikitext(more) else more = nil end -- Build the options for Module:Transcluder out of the template arguments and the desired defaults local options = { files = files, lists = lists, tables = tables, paragraphs = paragraphs, templates = templates ~= '' and '-' .. templates, sections = sections, categories = 0, references = references, only = only and mw.text.trim(only, 's') .. 's', noBold = noBold, noSelfLinks = true, noBehaviorSwitches = true, fixReferences = true, linkBold = true, } -- Get the excerpt itself local title = page .. '#' .. (section or '') local ok, excerpt = pcall(Transcluder.get, title, options) if not ok then return getError(excerpt) end if mw.text.trim(excerpt) == '' then if section then return getError('section-empty', section) else return getError('lead-empty') end end -- Add a line break in case the excerpt starts with a table or list excerpt = '\n' .. excerpt -- If no file was found, try to excerpt one from the removed infoboxes local fileNamespaces = Transcluder.getNamespaces('File') if (files ~= '0' or not files) and not Transcluder.matchAny(excerpt, '%[%[', fileNamespaces, ':') and config.captions then local templates = Transcluder.get(title, { only = 'templates', templates = templates, fixReferences = true } ) local parameters = Transcluder.getParameters(templates) local file, captions, caption for _, pair in pairs(config.captions) do file = pair[1] file = parameters[file] if file and Transcluder.matchAny(file, '^.*%.', {'[Jj][Pp][Ee]?[Gg]','[Pp][Nn][Gg]','[Gg][Ii][Ff]','[Ss][Vv][Gg]'}, '.*') then file = mw.ustring.match(file, '%[?%[?.-:([^{|]+)%]?%]?') or file -- [[File:Example.jpg{{!}}upright=1.5]] to Example.jpg captions = pair[2] for _, p in pairs(captions) do if parameters[p] then caption = parameters[p] break end end excerpt = '[[File:' .. file .. '|thumb|' .. (caption or '') .. ']]' .. excerpt break end end end -- Remove nested categories excerpt = frame:preprocess(excerpt) local categories, excerpt = Transcluder.getCategories(excerpt, options.categories) -- Add tracking categories if config.categories then local contentCategory = config.categories.content if contentCategory and mw.title.getCurrentTitle().isContentPage then excerpt = excerpt .. '[[Category:' .. contentCategory .. ']]' end local namespaceCategory = config.categories[ mw.title.getCurrentTitle().namespace ] if namespaceCategory then excerpt = excerpt .. '[[Category:' .. namespaceCategory .. ']]' end end -- Load the styles local styles if config.styles then styles = frame:extensionTag( 'templatestyles', '', { src = config.styles } ) end -- Combine and return the elements local tag1 = 'div' local tag2 = 'div' if inline then tag1 = 'span' tag2 = 'span' elseif quote then tag2 = 'blockquote' end excerpt = mw.html.create(tag1):addClass('excerpt'):wikitext(excerpt) local block = mw.html.create(tag2):addClass('excerpt-block'):addClass(class) return block:node(styles):node(hat):node(excerpt):node(more) end -- Entry points for backwards compatibility function p.lead(frame) return p.main(frame) end function p.excerpt(frame) return p.main(frame) end return p
Summary:
Please note that all contributions to Stockhub may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Stockhub:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Template used on this page:
Module:Excerpt/staging/doc
(
edit
)