<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.teopedia.org/w-lib/index.php?action=history&amp;feed=atom&amp;title=Module%3ASB%2Fsandbox</id>
	<title>Module:SB/sandbox - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://en.teopedia.org/w-lib/index.php?action=history&amp;feed=atom&amp;title=Module%3ASB%2Fsandbox"/>
	<link rel="alternate" type="text/html" href="https://en.teopedia.org/w-lib/index.php?title=Module:SB/sandbox&amp;action=history"/>
	<updated>2026-11-03T05:41:09Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.2</generator>
	<entry>
		<id>https://en.teopedia.org/w-lib/index.php?title=Module:SB/sandbox&amp;diff=36199&amp;oldid=prev</id>
		<title>Sergey: песочница: не добавлять «by unknown author» к изображениям без установленного автора</title>
		<link rel="alternate" type="text/html" href="https://en.teopedia.org/w-lib/index.php?title=Module:SB/sandbox&amp;diff=36199&amp;oldid=prev"/>
		<updated>2026-09-13T15:00:57Z</updated>

		<summary type="html">&lt;p&gt;песочница: не добавлять «by unknown author» к изображениям без установленного автора&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local sb = {} -- functions package for HPB Scrapbooks&lt;br /&gt;
&lt;br /&gt;
function sb.item_id2( frame )&lt;br /&gt;
	local id = frame.args[&amp;#039;volume&amp;#039;] .. &amp;#039;-&amp;#039; .. frame.args[&amp;#039;page&amp;#039;] .. &amp;#039;-&amp;#039; .. frame.args[&amp;#039;item&amp;#039;]&lt;br /&gt;
    return id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isempty(s)&lt;br /&gt;
  return s == nil or s == &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Create unique ID for the item, which consist of: Volume-Page-Item_on_page&lt;br /&gt;
-- ID example: 01-017-03&lt;br /&gt;
-- Call example: {{#invoke: SB | item_id | volume=1 | page=17 | item=3 }}&lt;br /&gt;
-- Values: volume=1..99, page=1..999, item=1..99&lt;br /&gt;
function sb.item_id( frame )&lt;br /&gt;
	local vNum = string.format(&amp;quot;%.2d&amp;quot;, frame.args[&amp;#039;volume&amp;#039;])&lt;br /&gt;
	local iNum = string.format(&amp;quot;%.2d&amp;quot;, frame.args[&amp;#039;item&amp;#039;])&lt;br /&gt;
	local p_int, p_frac = math.modf(frame.args[&amp;#039;page&amp;#039;])&lt;br /&gt;
	local pNum = string.format(&amp;quot;%.3d&amp;quot;, p_int)  &lt;br /&gt;
&lt;br /&gt;
	--mw.log(&amp;#039;int= &amp;#039;.. p_int .. &amp;#039;, frac= &amp;#039; .. p_frac)&lt;br /&gt;
	if p_frac &amp;gt; 0 then&lt;br /&gt;
		str = tostring(p_frac)&lt;br /&gt;
		pNum = pNum .. &amp;#039;.&amp;#039; .. string.sub(str,3,5)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local id = vNum .. &amp;#039;-&amp;#039; .. pNum .. &amp;#039;-&amp;#039; .. iNum&lt;br /&gt;
	return id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Create footnote with item summary and notes by editor and archivist&lt;br /&gt;
-- View: TITLE by AUTHOR (signed as AUTHOR_SIGNED), SOURCE_TITLE, SOURCE_DETAILS. &lt;br /&gt;
-- Translated from LANGUAGE by TRANSLATOR. NOTES. ARCHIVIST_NOTES.&lt;br /&gt;
function sb.footnote( frame )&lt;br /&gt;
	local str = &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	if not isempty(frame.args[&amp;#039;title&amp;#039;]) then&lt;br /&gt;
		str = &amp;#039;&amp;lt;i&amp;gt;&amp;#039; .. frame.args[&amp;#039;title&amp;#039;] .. &amp;#039;&amp;lt;/i&amp;gt;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not isempty(frame.args[&amp;#039;author&amp;#039;]) then&lt;br /&gt;
		str = str .. &amp;#039; by &amp;#039; .. frame.args[&amp;#039;author&amp;#039;]&lt;br /&gt;
	elseif frame.args[&amp;#039;type&amp;#039;] ~= &amp;#039;image&amp;#039; then&lt;br /&gt;
		if not isempty(frame.args[&amp;#039;title&amp;#039;]) then&lt;br /&gt;
			str = str .. &amp;#039; by unknown author&amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
			str = str .. frame.args[&amp;#039;type&amp;#039;] .. &amp;#039; by unknown author&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not isempty(frame.args[&amp;#039;author_signed&amp;#039;]) then&lt;br /&gt;
		str = str .. &amp;#039; (signed as &amp;#039; .. frame.args[&amp;#039;author_signed&amp;#039;] .. &amp;#039;)&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not isempty(frame.args[&amp;#039;source_title&amp;#039;]) then&lt;br /&gt;
		str = str .. &amp;#039;, &amp;lt;i&amp;gt;&amp;#039; .. frame.args[&amp;#039;source_title&amp;#039;] .. &amp;#039;&amp;lt;/i&amp;gt;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not isempty(frame.args[&amp;#039;source_details&amp;#039;]) then&lt;br /&gt;
		str = str .. &amp;#039;, &amp;#039; .. frame.args[&amp;#039;source_details&amp;#039;] &lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not isempty(frame.args[&amp;#039;language&amp;#039;]) then&lt;br /&gt;
		str = str .. &amp;#039;. Translated from &amp;#039; .. frame.args[&amp;#039;language&amp;#039;] &lt;br /&gt;
		if not isempty(frame.args[&amp;#039;translator&amp;#039;]) then&lt;br /&gt;
			str = str .. &amp;#039; by &amp;#039; .. frame.args[&amp;#039;translator&amp;#039;] &lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if not isempty(frame.args[&amp;#039;notes&amp;#039;]) then&lt;br /&gt;
		str = str .. &amp;#039;. &amp;#039; .. frame.args[&amp;#039;notes&amp;#039;] &lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not isempty(frame.args[&amp;#039;archivist_notes&amp;#039;]) then&lt;br /&gt;
		str = str .. &amp;#039;&amp;lt;br&amp;gt;&amp;#039; .. frame.args[&amp;#039;archivist_notes&amp;#039;] .. &amp;#039;. – Archivist&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- This function does not work yet&lt;br /&gt;
function sb.int2roman( arabic_number )&lt;br /&gt;
	local roman_number = arabic_number --mathroman.int2roman(arabic_number)&lt;br /&gt;
    print (roman_number)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return sb&lt;/div&gt;</summary>
		<author><name>Sergey</name></author>
	</entry>
</feed>