Kontentke ótiw

Modul:Avtomatikalıq taksonqutı

Wikipedia — erkin enciklopediya

Bul moduldiń hújjetin Modul:Avtomatikalıq taksonqutı/doc betinde jarata alasız

require('strict')
local TaxonItalics = require('Modul:TaxonItalics')
local Autotaxobox = require('Modul:Autotaxobox')
local ItalicTitle = require('Modul:Italic title')
local p = {} -- jámiyetlik funkciyalar
local l = {} -- ishki funkciyalar
l.system = '' -- ápiwayı ilimiy klassifikaciya ushın

-- =============================================================================
-- ichnobox (ızlar klassifikaciyası ushın)
-- =============================================================================
function p.ichnobox(frame)
	l.system = 'ichnos'
	return p.automaticTaxobox(frame)
end

-- =============================================================================
-- oobox (mákkan (mákiyek) qaldıqları ushın)
-- =============================================================================
function p.oobox(frame)
	l.system = 'veterovata'
	return p.automaticTaxobox(frame)
end

-- =============================================================================
-- automaticTaxobox — Úlgi:Avtomatikalıq taksonqutı'nıń tiykarǵı funkciyası
-- =============================================================================
function p.automaticTaxobox(frame)
	local args
	if frame.args['direct'] == 'yes' then args = frame.args
	else args = frame:getParent().args end
	local res = ''

	local pagename = args['pagename'] or '' 
	local italicTitle = args['italic_title'] or args['italic title'] or ''
	local ichnos = l.system == 'ichnos' and 'true' or ''
	local veterovata = l.system == 'veterovata' and 'true' or ''
	
	local fossilRange = args['fossil_range'] or args['fossil range'] or args['temporal_range'] or args['temporal range'] or ''
    local oldestFossil = args['oldest_fossil'] or args['oldest fossil'] or ''
    local youngestFossil =  args['youngest_fossil'] or args['youngest fossil'] or ''
	local name = args['name'] or ''
	local colourAs = args['color_as'] or args['color as'] or args['colour_as']  or args['colour as'] or ''
	local taxon = args['taxon'] or ''
	local authority = args['authority'] or ''
    local parentAuthority = args['parent_authority'] or args['parent authority'] or ''
	local manualFlag = 'text' 
	local binomial = args['binomial'] or args['binomial_'..manualFlag] or args['binomial '..manualFlag] or ''
	local binomialAuthority = args['binomial_authority'] or args['binomial authority'] or ''
	local genusManual = args['genus_'..manualFlag] or args['genus '..manualFlag] or''
	local speciesManual = args['species_'..manualFlag] or args['species '..manualFlag] or''

    fossilRange = l.setfossilRange(frame, fossilRange, oldestFossil, youngestFossil)
	
	local currentPagename = mw.title.getCurrentTitle()
	if pagename == '' then pagename = currentPagename.text end
	local basePagename = pagename
	if italicTitle ~= 'taxon' then basePagename = mw.ustring.gsub(basePagename, '%s+%b()$', '', 1) end
	
	local taxonParaMissingError = false
	if taxon == '' then
		taxonParaMissingError = true
		taxon = basePagename
	end

	local ok, taxonRank = Autotaxobox.getTaxonInfoItem(frame, taxon, 'rank')
	if italicTitle == '' then
		if not (ok and taxonRank ~= '' and
			    frame:expandTemplate{ title = 'Takson qıya ma', args = {taxonRank} } == 'yes') then
			italicTitle = 'no'
		end
	end

	local baseTaxon = taxon
	if italicTitle ~= 'taxon' then baseTaxon = mw.ustring.gsub(baseTaxon, '%s+%b()$', '', 1) end
	baseTaxon = mw.ustring.gsub(baseTaxon, '/.*$', '', 1)
	if italicTitle == '' and basePagename == baseTaxon then
		italicTitle = 'yes'
	end

	-- Bettiń atamasın qıya (italic) qılıw
	if currentPagename.namespace == 0 and (italicTitle == 'yes' or italicTitle == 'taxon') then
		if italicTitle == 'taxon' or TaxonItalics.hasConnectingTerm(baseTaxon) then
			res =  res .. frame:expandTemplate{ title = 'Taksonnıń qıya ataması', args = {} }
			italicTitle = 'yes'
		else ItalicTitle._main({})
		end
	end

	if name == '' then
		name = basePagename
		if italicTitle == 'yes' then
			name = TaxonItalics.italicizeTaxonName(name, false, false)
		end
	end

	-- Reńdi anıqlaw
	local colour = ''
	if colourAs ~= '' then
		colour = frame:expandTemplate{ title = 'Taksonqutı reńi', args = {colourAs} }
	elseif l.system == 'ichnos' then
		colour = frame:expandTemplate{ title = 'Taksonqutı reńi', args = {'Ichnos'} }
	elseif l.system == 'veterovata' then
		colour = frame:expandTemplate{ title = 'Taksonqutı reńi', args = {'Veterovata'} }
	else
		colour = Autotaxobox.getTaxoboxColour(frame, taxon)
	end

	if binomial == '' then
		if ok and taxonRank == 'species' then
			binomial = TaxonItalics.italicizeTaxonName(taxon, false, false)
			binomialAuthority = authority
		end
	end

	local boldFirst = ''
	local offset = 0
	if speciesManual ~= '' then
		offset = offset + 1
		binomialAuthority = authority
		if binomial == '' then binomial = '<span class="error">Qáte: binomial parametri kórsetilmegen</span>' end
	end
	if genusManual ~= '' then
		boldFirst = 'link'
		offset = offset + 1
		genusAuthority = (offset == 1) and authority or parentAuthority
	end

	local typeGenus = l.italicizeTypeName(args['type_genus'] or args['type genus'] or '')
	local typeGenusRef = args['type_genus_ref'] or args['type genus ref'] or ''
	local typeGenusAuthority = args['type_genus_authority'] or args['type genus authority'] or ''
	local typeSpecies = l.italicizeTypeName(args['type_species'] or args['type species'] or '')
	local typeSpeciesRef = args['type_species_ref'] or args['type species ref'] or ''
	local typeSpeciesAuthority = args['type_species_authority'] or args['type species authority'] or ''

	local subdivision = args['subdivision'] or ''
	local subdivisionRef = args['subdivision_ref'] or args['subdivision ref'] or ''
	local subdivisionRanks = args['subdivision_ranks'] or args['subdivision ranks'] or ''
	if subdivision ~= '' and subdivisionRanks == '' and ok and taxonRank ~= '' then
		subdivisionRanks = frame:expandTemplate{ title = 'Urpaqlar rangı', args = {taxonRank} }
	end

	-- Taksonqutı/core (Ózegi) shaqırıw
	res = res .. frame:expandTemplate{ title = 'Taksonqutı/ózegi', args =
		{ ichnos = ichnos,
		  veterovata = veterovata,
		  ['edit link'] = 'e',
		  temporal_range = fossilRange,
		  display_taxa = args['display_parents'] or args['display parents'] or '1',
		  parent = taxon,
		  authority = authority,
          parent_authority = parentAuthority,
		  name = name,
		  colour = colour,
		  status = args['status'] or '',
		  status_system = args['status_system'] or '',
		  status_ref = args['status_ref'] or '',
		  extinct = args['extinct'] or '',
		  image = args['image'] or '',
		  upright = args['image_upright'] or '',
		  image_caption = args['image_caption'] or '',
		  binomial = binomial,
		  binomial_authority = binomialAuthority,
		  subdivision = subdivision,
		  subdivision_ref = subdivisionRef,
		  subdivision_ranks = subdivisionRanks,
		  synonyms = args['synonyms'] or ''
		} }

	-- Qáteliklerdi baqlaw kategoriyaları
	local errCat1 = (genusManual ~= '' or speciesManual ~= '' or binomial ~= '') and '[[Kategoriya:Mexanikalıq parametrler qollanılǵan avtomatikalıq taksonqutılar]]' or ''
	local errCat2 = taxonParaMissingError and '[[Kategoriya:Bet atamasına súyenetuǵın avtomatikalıq taksonqutılar]]' or ''
	res = res .. frame:expandTemplate{ title = 'Main other', args = {errCat1..errCat2} }
	
	return res
end

function l.setfossilRange(frame, fossilRange, oldestFossil, youngestFossil)
	local res = ''
	if fossilRange ~= '' then
		if mw.ustring.find(frame:expandTemplate{ title = 'Dáwir bası', args = { fossilRange } }, '[Ee]rror') then
			res = fossilRange
		else 
			res = frame:expandTemplate{ title = 'Geologiyalıq diapazon', args = { fossilRange } }
		end
	elseif oldestFossil ~= '' then
		if youngestFossil == '' then youngestFossil = 'Recent' end
		if mw.ustring.find(frame:expandTemplate{ title = 'Dáwir bası', args = { oldestFossil } }, '[Ee]rror') or
		   mw.ustring.find(frame:expandTemplate{ title = 'Dáwir bası', args = { youngestFossil } }, '[Ee]rror') then
			res = oldestFossil..'–'..youngestFossil
		else
			res = frame:expandTemplate{ title = 'Geologiyalıq diapazon', args = { oldestFossil, youngestFossil } }
		end
	end
	return res
end

function l.italicizeTypeName(typeName)
	if typeName and not (string.find(typeName, "<", 1, true) or string.find(typeName, ">", 1, true)) then
		typeName = TaxonItalics.italicizeTaxonName(typeName, false, false)
	end
	return typeName
end

return p