Модуль:Wikidata
Documentation for this module may be created at Модуль:Wikidata/doc
local i18n = { ["errors"] = { ["property-param-not-provided"] = "Көрсөткүч параметри көрсөтүлгөн эмес", ["entity-not-found"] = "Маңызы табылган жок.", ["unknown-claim-type"] = "Белгисиз тип.", ["unknown-snak-type"] = "Белгисиз снэк тиби.", ["unknown-datavalue-type"] = "Маалыматтардын маңызы белгисиз.", ["unknown-entity-type"] = "Маңызы белгисиз.", ["unknown-value-module"] = "Сиз модульдун маңызын орнотушуңуз керек.", ["value-module-not-found"] = "Маанисин көрсөткөн модульдун жолу туура эмес.", ["value-function-not-found"] = "Маанисин көрсөткөн функциянын жолу туура эмес." }, ["somevalue"] = "", ["novalue"] = ""}function getEntityFromId( id ) if id then return mw.wikibase.getEntityObject( id ) end return mw.wikibase.getEntityObject()endfunction getEntityIdFromValue( value ) local prefix = '' if value['entity-type'] == 'item' then prefix = 'Q' elseif value['entity-type'] == 'property' then prefix = 'P' else return formatError( 'unknown-entity-type' ) end return prefix .. value['numeric-id']endfunction formatError( key ) return '<span class="error">' .. i18n.errors[key] .. '</span>'endfunction formatStatements( options ) if not options.property then return formatError( 'property-param-not-provided' ) end --Get entity local entity = getEntityFromId( options.entityId ) if not entity then return -- formatError( 'entity-not-found' ) end if (entity.claims == nil) or (not entity.claims[string.upper(options.property)]) then return '' --TODO error? end --Format statement and concat them cleanly local formattedStatements = {} for i, statement in pairs( entity.claims[string.upper(options.property)] ) do table.insert( formattedStatements, formatStatement( statement, options ) ) end return mw.text.listToText( formattedStatements, options.separator, options.conjunction )endfunction formatStatement( statement, options ) if not statement.type or statement.type ~= 'statement' then return formatError( 'unknown-claim-type' ) end return formatSnak( statement.mainsnak, options ) --TODO reference and qualifiersendfunction formatSnak( snak, options ) if snak.snaktype == 'somevalue' then return i18n['somevalue'] elseif snak.snaktype == 'novalue' then return i18n['novalue'] elseif snak.snaktype == 'value' then return formatDatavalue( snak.datavalue, options ) else return formatError( 'unknown-snak-type' ) endendfunction formatGlobeCoordinate( value, options ) if options['subvalue'] == 'latitude' then return value['latitude'] elseif options['subvalue'] == 'longitude' then return value['longitude'] else local globe = '' -- TODO local coord = '{{coord|' coord = coord .. value['latitude'] .. '|' .. value['longitude'] coord = coord .. '|globe:' .. globe if options['display'] then coord = coord .. '|display=' .. options.display else coord = coord .. '|display=title' end coord = coord .. '|format=dms' coord = coord .. '}}' return g_frame:preprocess(coord) endendfunction formatDatavalue( datavalue, options ) --Use the customize handler if provided if options['value-module'] or options['value-function'] then if not options['value-module'] or not options['value-function'] then return formatError( 'unknown-value-module' ) end local formatter = require ('Module:' .. options['value-module']) if formatter == nil then return formatError( 'value-module-not-found' ) end local fun = formatter[options['value-function']] if fun == nil then return formatError( 'value-function-not-found' ) end return fun( datavalue.value, options ) end --Default formatters if datavalue.type == 'wikibase-entityid' then return formatEntityId( getEntityIdFromValue( datavalue.value ), options ) elseif datavalue.type == 'string' then return datavalue.value --TODO ids + media elseif datavalue.type == 'globecoordinate' then return formatGlobeCoordinate( datavalue.value, options ) else return formatError( 'unknown-datavalue-type' ) endendfunction formatEntityId( entityId, options ) local label = mw.wikibase.label( entityId ) local link = mw.wikibase.sitelink( entityId ) if link then if label then return '[[' .. link .. '|' .. label .. ']]' else return '[[' .. link .. ']]' end else return label --TODO what if no links and label + fallback language? endendlocal p = {}function p.formatStatements( frame ) g_frame = frame local args = frame.args --If a value if already set, use it if args.value and args.value ~= '' then return args.value end return formatStatements( frame.args )endreturn p
🔥 Top keywords: Template:AdvancedSiteNotices/ajaxБашкы баракЖыл сүрүү жадыбалыКыргыз аттарыАтайын:SearchКош бойлуулукАйтматов Чыңгыз ТөрөкуловичКурман АйтКыргызстандын темир кендериКыргызстандын чек араларыМухаммед пайгамбарКыргыз урууларыЭкинчи дүйнөлүк согушКыргызстанЫсык-КөлКыргызстандын географиясыКабилдерТоктогул СатылгановСынган кылычАлыкул ОсмоновОозул (стоматит)Аалы ТокомбаевҮнсүз тыбыштарАйлардын кыргызча аталышыПсихологияКыргыз тилинин жазуу эрежелериКыргызстандын туусуФонетикаБөйрөк оорусуИч өткөкЭмчектеги балаТөрөтКыргыз автономиялуу облусуИчтин катуу кармоочу оорусуКыргыз тилиТоголок МолдоКокон хандыгыТоктоболот АбдумомуновБарсбек каган