Sebastian Walz 860d31cee1
Tohu vaBohu
2023-04-21 00:22:52 +02:00

158 lines
4.3 KiB
Lua
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

people
= {
extension = "glsp",
language = "deu",
list = { },
mind = { },
table = { },
}
local function parseDate ( this )
if this
and this.date
and type ( this.date ) == "string"
then
local maybe = false
local date = this.date
local unknown = date:match ( "(.+)%?")
if unknown
then
maybe = true
date = unknown
end
if #date == 10
then
local year, month, day = date:match("(%d%d%d%d)-(%d%d)-(%d%d)")
return {
year = tonumber ( year ),
month = tonumber ( month ),
day = tonumber ( day ),
maybe = maybe,
}
elseif #date == 7
then
local year, month = date:match("(%d%d%d%d)-(%d%d)")
return {
year = tonumber ( year ),
month = tonumber ( month ),
maybe = maybe,
}
elseif #date == 4
then
return {
year = tonumber ( date ),
maybe = maybe,
}
else
return nil
end
else
return nil
end
end
local month
= {
"Januar",
"Februar",
"März",
"April",
"Mai",
"Juni",
"Juli",
"August",
"September",
"Oktober",
"November",
"Dezember",
}
local function putDate ( date )
if date
and date.year
then
local life = tostring ( date.year )
if date.month
then
life = month [ date.month ] .. " " .. life
if date.day
then
life = tostring ( date.day ) .. ".~" .. life
end
end
if date.maybe
then
life = life .. "?"
end
return life
else
return "?"
end
end
function people.getEntry ( name )
local entry = people.list [ name ]
if entry
then
if not entry.uses
then
local bornAs = ""
if entry.born
and entry.born.as
then
bornAs = "geboren \\textsc{" .. entry.born.as .. "} "
end
local life = putDate(parseDate(entry.born))
if entry.died
then
life = life .. "" .. putDate(parseDate(entry.died))
end
entry.life = life
entry.long = "\\textsc{" .. entry.full .. "} \\mbox{(" .. life .. ")}"
entry.identifier = name
if entry.description
then
entry.description.native
= entry.description [ people.language ]
or entry.description.eng
or ""
end
entry.bookmarkAs = "\\textsc{" .. entry.full .. "}"
entry.title = bornAs .. "(" .. life .. ")"
entry.uses = 1
else
entry.uses = entry.uses + 1
end
end
return entry
end
function people.sort ( this, that )
return this.full < that.full
end
function people.print ( name, text )
if not name
or name == ""
then
name = text:lower()
end
local pdfString = text
local texString = "\\textsc{" .. text .. "}"
local entry = people.getEntry ( name )
if entry
then
texString = "\\protect\\hyperlink{person:" .. name .. "}{" .. texString .. "}"
else
log.warn
(
"people.print",
"Who is »"..text.."« (»"..name.."«)?"
)
end
tex.print ( "{\\texorpdfstring{\\mbox{" .. texString .. "}}{" .. pdfString .. "}}" )
end