وحدة:بطاقة/قالب/صيغة ملف

local p = {}

local general = require( 'وحدة:بطاقة/أدوات' )
local localdata = require( 'وحدة:بطاقة/بيانات' )

-- Variables et fonctions utilisées dans certaines lignes d'infobox
--local isContainer = wikidata.isInstance('Q167772', item, 0) 
--local isContainer = wikidata2.Subclass( { parent = 'Q167772', id = localdata.item.id, property = "P31" } ) 

local function specification(number)
	if (number == '1') then
		return '[[صيغة مغلقة]] [[تصنيف:صيغة ملف مغلقة]]'
	elseif (number == '2') then
		return '[[صيغة مفتوحة]] [[تصنيف:صيغة ملف مفتوحة]]'
	end
	return nil
end

local function affichageHexa(x)
  local t = ""
  for c in x:gmatch".." do
    t = t .. c .. " "
  end
  return "<code>" .. t:gsub("^%s*(.-)%s*$", "%1") .. "</code> ([[نظام عد ستة عشري|hexa]])"
end

local function affichageSignature(value, qual)
	if not qual then
		return "<code>" .. value .. "</code>"
	end
	local qualifierId = qual[1].datavalue.value.id
	--for k,v in pairs(qual) do
	--	qualifierId = v.datavalue.value.id
	--	break
	--end
    if (qualifierId == "Q82828") then
        return affichageHexa(value)
    elseif (qualifierId == "Q8815") then
        return "<code>" .. value .. "</code> ([[أسكي|ascii]])"
    elseif (qualifierId == "Q35432091") then
        return "<code>" .. value .. "</code> ([[Base PRONOM|PRONOM]] [[تعبير نمطي|regex]])"
    elseif (qualifierId == "Q125267") then
        return "<code>" .. value .. "</code> ([[PCRE|PCRE]])"
    elseif (qualifierId == "Q185612") then
        return "<code>" .. value .. "</code> ([[تعبير نمطي|regex]])"
    else
        return "<code>" .. value .. "</code>"
    end
end

return {
	maincolor = '#F0B020',
	parts = {
		general.title(),
		general.logo(),
		general.mainimage(),
		{type='table', rows = {
			{type = 'mixed', label = '[[امتداد الملف]]', value = {'امتداد','الإمتداد','extension'}
				, wikidata = {
						property = 'P1195',
						rank = 'valid',
						conjtype = 'comma',
						linkback = 'P1195',
			}},
			{type = 'mixed', label = '[[صيغة وسائط الإنترنت]]', value = {'نوع','النوع','mime'}
				, wikidata = {
					property = 'P1163',
					separator = ' ',
					rank = 'valid',
					ucfirst = '-',
			}},
			{type = 'mixed', label = '[[Type code]]', value = {'typecode'}},
			{type = 'mixed', label = '[[Uniform Type Identifier]]', value = {'uniform type'}},
			{type = 'mixed', label = 'UTI conforms to', value = {'conforms to'}},
			{type = 'mixed', label = 'نوع الصيغة', value = {'type','genre'}},
			{type = 'mixed', label = 'توقيع الملف/عدد سحري', value = {'توقيع','magic'}
				, wikidata = {
						property = 'P4152', excludespecial = true, conjtype = '<br />', 
			}},
			{type = 'mixed', label = 'المطور', value = {'مطور','المطور','developer','owner'},property = 'P178'},
			{type = 'mixed', label = 'أول إصدار', value = {'أول إصدار','released'},property = 'P577'},
			{type = 'mixed', label = '[[دروة حياة البرمجيات|الإصدار الأخير]]', value = {'آخر إصدار','latest release version'}},

			{type = 'mixed', label = 'حاوٍ لـ', value = {'تحتوي على','container for','containerfor'} 
				--, wikidata = {	property = 'P527',	condition = function() return isContainer end,	ucfirst = '-' }
			},
			{type = 'mixed', label = 'يحتوي', value = {'contained by','containedby'}},
			{type = 'mixed', label = 'امتدّ من', value = {'extended from','extendedfrom'}},
			{type = 'mixed', label = 'امتدّ لـ', value = {'امتداد لها','extended to','extendedto'}, property = 'P144'},
			{type = 'mixed', label = '[[معيار دولي|المعايير]]', value = {'standard'}, property = 'P503'},
			{type = 'mixed', label = '[[صيغة مفتوحة]]?', value = {'free'}},
			general.website('موقع_المطور'),
		}},
	}
}