|
|
(15 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
| -- local p = {}
| |
| -- function p.date(frame)
| |
| -- local Date = os.date()
| |
| -- local hour = Date:match("(%d+):%d+:%d+")
| |
| -- local minute = Date:match("%d+:(%d+):%d+")
| |
| -- local second = Date:match("%d+:%d+:(%d+)")
| |
| -- return hour .. ":" .. minute .. ":" .. second
| |
| -- end
| |
| -- return p
| |
|
| |
| local p = {} | | local p = {} |
| | | function p.test( frame ) |
| local function is_set (var)
| | -- Get contents of page |
| return not (var == nil or var == '');
| | local pageContent = tostring(mw.title.getCurrentTitle():getContent()) |
| end
| | -- Split contents of page in lines |
| | | local pageLines = mw.text.split(pageContent,'\n',true) |
| local function italics (var)
| | local render = '' |
| return "<i>" .. var .. "</i>"
| | for i=1,#pageLines do |
| end
| | -- Get every line starting with '==', that is, a header |
| | | if mw.text.split(pageLines[i], '%s')[1] == '==' then |
| local function parenthesis (var)
| | render = render .. pageLines[i] |
| return "(" .. var .. ")"
| |
| end
| |
| | |
| function p.cite( frame ) | |
| local pframe = frame:getParent() | |
| local Author = pframe.args.author
| |
| local Year = pframe.args.year or pframe.args['date']
| |
| local Chapter = pframe.args.chapter
| |
| local ChapterURL = pframe.args['chapter-url']
| |
| local Section = pframe.args.section
| |
| local Title = pframe.args.title
| |
| local TitleURL = pframe.args['title-url']
| |
| local LibraryTitle = pframe.args['library-title']
| |
| local Volume = pframe.args.volume
| |
| local Series = pframe.args.series or pframe.args.journal
| |
| local Trans = pframe.args['trans-title']
| |
| local TransLang = pframe.args['trans-lang']
| |
| local Page = pframe.args.page or pframe.args.pages
| |
| local PDF = pframe.args.pdf | |
| local City = pframe.args.city
| |
| local Publisher = pframe.args.publisher or pframe.args.via
| |
| local ISBN = pframe.args.isbn or pframe.args.issn
| |
| local ISSN = false
| |
| if is_set(pframe.args.issn) then
| |
| ISSN = true
| |
| end
| |
| local DOI = pframe.args.doi
| |
| local LG = pframe.args.lg
| |
| local MIA = pframe.args.mia
| |
| local Quote = pframe.args.quote
| |
| local Image = pframe.args.image
| |
| local ImageCaption = pframe.args['image-caption']
| |
| local Dotless = pframe.args.dotless
| |
| | |
| | |
| if is_set (Author) then
| |
| if is_set (Year) then
| |
| first_part = Author .. " " .. parenthesis (Year) .. "."
| |
| else
| |
| first_part = Author .. "."
| |
| end
| |
| else
| |
| first_part = ''
| |
| end | |
| | |
| if is_set (Quote) then
| |
| Quote = string.gsub(Quote,"\n","<br>")
| |
| Quote = italics("“" .. Quote .. "”")
| |
| local div = mw.html.create ('div')
| |
| div
| |
| :attr("style", "width:80%; margin-left:10%;")
| |
| :wikitext(Quote)
| |
| local br = mw.html.create ('br', selfClosing)
| |
| first_part = tostring(div) .. tostring(br) .. first_part
| |
| end | |
|
| |
| if is_set (Image) then
| |
| local span = mw.html.create ( 'span' )
| |
| span
| |
| :wikitext('[[File:' .. Image .. '|center|300px|frameless]]')
| |
| | |
| if is_set(ImageCaption) then
| |
| local caption = mw.html.create ('div')
| |
| caption
| |
| :attr("style", "text-align:center;font-size:85%;")
| |
| :wikitext(ImageCaption)
| |
| first_part = tostring(span) .. tostring(caption) .. first_part
| |
| else
| |
| first_part = tostring(span) .. first_part
| |
| end | |
|
| |
| end
| |
|
| |
| -- second part: Title(URL), Series, Volume, Chapter(URL), Year, Page, Trans(Lang), PDF
| |
| local second_part = ''
| |
| | |
| if is_set (Title) then
| |
| if is_set (TitleURL) then
| |
| Title = "[" .. TitleURL .. " " .. Title .. "]"
| |
| else if is_set (LibraryTitle) then
| |
| Title = "[[Library:" .. LibraryTitle .. "|" .. Title .. "]]"
| |
| end
| |
| end
| |
| Title = italics(Title)
| |
| if not is_set (Series) then
| |
| if is_set (Volume) then
| |
| Title = Title .. ", vol. " .. Volume
| |
| end
| |
| end
| |
| second_part = Title
| |
| if is_set (Chapter) then
| |
| if is_set (ChapterURL) then
| |
| Chapter = "[" .. ChapterURL .. " " .. Chapter .. "]"
| |
| end
| |
| if is_set (Section) then
| |
| Chapter = Chapter .. "; " .. Section
| |
| end
| |
| second_part = second_part .. ": " .. "'" .. Chapter .. "'"
| |
| end
| |
|
| |
| if not is_set (Author) then
| |
| if is_set (Year) then
| |
| second_part = second_part .. " " .. parenthesis (Year)
| |
| end
| |
| end
| |
|
| |
| if is_set (Trans) then
| |
| if is_set (TransLang) then
| |
| second_part = second_part .. " " .. "(" .. TransLang .. ": " .. Trans .. ")"
| |
| else
| |
| second_part = second_part .. " " .. parenthesis (Trans)
| |
| end
| |
| end
| |
| if is_set (Page) and not is_set (Volume) then
| |
| if tonumber(Page) ~= nil then
| |
| Page = "p." .. " " .. Page
| |
| else
| |
| Page = "pp." .. " " .. Page
| |
| end
| |
| second_part = second_part .. " " .. parenthesis (Page) .. "."
| |
| else
| |
| second_part = second_part .. "."
| |
| end
| |
| end
| |
|
| |
| if is_set (Series) then
| |
| if is_set (Volume) then
| |
| Series = Series .. ", vol." .. Volume
| |
| end | |
| | |
| if is_set (Page) and is_set (Volume) and is_set (Series) then
| |
| if tonumber(Page) ~= nil then
| |
| Page = "p." .. " " .. Page
| |
| else
| |
| Page = "pp." .. " " .. Page
| |
| end
| |
| second_part = second_part .. " " .. Series .. " " .. parenthesis (Page) .. "."
| |
| else
| |
| second_part = second_part .. " " .. Series .. "."
| |
| end
| |
| end
| |
|
| |
| if is_set (PDF) then
| |
| local span = mw.html.create ( 'span' )
| |
| span
| |
| :attr( 'title', 'PDF download')
| |
| :addClass('plainlinks')
| |
| :tag( 'small' )
| |
| :wikitext('[' .. PDF .. " " .. mw.text.nowiki('[PDF]') .. ']')
| |
| second_part = second_part .. " " .. tostring(span)
| |
| end
| |
|
| |
| -- third part: City, Publisher
| |
|
| |
| if is_set (City) then
| |
| if is_set (Publisher) then
| |
| third_part = City .. ": " .. Publisher .. "."
| |
| else
| |
| third_part = City .. "."
| |
| end
| |
| end
| |
| | |
| if not is_set(City) then
| |
| if is_set (Publisher) then
| |
| third_part = Publisher .. "."
| |
| else
| |
| third_part = ''
| |
| end
| |
| end
| |
|
| |
| -- fourth part: ISBN, DOI, Library Genesis, Marxists Internet Archive
| |
| | |
| fourth_part = ''
| |
| | |
| if is_set (ISBN) then
| |
| local span = mw.html.create ( 'span' )
| |
| span
| |
| :addClass('plainlinks')
| |
| if (ISSN) then
| |
| span | |
| :tag( 'small' )
| |
| :attr( 'title', 'The ISSN Portal')
| |
| :wikitext('[' .. "https://portal.issn.org/resource/ISSN/" .. ISBN .. " " .. "ISSN " .. ISBN .. ']')
| |
| else
| |
| span
| |
| :tag( 'small' )
| |
| :attr( 'title', 'WorldCat')
| |
| :wikitext('[' .. "https://www.worldcat.org/search?qt=worldcat_org_all&q=" .. ISBN .. " " .. "ISBN " .. ISBN .. ']')
| |
| end | | end |
| fourth_part = fourth_part .. tostring(span)
| |
| end
| |
|
| |
| if is_set (DOI) then
| |
| local doispan = mw.html.create ( 'span' )
| |
| doispan
| |
| :tag('small')
| |
| :wikitext("doi: " .. DOI)
| |
| fourth_part = fourth_part .. " " .. tostring(doispan)
| |
| local span = mw.html.create ( 'span' )
| |
| span
| |
| :attr( 'title', 'Sci-Hub link')
| |
| :addClass('plainlinks')
| |
| :tag( 'small' )
| |
| :wikitext('[' .. "https://sci-hub.se/" .. DOI .. " " .. mw.text.nowiki('[HUB]') .. ']')
| |
| fourth_part = fourth_part .." " .. tostring(span)
| |
| end
| |
|
| |
| if is_set (LG) then
| |
| local span = mw.html.create ( 'span' )
| |
| span
| |
| :attr( 'title', 'Library Genesis link')
| |
| :addClass('plainlinks')
| |
| :tag( 'small' )
| |
| :wikitext('[' .. LG .. " " .. mw.text.nowiki('[LG]') .. ']')
| |
| fourth_part = fourth_part .." " .. tostring(span)
| |
| end
| |
|
| |
| if is_set (MIA) then
| |
| local span = mw.html.create ( 'span' )
| |
| span
| |
| :attr( 'title', 'Marxists Internet Archive link')
| |
| :addClass('plainlinks')
| |
| :tag( 'small' )
| |
| :wikitext('[' .. MIA .. " " .. mw.text.nowiki('[MIA]') .. ']')
| |
| fourth_part = fourth_part .." " .. tostring(span)
| |
| end
| |
|
| |
|
| |
| if is_set (second_part) then
| |
| second_part = " " .. second_part
| |
| end
| |
|
| |
| if is_set (third_part) then
| |
| third_part = " " .. third_part
| |
| end
| |
|
| |
| if is_set (fourth_part) then
| |
| fourth_part = " " .. fourth_part
| |
| end
| |
|
| |
| local render = first_part .. second_part .. third_part .. fourth_part
| |
|
| |
| -- trim render
| |
|
| |
| render = string.gsub(render,"^%s*(.-)%s*$","%1")
| |
|
| |
| if Dotless then
| |
| render = render:sub(1,-2)
| |
| end | | end |
|
| |
| return render | | return render |
| end | | end |
| return p | | return p |
local p = {}
function p.test( frame )
-- Get contents of page
local pageContent = tostring(mw.title.getCurrentTitle():getContent())
-- Split contents of page in lines
local pageLines = mw.text.split(pageContent,'\n',true)
local render = ''
for i=1,#pageLines do
-- Get every line starting with '==', that is, a header
if mw.text.split(pageLines[i], '%s')[1] == '==' then
render = render .. pageLines[i]
end
end
return render
end
return p