মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ
অবয়ব
এই মডিউলের জন্য মডিউল:উইকিউপাত্ত তথ্যসূত্র বিন্যাসকরণ/নথি-এ নথিপত্র তৈরি করা হয়ে থাকতে পারে
local p = {}
local converter = require('মডিউল:ConvertDigit')
base_lang_code_labels = 'bn'
target_wikisource = 'bnwikisource'
label_of_Q31464082 = 'উৎস'
archive_dated = '$1-এর আর্কাইভ'
archive_undated = 'আর্কাইভ'
indicator_format_strings = {
['P50'] = '$1', -- লেখক
['P98'] = '$1 সম্পাদিত',
['P655'] = '$1 অনূদিত',
}
specifier_format_strings = {
['P7421'] = "$1 নং পংক্তি",
['P958'] = "$1 নামক অনুচ্ছেদ",
['P792'] = "$1 নং পরিচ্ছেদ",
['P304'] = "$1 নং পাতায়",
}
published_in_format_string = "$1 নামক রচনায় প্রকাশিত"
function p.format ( reference )
local stated_ins = reference.snaks['P248'] -- এই উৎসে বিবৃত
local urls = reference.snaks['P854'] -- তথ্যসূত্রের ইউআরএল
if urls == nil then
urls = reference.snaks['P4656'] -- উইকিমিডিয়া আমদানির ইউআরএল
end
local commons_scanned_files = reference.snaks['P996'] -- উইকিমিডিয়া কমন্সে স্ক্যানকৃত ফাইল
local internet_archive_ids = reference.snaks['P724'] -- ইন্টারনেট আর্কাইভ আইডি
local example_from_text = ''
local inside_text_parts = {}
local example_from_id = nil
local example_from_text = ''
if stated_ins ~= nil then
example_from_id = stated_ins[1].datavalue.value.id
example_from_text = mw.wikibase.getLabel( example_from_id )
elseif commons_scanned_files ~= nil then
table.insert(inside_text_parts, '[[:File:' .. commons_scanned_files[1].datavalue.value .. '|' .. commons_scanned_files[1].datavalue.value .. ']]')
elseif urls ~= nil or internet_archive_ids ~= nil then
local link_title = label_of_Q31464082
local titles = reference.snaks['P1476'] -- [পাতার] শিরোনাম
if titles ~= nil then
link_title = '"' .. titles[1].datavalue.value.text .. '"'
end
local main_url = ''
if urls ~= nil then
main_url = urls[1].datavalue.value
else
main_url = 'https://archive.org/details/' .. internet_archive_ids[1].datavalue.value
end
table.insert(inside_text_parts, '[' .. main_url .. ' ' .. link_title .. ']')
local broader_title = ''
local broader_titles = reference.snaks['P6333'] -- বৃহদতর পরিধিতে কাজের শিরোনাম
if broader_titles ~= nil then
broader_title = " ''" .. broader_titles[1].datavalue.value.text .. "''"
table.insert(inside_text_parts, broader_title)
end
local archive_url = nil
local archive_urls = reference.snaks['P1065'] -- আর্কাইভের ইউআরএল
if archive_urls ~= nil then
archive_url = archive_urls[1].datavalue.value
end
local publication_date = ''
local publication_dates = reference.snaks['P577'] -- প্রকাশনার তারিখ
if publication_dates ~= nil then
publication_date = converter._main(mw.wikibase.formatValue(publication_dates[1]))
table.insert(inside_text_parts, publication_date)
end
local retrieval_date = nil
local retrieval_dates = reference.snaks['P813'] -- সংগ্রহের তারিখ
if retrieval_dates ~= nil then
local retrieval_date = converter._main(mw.wikibase.formatValue(retrieval_dates[1]))
end
local archival_date = nil
local archival_dates = reference.snaks['P2960'] -- সংগ্রহের তারিখ
if archival_dates ~= nil then
archival_date = converter._main(mw.wikibase.formatValue(archival_dates[1]))
end
local archive_url_string = ''
if archive_url ~= nil then
if archival_date ~= nil then
archive_url_string = ' ([' .. archive_url .. ' ' .. mw.ustring.gsub(archive_dated, '$1', archival_date) .. '])'
else
archive_url_string = ' ([' .. archive_url .. ' ' .. archive_undated .. '])'
end
table.insert(inside_text_parts, archive_url_string)
end
end
local example_from_publishedin_out = ''
local example_from_link = nil
if example_from_id ~= nil then
for property, format_string in pairs(indicator_format_strings) do
for i, statement in pairs(mw.wikibase.getEntity(example_from_id):getBestStatements(property)) do
local example_from_author = statement.mainsnak.datavalue.value.id
local example_from_author_text = mw.wikibase.getLabel( example_from_author )
local example_from_author_link = mw.wikibase.getSitelink( example_from_author, target_wikisource )
if example_from_author_link ~= nil then
from_author_line = "—[[:s:" .. example_from_author_link .. '|' .. example_from_author_text .. "]]"
else
from_author_line = "—" .. example_from_author_text
end
from_author_line = mw.ustring.gsub(format_string, '$1', from_author_line)
table.insert(inside_text_parts, from_author_line)
end
end
example_from_link = mw.wikibase.getSitelink( example_from_id, target_wikisource )
end
if example_from_link ~= nil then
table.insert(inside_text_parts, '[[File:Wikisource-logo.svg|16px|link=s:]] [[:s:' .. example_from_link .. '|' .. example_from_text .. ']]')
elseif example_from_text ~= '' then
table.insert(inside_text_parts, example_from_text)
end
if example_from_id ~= nil and #(mw.wikibase.getEntity(example_from_id):getBestStatements('P1433')) ~= 0 then -- এতে প্রকাশিত
local example_from_publishedin = mw.wikibase.getEntity(example_from_id):getBestStatements('P1433')[1].mainsnak.datavalue.value.id
local example_from_publishedin_text = mw.wikibase.getLabelByLang( example_from_publishedin, base_lang_code_labels )
if example_from_publishedin_text == nil then
for i, fallback_lang in ipairs(mw.language.getFallbacksFor( base_lang_code_labels )) do
if mw.wikibase.getLabelByLang( example_from_publishedin, fallback_lang ) ~= nil then
example_from_publishedin_text = mw.wikibase.getLabelByLang( example_from_publishedin, fallback_lang )
end
end
end
local example_from_publishedin_link = mw.wikibase.getSitelink( example_from_publishedin, target_wikisource ) or ''
if example_from_publishedin_link == '' then
example_from_publishedin_out = " (" .. mw.ustring.gsub(published_in_format_string, "$1", "''" .. example_from_publishedin_text .. "''") .. ")"
else
example_from_publishedin_out = " (" .. mw.ustring.gsub(published_in_format_string, "$1", "[[:s:" .. example_from_publishedin_link .. '|' .. example_from_publishedin_text .. ']]') .. ')'
end
elseif reference.snaks['P1433'] ~= nil then
local example_from_publishedin = reference.snaks['P1433'][1].datavalue.value.id
local example_from_publishedin_text = mw.wikibase.getLabelByLang( example_from_publishedin, base_lang_code_labels )
if example_from_publishedin_text == nil then
for i, fallback_lang in ipairs(mw.language.getFallbacksFor( base_lang_code_labels )) do
if mw.wikibase.getLabelByLang( example_from_publishedin, fallback_lang ) ~= nil then
example_from_publishedin_text = mw.wikibase.getLabelByLang( example_from_publishedin, fallback_lang )
end
end
end
local example_from_publishedin_link = mw.wikibase.getSitelink( example_from_publishedin, target_wikisource ) or ''
if example_from_publishedin_link == '' then
example_from_publishedin_out = " (" .. mw.ustring.gsub(published_in_format_string, "$1", "''" .. example_from_publishedin_text .. "''") .. ")"
else
example_from_publishedin_out = " (" .. mw.ustring.gsub(published_in_format_string, "$1", "[[:s:" .. example_from_publishedin_link .. '|' .. example_from_publishedin_text .. ']]') .. ')'
end
end
if example_from_publishedin_out ~= '' then
table.insert(inside_text_parts, example_from_publishedin_out)
end
local example_from_lines = ''
for property, format_string in pairs(specifier_format_strings) do
if reference.snaks[property] ~= nil then
example_from_lines = reference.snaks[property][1].datavalue.value -- পংক্তি(গুলো)
example_from_lines = mw.ustring.gsub(format_string, '$1', converter._main(example_from_lines))
table.insert(inside_text_parts, example_from_lines)
end
end
return table.concat(inside_text_parts, ', ')
end
return p