Difference between revisions of "Module:SB"

From Teopedia library
Jump to navigation Jump to search
m (+language and translator)
 
(11 intermediate revisions by the same user not shown)
Line 4: Line 4:
 
local id = frame.args['volume'] .. '-' .. frame.args['page'] .. '-' .. frame.args['item']
 
local id = frame.args['volume'] .. '-' .. frame.args['page'] .. '-' .. frame.args['item']
 
     return id
 
     return id
 +
end
 +
 +
local function isempty(s)
 +
  return s == nil or s == ''
 
end
 
end
  
Line 24: Line 28:
 
local id = vNum .. '-' .. pNum .. '-' .. iNum
 
local id = vNum .. '-' .. pNum .. '-' .. iNum
 
return id
 
return id
 +
end
 +
 +
-- Create footnote with item summary and notes by editor and archivist
 +
-- View: TITLE by AUTHOR (signed as AUTHOR_SIGNED), SOURCE_TITLE, SOURCE_DETAILS.
 +
-- Translated from LANGUAGE by TRANSLATOR. NOTES. ARCHIVIST_NOTES.
 +
function sb.footnote( frame )
 +
local str = ''
 +
 +
if not isempty(frame.args['title']) then
 +
str = '<i>' .. frame.args['title'] .. '</i>'
 +
end
 +
 +
if not isempty(frame.args['author']) then
 +
str = str .. ' by ' .. frame.args['author']
 +
else
 +
if not isempty(frame.args['title']) then
 +
str = str .. ' by unknown author'
 +
else
 +
str = str .. frame.args['type'] .. ' by unknown author'
 +
end
 +
end
 +
 +
if not isempty(frame.args['author_signed']) then
 +
str = str .. ' (signed as ' .. frame.args['author_signed'] .. ')'
 +
end
 +
 +
if not isempty(frame.args['source_title']) then
 +
str = str .. ', <i>' .. frame.args['source_title'] .. '</i>'
 +
end
 +
 +
if not isempty(frame.args['source_details']) then
 +
str = str .. ', ' .. frame.args['source_details']
 +
end
 +
 +
if not isempty(frame.args['language']) then
 +
str = str .. '. Translated from ' .. frame.args['language']
 +
if not isempty(frame.args['translator']) then
 +
str = str .. ' by ' .. frame.args['translator']
 +
end
 +
end
 +
if not isempty(frame.args['notes']) then
 +
str = str .. '. ' .. frame.args['notes']
 +
end
 +
 +
if not isempty(frame.args['archivist_notes']) then
 +
str = str .. '<br>' .. frame.args['archivist_notes'] .. '. – Archivist'
 +
end
 +
 +
return str
 
end
 
end
  
Line 29: Line 82:
 
function sb.int2roman( arabic_number )
 
function sb.int2roman( arabic_number )
 
local roman_number = arabic_number --mathroman.int2roman(arabic_number)
 
local roman_number = arabic_number --mathroman.int2roman(arabic_number)
     return roman_number
+
     print (roman_number)
 
end
 
end
  
 
return sb
 
return sb

Latest revision as of 11:11, 14 April 2023


Lua functions for HPB Scrapbooks.

Functions

item_id

Called from {{HPB-SB-item}} for setting semantic property [[HPB SB item ID]].

{{#invoke: SB | item_id | volume=1 | page=17 | item=4 }}

footnote

Called from {{HPB-SB-item}}.

{{#invoke: SB | footnote 
 | title=
 | author=
 | author_signed=
 | type= 
 | source_title=
 | source_details=
 | notes=
 | archivist_notes=
 | language = 
 | translator = 
}}


Debug example

=p.item_id{args={["volume"]="1",["page"]="17.2",["item"]="3"}}

Module code


local sb = {} -- functions package for HPB Scrapbooks

function sb.item_id2( frame )
	local id = frame.args['volume'] .. '-' .. frame.args['page'] .. '-' .. frame.args['item']
    return id
end

local function isempty(s)
  return s == nil or s == ''
end

-- Create unique ID for the item, which consist of: Volume-Page-Item_on_page
-- ID example: 01-017-03
-- Call example: {{#invoke: SB | item_id | volume=1 | page=17 | item=3 }}
-- Values: volume=1..99, page=1..999, item=1..99
function sb.item_id( frame )
	local vNum = string.format("%.2d", frame.args['volume'])
	local iNum = string.format("%.2d", frame.args['item'])
	local p_int, p_frac = math.modf(frame.args['page'])
	local pNum = string.format("%.3d", p_int)  

	--mw.log('int= '.. p_int .. ', frac= ' .. p_frac)
	if p_frac > 0 then
		str = tostring(p_frac)
		pNum = pNum .. '.' .. string.sub(str,3,5)
	end

	local id = vNum .. '-' .. pNum .. '-' .. iNum
	return id
end

-- Create footnote with item summary and notes by editor and archivist
-- View: TITLE by AUTHOR (signed as AUTHOR_SIGNED), SOURCE_TITLE, SOURCE_DETAILS. 
-- Translated from LANGUAGE by TRANSLATOR. NOTES. ARCHIVIST_NOTES.
function sb.footnote( frame )
	local str = ''

	if not isempty(frame.args['title']) then
		str = '<i>' .. frame.args['title'] .. '</i>'
	end

	if not isempty(frame.args['author']) then
		str = str .. ' by ' .. frame.args['author']
	else 
		if not isempty(frame.args['title']) then
			str = str .. ' by unknown author'
		else
			str = str .. frame.args['type'] .. ' by unknown author'
		end
	end

	if not isempty(frame.args['author_signed']) then
		str = str .. ' (signed as ' .. frame.args['author_signed'] .. ')'
	end

	if not isempty(frame.args['source_title']) then
		str = str .. ', <i>' .. frame.args['source_title'] .. '</i>'
	end

	if not isempty(frame.args['source_details']) then
		str = str .. ', ' .. frame.args['source_details'] 
	end

	if not isempty(frame.args['language']) then
		str = str .. '. Translated from ' .. frame.args['language'] 
		if not isempty(frame.args['translator']) then
			str = str .. ' by ' .. frame.args['translator'] 
		end
	end
	if not isempty(frame.args['notes']) then
		str = str .. '. ' .. frame.args['notes'] 
	end

	if not isempty(frame.args['archivist_notes']) then
		str = str .. '<br>' .. frame.args['archivist_notes'] .. '. – Archivist'
	end

	return str
end

-- This function does not work yet
function sb.int2roman( arabic_number )
	local roman_number = arabic_number --mathroman.int2roman(arabic_number)
    print (roman_number)
end

return sb