Remove sample RIS custom reader (since we now have a native one).
This commit is contained in:
parent
0f0b042139
commit
2b3433404e
1 changed files with 0 additions and 217 deletions
|
@ -159,223 +159,6 @@ except paragraph breaks.
|
|||
]
|
||||
```
|
||||
|
||||
# Example: a RIS bibliography reader
|
||||
|
||||
This is a parser for [RIS bibliography] files. It can be used
|
||||
to convert them to CSL JSON or YAML, BibTeX, or BibLaTeX.
|
||||
|
||||
[RIS bibliography]: https://en.wikipedia.org/wiki/RIS_(file_format)
|
||||
|
||||
```lua
|
||||
-- A sample custom reader for RIS bibliography format
|
||||
-- https://en.wikipedia.org/wiki/RIS_(file_format)
|
||||
-- The references are converted to inline pandoc/CSL YAML
|
||||
-- references in the metadata.
|
||||
|
||||
local inspect = require"inspect"
|
||||
|
||||
local types =
|
||||
{ ABST = "article",
|
||||
ADVS = "motion-picture",
|
||||
AGGR = "dataset",
|
||||
ANCIENT = "book",
|
||||
ART = "graphic",
|
||||
BILL = "bill",
|
||||
BLOG = "post-weblog",
|
||||
BOOK = "book",
|
||||
CASE = "legal_case",
|
||||
CHAP = "chapter",
|
||||
CHART = "graphic",
|
||||
CLSWK = "book",
|
||||
COMP = "program",
|
||||
CONF = "paper-conference",
|
||||
CPAPER = "paper-conference",
|
||||
CTLG = "catalog",
|
||||
DATA = "dataset",
|
||||
DBASE = "dataset",
|
||||
DICT = "book",
|
||||
EBOOK = "book",
|
||||
ECHAP = "chapter",
|
||||
EDBOOK = "book",
|
||||
EJOUR = "article",
|
||||
WEB = "webpage",
|
||||
ENCYC = "entry-encyclopedia",
|
||||
EQUA = "figure",
|
||||
FIGURE = "figure",
|
||||
GEN = "entry",
|
||||
GOVDOC = "report",
|
||||
GRANT = "report",
|
||||
HEAR = "report",
|
||||
ICOMM = "personal_communication",
|
||||
INPR = "article-journal",
|
||||
JFULL = "article-journal",
|
||||
JOUR = "article-journal",
|
||||
LEGAL = "legal_case",
|
||||
MANSCPT = "manuscript",
|
||||
MAP = "map",
|
||||
MGZN = "article-magazine",
|
||||
MPCT = "motion-picture",
|
||||
MULTI = "webpage",
|
||||
MUSIC = "musical_score",
|
||||
NEWS = "article-newspaper",
|
||||
PAMP = "pamphlet",
|
||||
PAT = "patent",
|
||||
PCOMM = "personal_communication",
|
||||
RPRT = "report",
|
||||
SER = "article",
|
||||
SLIDE = "graphic",
|
||||
SOUND = "musical_score",
|
||||
STAND = "report",
|
||||
STAT = "legislation",
|
||||
THES = "thesis",
|
||||
UNBILL = "bill",
|
||||
UNPB = "unpublished",
|
||||
VIDEO = "graphic"
|
||||
}
|
||||
|
||||
local function clean(refpairs)
|
||||
local ref = {}
|
||||
for i = 1, #refpairs do
|
||||
local k,v = table.unpack(refpairs[i])
|
||||
if k == "TY" then
|
||||
ref["type"] = types[v]
|
||||
elseif k == "VL" then
|
||||
ref.volume = v
|
||||
elseif k == "KW" then
|
||||
ref.keyword = v
|
||||
elseif k == "PB" then
|
||||
ref.publisher = v
|
||||
elseif k == "CY" or k == "PP" then
|
||||
ref["publisher-place"] = v
|
||||
elseif k == "SP" then
|
||||
if ref.page then
|
||||
ref.page = v .. ref.page
|
||||
else
|
||||
ref.page = v
|
||||
end
|
||||
elseif k == "EP" then
|
||||
if ref.page then
|
||||
ref.page = ref.page .. "-" .. v
|
||||
else
|
||||
ref.page = "-" .. v
|
||||
end
|
||||
elseif k == "AU" or k == "A1" or k == "A2" or k == "A3" then
|
||||
if ref.author then
|
||||
table.insert(ref.author, v)
|
||||
else
|
||||
ref.author = {v}
|
||||
end
|
||||
elseif k == "TI" or k == "T1" or k == "CT" or
|
||||
(k == "BT" and ref.type == "book") then
|
||||
ref.title = v
|
||||
elseif k == "ET" then
|
||||
ref.edition = v
|
||||
elseif k == "NV" then
|
||||
ref["number-of-volumes"] = v
|
||||
elseif k == "AB" then
|
||||
ref.abstract = v
|
||||
elseif k == "ED" then
|
||||
if ref.editor then
|
||||
table.insert(ref.editor, v)
|
||||
else
|
||||
ref.editor = {v}
|
||||
end
|
||||
elseif k == "JO" or k == "JF" or k == "T2" or
|
||||
(k == "BT" and ref.type ~= "book") then
|
||||
ref["container-title"] = v
|
||||
elseif k == "PY" or k == "Y1" then
|
||||
ref.issued = v
|
||||
elseif k == "IS" then
|
||||
ref.issue = v
|
||||
elseif k == "SN" then
|
||||
ref.ISSN = v
|
||||
elseif k == "L" then
|
||||
ref.lang = v
|
||||
elseif k == "UR" or k == "LK" then
|
||||
ref.URL = v
|
||||
end
|
||||
end
|
||||
return ref
|
||||
end
|
||||
|
||||
function Reader(input, reader_options)
|
||||
local refs = {}
|
||||
local thisref = {}
|
||||
local ids = {}
|
||||
for line in string.gmatch(tostring(input), "[^\n]*") do
|
||||
key, val = string.match(line, "([A-Z][A-Z0-9]) %- (.*)")
|
||||
if key == "ER" then
|
||||
-- clean up fields
|
||||
local newref = clean(thisref)
|
||||
-- ensure we have an id and if not, create a sensible one
|
||||
if not newref.id then
|
||||
newref.id = ""
|
||||
for _,x in ipairs(newref.author) do
|
||||
newref.id = newref.id .. string.match(pandoc.utils.stringify(x), "%a+")
|
||||
end
|
||||
if newref.issued then
|
||||
newref.id = newref.id .. string.match(newref.issued, "%d+")
|
||||
end
|
||||
if ids[newref.id] then -- add disambiguator if needed
|
||||
newref.id = newref.id .. "-" .. #ids
|
||||
end
|
||||
end
|
||||
table.insert(ids, newref.id)
|
||||
table.insert(refs, newref)
|
||||
thisref = {}
|
||||
elseif key then
|
||||
table.insert(thisref, {key, val})
|
||||
end
|
||||
end
|
||||
return pandoc.Pandoc({}, pandoc.Meta { references = refs } )
|
||||
end
|
||||
```
|
||||
|
||||
Example of use:
|
||||
|
||||
```
|
||||
% pandoc -f ris.lua -t bibtex
|
||||
TY - JOUR
|
||||
AU - Shannon, Claude E.
|
||||
PY - 1948
|
||||
DA - July
|
||||
TI - A Mathematical Theory of Communication
|
||||
T2 - Bell System Technical Journal
|
||||
SP - 379
|
||||
EP - 423
|
||||
VL - 27
|
||||
ER -
|
||||
TY - JOUR
|
||||
T1 - On computable numbers, with an application to the Entscheidungsproblem
|
||||
A1 - Turing, Alan Mathison
|
||||
JO - Proc. of London Mathematical Society
|
||||
VL - 47
|
||||
IS - 1
|
||||
SP - 230
|
||||
EP - 265
|
||||
Y1 - 1937
|
||||
ER -
|
||||
^D
|
||||
@article{Shannon1948,
|
||||
author = {Shannon, Claude E.},
|
||||
title = {A {Mathematical} {Theory} of {Communication}},
|
||||
journal = {Bell System Technical Journal},
|
||||
volume = {27},
|
||||
pages = {379-423},
|
||||
year = {1948}
|
||||
}
|
||||
@article{Turing1937,
|
||||
author = {Turing, Alan Mathison},
|
||||
title = {On Computable Numbers, with an Application to the
|
||||
{Entscheidungsproblem}},
|
||||
journal = {Proc. of London Mathematical Society},
|
||||
volume = {47},
|
||||
number = {1},
|
||||
pages = {230-265},
|
||||
year = {1937}
|
||||
}
|
||||
```
|
||||
|
||||
# Example: a wiki Creole reader
|
||||
|
||||
This is a parser for [Creole common wiki markup].
|
||||
|
|
Loading…
Reference in a new issue