163 lines
5.9 KiB
Lua
163 lines
5.9 KiB
Lua
document
|
||
= {
|
||
languages
|
||
= {
|
||
},
|
||
}
|
||
|
||
local function prepareLanguage ( object, text )
|
||
local language = document.languages [ object.language ] or {}
|
||
return {
|
||
language = object.language or "",
|
||
marks = object.marks or language.marks or "",
|
||
marksLeft = object.marksLeft or language.marksLeft or "",
|
||
marksRight = object.marksRight or language.marksRight or "",
|
||
right = language.right or false,
|
||
prepare = language.prepare or false,
|
||
font = language.font or "",
|
||
type = language.type or "\\textit",
|
||
text = text,
|
||
}
|
||
end
|
||
|
||
function document.parseQuote ( inputOptionList, inputOriginalText, inputTranscript, inputTranslatedText, inputAuthor )
|
||
-- parse options
|
||
local original = {}
|
||
local translated = {}
|
||
for option in inputOptionList:gmatch ( "([^,]+)" )
|
||
do
|
||
opName, opValue = option:match ( "([^=]+)=(.+)" )
|
||
if opName and opValue
|
||
then
|
||
if opName == "originalMarks"
|
||
then
|
||
original.marks = opValue
|
||
elseif opName == "originalLeft"
|
||
then
|
||
original.marksLeft = opValue
|
||
elseif opName == "originalRight"
|
||
then
|
||
original.marksRight = opValue
|
||
elseif opName == "originalLanguage"
|
||
then
|
||
original.language = opValue
|
||
elseif opName == "translatedMarks"
|
||
then
|
||
translated.marks = opValue
|
||
elseif opName == "translatedLeft"
|
||
then
|
||
translated.marksLeft = opValue
|
||
elseif opName == "translatedRight"
|
||
then
|
||
translated.marksRight = opValue
|
||
elseif opName == "translatedLanguage"
|
||
then
|
||
translated.language = opValue
|
||
end
|
||
else
|
||
-- flags
|
||
end
|
||
end
|
||
|
||
-- construct quote-object
|
||
document.quote
|
||
= {
|
||
optionList = inputOptionList,
|
||
author = inputAuthor,
|
||
text = false,
|
||
original = prepareLanguage ( original, inputOriginalText ),
|
||
transcript = inputTranscript,
|
||
translated = prepareLanguage ( translated, inputTranslatedText ),
|
||
}
|
||
|
||
local original = document.quote.original
|
||
local translated = document.quote.translated
|
||
|
||
-- Generate Original Quote
|
||
if original.text ~= ""
|
||
then
|
||
if type ( original.prepare ) == "function"
|
||
then
|
||
original.text = original.prepare ( original.text ) or ""
|
||
end
|
||
|
||
-- Quotation Marks for Original Quote
|
||
if original.marks == ""
|
||
then
|
||
if original.marksLeft == ""
|
||
and original.marksRight == ""
|
||
then
|
||
original.text = "\\q{" .. original.text .. "}"
|
||
else
|
||
original.text = original.marksLeft .. original.text .. original.marksRight
|
||
end
|
||
else
|
||
original.text = "\\" .. original.marks .. "{" .. original.text .. "}"
|
||
end
|
||
original.text = "\\normalsize" .. original.type .. original.font .. "{" .. original.text .. "}"
|
||
|
||
-- Transcript
|
||
if document.quote.transcript ~= ""
|
||
then
|
||
original.text = original.text .. "\\linebreak\\tiny{[" .. document.quote.transcript .. "]}"
|
||
end
|
||
if original.right
|
||
then
|
||
original.text = "\\begin{flushright}{" .. original.text .. "}\\end{flushright}"
|
||
end
|
||
|
||
-- Generate Translated Quote
|
||
if translated.text ~= ""
|
||
then
|
||
if type ( translated.prepare ) == "function"
|
||
then
|
||
translated.text = translated.prepare ( translated.text ) or ""
|
||
end
|
||
|
||
-- Quotation Marks for Translated Quote
|
||
if translated.marks == ""
|
||
then
|
||
if translated.marksLeft == ""
|
||
and translated.marksRight == ""
|
||
then
|
||
translated.text = "\\q{" .. translated.text .. "}"
|
||
else
|
||
translated.text = translated.marksLeft .. translated.text .. translated.marksRight
|
||
end
|
||
else
|
||
translated.text = "\\" .. translated.marks .. "{" .. translated.text .. "}"
|
||
end
|
||
translated.text = "\\footnotesize" .. translated.font .. "(" .. translated.type .. "{" .. translated.text .. "})"
|
||
if translated.right
|
||
then
|
||
translated.text = "\\begin{flushright}{" .. translated.text .. "}\\end{flushright}"
|
||
end
|
||
translated.text = "\\par" .. translated.text
|
||
end
|
||
|
||
if document.quote.author ~= ""
|
||
then
|
||
document.quote.author = "\\par{\\raggedleft\\footnotesize– " .. document.quote.author .. "}"
|
||
end
|
||
|
||
document.quote.text
|
||
= original.text
|
||
.. translated.text
|
||
.. document.quote.author
|
||
|
||
log.debug("document.parseQuote", "Got Text: »"..document.quote.text.."«")
|
||
end
|
||
end
|
||
|
||
function document.printQuote ( )
|
||
if document.quote.text
|
||
then
|
||
tex.print
|
||
(
|
||
"{~\\vfill\\hfill\\parbox[][][t]{0.618\\linewidth}{\\noWordBreaks "
|
||
.. document.quote.text
|
||
.. "\\newpage}{}}"
|
||
)
|
||
end
|
||
end
|