| Line 19: |
Line 19: |
| | -- Helper functions | | -- Helper functions |
| | -------------------------------------------------------------------------------- | | -------------------------------------------------------------------------------- |
| − |
| |
| − | local curNs = mw.title.getCurrentTitle().namespace
| |
| − | p.missingTargetCat =
| |
| − | --Default missing target category, exported for use in related modules
| |
| − | ((curNs == 0) or (curNs == 14)) and
| |
| − | 'Articles with hatnote templates targeting a nonexistent page' or nil
| |
| | | | |
| | local function getArgs(frame) | | local function getArgs(frame) |
| Line 36: |
Line 30: |
| | -- Removes the initial colon from a string, if present. | | -- Removes the initial colon from a string, if present. |
| | return s:match('^:?(.*)') | | return s:match('^:?(.*)') |
| | + | end |
| | + | |
| | + | function p.defaultClasses(inline) |
| | + | -- Provides the default hatnote classes as a space-separated string; useful |
| | + | -- for hatnote-manipulation modules like [[Module:Hatnote group]]. |
| | + | return |
| | + | (inline == 1 and 'hatnote-inline' or 'hatnote') .. ' ' .. |
| | + | 'navigation-not-searchable' |
| | + | end |
| | + | |
| | + | function p.disambiguate(page, disambiguator) |
| | + | -- Formats a page title with a disambiguation parenthetical, |
| | + | -- i.e. "Example" → "Example (disambiguation)". |
| | + | checkType('disambiguate', 1, page, 'string') |
| | + | checkType('disambiguate', 2, disambiguator, 'string', true) |
| | + | disambiguator = disambiguator or 'disambiguation' |
| | + | return mw.ustring.format('%s (%s)', page, disambiguator) |
| | end | | end |
| | | | |
| Line 97: |
Line 108: |
| | end | | end |
| | | | |
| − | function p.disambiguate(page, disambiguator) | + | local curNs = mw.title.getCurrentTitle().namespace |
| − | -- Formats a page title with a disambiguation parenthetical, | + | p.missingTargetCat = |
| − | -- i.e. "Example" → "Example (disambiguation)". | + | --Default missing target category, exported for use in related modules |
| − | checkType('disambiguate', 1, page, 'string')
| + | ((curNs == 0) or (curNs == 14)) and |
| − | checkType('disambiguate', 2, disambiguator, 'string', true) | + | 'Articles with hatnote templates targeting a nonexistent page' or nil |
| − | disambiguator = disambiguator or 'disambiguation' | + | |
| − | return mw.ustring.format('%s (%s)', page, disambiguator)
| + | function p.quote(title) |
| | + | --Wraps titles in quotation marks. If the title starts/ends with a quotation |
| | + | --mark, kerns that side as with {{-'}} |
| | + | local quotationMarks = { |
| | + | ["'"]=true, ['"']=true, ['“']=true, ["‘"]=true, ['”']=true, ["’"]=true |
| | + | } |
| | + | local quoteLeft, quoteRight = -- Test if start/end are quotation marks |
| | + | quotationMarks[string.sub(title, 1, 1)], |
| | + | quotationMarks[string.sub(title, -1, -1)] |
| | + | if quoteLeft or quoteRight then |
| | + | title = mw.html.create("span"):wikitext(title) |
| | + | end |
| | + | if quoteLeft then title:css("padding-left", "0.15em") end |
| | + | if quoteRight then title:css("padding-right", "0.15em") end |
| | + | return '"' .. tostring(title) .. '"' |
| | end | | end |
| | | | |
| Line 111: |
Line 136: |
| | -- Produces standard hatnote text. Implements the {{hatnote}} template. | | -- Produces standard hatnote text. Implements the {{hatnote}} template. |
| | -------------------------------------------------------------------------------- | | -------------------------------------------------------------------------------- |
| | + | p[''] = function (frame) return p.hatnote(frame:newChild{ title = "Template:Hatnote" }) end |
| | | | |
| | function p.hatnote(frame) | | function p.hatnote(frame) |
| Line 141: |
Line 167: |
| | hatnote | | hatnote |
| | :attr('role', 'note') | | :attr('role', 'note') |
| − | :addClass(inline == 1 and 'hatnote-inline' or 'hatnote') | + | :addClass(p.defaultClasses(inline)) |
| − | :addClass('navigation-not-searchable')
| |
| | :addClass(extraclasses) | | :addClass(extraclasses) |
| | :addClass(options.selfref and 'selfref' or nil) | | :addClass(options.selfref and 'selfref' or nil) |
| | :wikitext(s) | | :wikitext(s) |
| − |
| + | |
| | return mw.getCurrentFrame():extensionTag{ | | return mw.getCurrentFrame():extensionTag{ |
| | name = 'templatestyles', args = { src = 'Module:Hatnote/styles.css' } | | name = 'templatestyles', args = { src = 'Module:Hatnote/styles.css' } |