en>Uncle G |
|
| (177 intermediate revisions by 20 users not shown) |
| Line 1: |
Line 1: |
| − | --require "mw.text"
| + | error('This module is retained for historical and structural reasons; consider using [[Module:Citation/CS1]].') |
| − | | |
| − | local p = {}
| |
| − | | |
| − | -- This can be removed when mw.text.tag appears.
| |
| − | function tag(frame, t)
| |
| − | local name = t.name or "!--"
| |
| − | local content = t.contents or ""
| |
| − | local params = ""
| |
| − | for n,v in pairs(t.params) do
| |
| − | params = params .. "|" .. n .. "=" .. v
| |
| − | end
| |
| − | return frame:preprocess("{{#tag:" .. name .. "|" .. content .. params .. ">")
| |
| − | end
| |
| − | | |
| − | function anchorid(frame)
| |
| − | local P1 = frame.args[1] or ""
| |
| − | local P2 = frame.args[2] or ""
| |
| − | local P3 = frame.args[3] or ""
| |
| − | local P4 = frame.args[4] or ""
| |
| − | local P5 = frame.args[5] or ""
| |
| − | return "CITEREF" .. P1 .. P2 .. P3 .. P4 .. P5
| |
| − | end
| |
| − | | |
| − | function name(frame)
| |
| − | local P1 = frame.args[1] or ""
| |
| − | if ( frame.args[5] ~= nil) then
| |
| − | return P1 .. " et al."
| |
| − | else
| |
| − | local P2 = frame.args[2] or ""
| |
| − | local P3 = frame.args[3] or ""
| |
| − | local P4 = frame.args[4] or ""
| |
| − | if ( frame.args[4] ~= nil ) then
| |
| − | P3 = " & " .. P3
| |
| − | P2 = " & " .. P2
| |
| − | elseif ( frame.args[3] ~= nil ) then
| |
| − | P2 = " & " .. P2
| |
| − | end
| |
| − | return P1 .. P2 .. P3 .. P4
| |
| − | end
| |
| − | end
| |
| − | | |
| − | function crossref(frame)
| |
| − | local LB = frame.BracketLeft or ""
| |
| − | local RB = frame.BracketRightt or ""
| |
| − | local anchor = frame.ref or frame.Ref or anchorid(frame)
| |
| − | local text = name(frame)
| |
| − | local loc = frame.loc or ""
| |
| − | local page = frame.p or frame.page or nil
| |
| − | local pages = frame.pp or frame.pages or nil
| |
| − | if ( page ~= nil ) then
| |
| − | local pagesep = frame.PageSep or ""
| |
| − | text = text .. pagesep .. page
| |
| − | end
| |
| − | if ( pages ~= nil ) then
| |
| − | local pagessep = frame.PagesSep or ""
| |
| − | text = text .. pagessep .. pages
| |
| − | end
| |
| − | local ps = frame.Postscript or ""
| |
| − | return LB .. "[[#" .. anchor .. "|" .. text .. "]]" .. RB .. ps
| |
| − | end
| |
| − | | |
| − | -- This is used by templates such as {{SfnRef}} to create the (encoded) anchor name for a Harvard cross-reference hyperlink.
| |
| − | function p.SFNID(frame)
| |
| − | local pframe = frame:getParent()
| |
| − | return anchorid(pframe)
| |
| − | end
| |
| − | | |
| − | -- This is used by templates such as {{Harvard citation}} to create the Harvard cross-reference text.
| |
| − | function p.Harvard(frame)
| |
| − | local pframe = frame:getParent()
| |
| − | return crossref(pframe)
| |
| − | end
| |
| − | | |
| − | -- This is used by templates such as {{sfn}} to create the entire cross-reference.
| |
| − | function p.sfn(frame)
| |
| − | local pframe = frame:getParent()
| |
| − | local content = crossref(pframe)
| |
| − | local args = { name = anchorid(pframe) }
| |
| − | -- return mw.text.tag{name = "ref", contents = content, params = args}
| |
| − | return tag(frame, {name = "ref", contents = content, params = args})
| |
| − | end
| |
| − | | |
| − | return p
| |