Module:Bibliographical item
From International Robin Hood Bibliography
Documentation for this module may be created at Module:Bibliographical item/doc
-- This module is no longer used. local p = {} local f = nil local t = nil local s = require "Module:StringUtilities" local v = require "Module:PageVariables" local b = require "Module:BibliographicalProperties" local function assembleSingleValue(microDataName, value) return "<span itemprop='" .. microDataName .. "'>" .. value .. "</span>" end local function prepareSingleValue(variableName, microDataName, prefix, suffix, fullStop) local prefix = prefix or "" local suffix = suffix or "" local fullStop = fullStop or false local value = v.readVariable(f, variableName) if value ~= "" then value = assembleSingleValue(microDataName, value) .. "." value = string.gsub(value, "%.%<%/span%>%.$", "</span>.") value = prefix .. value .. suffix end return value end local function prepareMultiPartValue(variableName) local strValue = v.readVariable(f, variableName) strValue = string.gsub(strValue, t .. " ", "") local arStrValue = s.splitString(strValue, "▚") for i, contrib in ipairs(arStrValue) do arStrValue[i] = string.sub(arStrValue[i], 2) arStrValue[i] = arStrValue[i]:sub(1, #string - 2) end return arStrValue end local function prepareDownload(downloadData) downloadData = string.gsub(downloadData, "Download, ", "") local arStrDownloadData = s.splitString(downloadData, ",") for i, download in ipairs(arStrDownloadData) do if (i > 3) then arStrDownloadData[3] = arStrDownloadData[3] .. arStrDownloadData[i] end end local value = "" local url = s.trim(arStrDownloadData[1]) local text = s.trim(arStrDownloadData[2]) local comment = s.trim(arStrDownloadData[3]) if (url ~= "") then value = "\n* [" .. url .. " " .. text .. "]" else value = text end if (comment ~= nil and comment ~= "?") then value = value .. " – " .. comment end return value end local function prepareCopy(copyData) local posRecordClass = copyData:find(", Copy, ") local libraryCollection = string.sub(copyData, 1, posRecordClass - 1) libraryCollection = s.trim(libraryCollection) local afterRecordClass = string.sub(copyData, posRecordClass + string.len(", Copy, ") ) local text = "" local url = "" local posLastComma = string.find(afterRecordClass, ",[^,]*$") if (posLastComma ~= nil) then text = string.sub(afterRecordClass, 0, posLastComma - 1) text = s.trim(text) url = string.sub(afterRecordClass, posLastComma + 1) url = s.trim(url) end if (text == "?") then text = "" else text = " – " .. text end if (url ~= "?") then libraryCollection = "[" .. url .. " " .. libraryCollection .. "]" end libraryCollection = libraryCollection .. text if libraryCollection ~= "" then libraryCollection = "\n* " .. libraryCollection end return libraryCollection end local function prepareBibliographicalSource(bibliographicalSourceData) local posRecordClass = bibliographicalSourceData:find(", BibliographicalSource, ") local beforeRecordClass = string.sub(bibliographicalSourceData, 1, posRecordClass - 1) beforeRecordClass = s.trim(beforeRecordClass) local comment = string.sub(bibliographicalSourceData, posRecordClass + string.len(", BibliographicalSource, ") ) comment = s.trim(comment) local posBool = string.find(beforeRecordClass, ", false,") local isIrhbPage if posBool == nil then posBool = string.find(beforeRecordClass, ", true,") isIrhbPage = ", true," else isIrhbPage = ", false," end local text = string.sub(beforeRecordClass, 1, posBool - 1) local url = string.sub(beforeRecordClass, posBool + string.len(isIrhbPage) + 1) if isIrhbPage ~= ", true," then text = "[" .. url .. " " .. text .. "]" else text = "{{:" .. text .. "}}" end if comment ~= "?" then text = text .. " – " .. comment end if text ~= "" then text = "\n* " .. text end return text -- BL Catalogue;false;http://www.bl.uk;BibliographicalSource; -- Gable, John Harris 1939a;true;;BibliographicalSource;No. 2 -- Walker, Violet Winifred 1933a;false;;BibliographicalSource; -- BookBibliographicalSourceText; BookIsPage; Url; RecordClass; Comment --]] end local function prepareList(variableName, formatter, heading) local arStr = prepareMultiPartValue(variableName) local value = "" for i, item in ipairs(arStr) do value = value .. formatter(arStr[i]) end if (value ~= "") then value = "'''" .. heading .. "'''" .. value end value = f:preprocess(value) return "<p class='biblioItem'><br/>" .. value .. "</p>" end local function prepareDimensions(suffix) local suffix = suffix or "" local dim = prepareSingleValue("BookHeight", b.Height, "", " ", false) if dim ~= "" then dim = dim .. prepareSingleValue("BookWidth", b.Width, "x ", " ", true) else dim = prepareSingleValue("BookFormat", b.Format, "", " ", true) end return dim end local function prepareIsbns() local arStrIsbns = prepareMultiPartValue("BookIsbn") local isbns = "" for i, isbn in ipairs(arStrIsbns) do arStrIsbns[i] = string.gsub(arStrIsbns[i], "Isbn, ", "<span itemprop='" .. b.IsbnNumber .. "'>") arStrIsbns[i] = string.gsub(arStrIsbns[i], ", ", "</span> (<span itemprop='" .. b.IsbnNote .. "'>") if arStrIsbns[i]:find("%(") ~= nil then arStrIsbns[i] = arStrIsbns[i] .. "</span>)" end isbns = isbns .. "<span itemscope='' itemtype='" .. b.Isbn .. "'>" .. arStrIsbns[i] .. "</span>; " end isbns = string.gsub(isbns, "%; $", ". ") isbns = string.gsub(isbns, "%.%. $", ".") .. " " return isbns end local function prepareImprints() local arStrImprints = prepareMultiPartValue("BookImprint") local imprints = "" for i, imprint in ipairs(arStrImprints) do imprints = imprints .. "<span itemscope itemtype='" .. b.Imprint .. "'><span itemprop='" .. b.Place .. "'>" imprints = imprints .. string.gsub(arStrImprints[i], ", Imprint,", "</span>: <span itemprop='" .. b.Publisher .. "'>") imprints = imprints .. "</span></span>; " end imprints = string.gsub(imprints, "%; $", ". ") imprints = string.gsub(imprints, "%.</span></span>%. $", "</span></span>.") return imprints end local function prepareSeries(suffix) local suffix = suffix or "" local seriesData = prepareSingleValue("BookSeriesTitle", b.SeriesTitle, "(<i>", "</i>", false) local seriesNumber = prepareSingleValue("BookSeriesNumber", b.SeriesNumber, "", "", false) if seriesData ~= "" then if seriesNumber ~= "" then seriesData = seriesData .. ", " .. seriesNumber end seriesData = seriesData .. ")" .. suffix else if seriesNumber ~= "" then seriesData = "(" .. seriesNumber .. ")" .. suffix end end return seriesData end local function prepareMonographBaseData() local baseData = prepareSingleValue("BookTitle", b.Title, "<i>", "</i>", false) baseData = baseData .. prepareSingleValue("BookEdition", b.Edition, ". ", "", false) baseData = string.gsub(baseData, "%.%<%/i%>.", ".</i>") baseData = baseData .. prepareSingleValue("BookAttribution", b.Attribution, " / ", "", false) baseData = baseData .. prepareSeries(".") .. " " .. prepareImprints() baseData = baseData .. prepareSingleValue("DateString", b.DateString, ", ", " ", true) baseData = baseData .. prepareSingleValue("BookVolumes", b.Volumes, "", " ", true) baseData = baseData .. prepareSingleValue("BookCollation", b.Collation, "", " ", true) baseData = baseData .. prepareDimensions(" ") baseData = baseData .. prepareSingleValue("BookIllustrations", b.Illustrations, "", " ", false) baseData = baseData .. prepareSingleValue("BookBinding", b.Binding, "", " ", false) baseData = baseData .. prepareSingleValue("BookIssn", b.ISSN, "", " ", false) .. prepareIsbns() baseData = baseData .. prepareSingleValue("BookLccn", b.LCCN, "", " ", false) return baseData end local function preparePaperBaseData() local basedata = "'" .. v.readVariable(f, "BookTitle" ) .. "'" return basedata end local function prepareContributors() local arStrContributors = prepareMultiPartValue("BookContributors") local originators = "" for i, contrib in ipairs(arStrContributors) do arStrContributors[i] = string.gsub(arStrContributors[i], "%, ", "⬛", 1) arStrContributors[i] = string.gsub(arStrContributors[i], "%, Contributor%, ", "⬛", 1) local arStrOrig = s.splitString(arStrContributors[i], "⬛") local name = arStrOrig[2] local arStrName = s.splitString(name, ", ") local surname = table.remove(arStrName, 1) surname = assembleSingleValue(b.Surname, surname) local givenNames = table.concat(arStrName, " ") if givenNames ~= "?" then givenNames = ", " .. assembleSingleValue(b.GivenNames, givenNames) else givenNames = "" end local role = arStrOrig[1] if role ~= "?" then role = ", " .. assembleSingleValue(b.Role, role) else role = "" end originators = originators .. " <span itemscope itemtype='" .. b.Contributor .. "'>" originators = originators .. surname .. givenNames .. role .. "</span>; " end originators = string.gsub(originators, "%; $", ". ") return originators end function p.prepare( frame ) f = frame t = v.readVariable(f, 'PageName' ) local bookType = v.readVariable(f, "BookType" ) local baseData = "<span itemscope itemtype='" .. bookType .. "'>" baseData = baseData .. prepareContributors() .. " " if bookType == "Monograph" then baseData = baseData .. prepareMonographBaseData() elseif bookType == "Paper" then baseData = baseData .. preparePaperBaseData() end baseData = baseData .. "</span>" v.defineVariable(f, "BaseData", baseData) v.defineVariable(f, "Comment", prepareSingleValue("BookComment", b.Comment, "<br/><br/><p class='biblioItem'>", "</p>", false) ) v.defineVariable(f, "Downloads", prepareList("BookDownload", prepareDownload, "Downloads") ) v.defineVariable(f, "Copies", prepareList("BookCopy", prepareCopy, "Copies") ) v.defineVariable(f, "BibliographicalSources", prepareList("BookBibliographicalSource", prepareBibliographicalSource, "Bibliographical sources") ) return "" end return p --[[ p.Image = "Image" -- ToDo: Add ImageText and other properties as required p.Language = "Language" p.PageReference = "Page_Reference" BookIsTranslation --]]