Current File : /home/jvzmxxx/wiki1/extensions/Wikibase/repo/resources/parsers/getStore.js
/**
 * @license GPL-2.0+
 * @author H. Snater < mediawiki@snater.com >
 */
( function( $, wb, vp, dv ) {
'use strict';

wb.parsers = wb.parsers || {};

/**
 * @since 0.5
 *
 * @param {wikibase.api.RepoApi} api
 * @return {valueParsers.ValueParserStore}
 */
wb.parsers.getStore = function( api ) {
	var apiCaller = new wb.api.ParseValueCaller( api ),
		ApiBasedValueParser = wb.parsers.getApiBasedValueParserConstructor( apiCaller ),
		parserStore = new vp.ValueParserStore( vp.NullParser );

	parserStore.registerDataValueParser(
		vp.StringParser,
		dv.StringValue.TYPE
	);

	// API-based parsers
	// FIXME: Get this configuration from the backend.
	var parserIdToDataValueType = {
		globecoordinate: dv.GlobeCoordinateValue.TYPE,
		monolingualtext: dv.MonolingualTextValue.TYPE,
		quantity: dv.QuantityValue.TYPE,
		time: dv.TimeValue.TYPE,
		'wikibase-entityid': wb.datamodel.EntityId.TYPE
	};

	$.each( parserIdToDataValueType, function( parserId, dvType ) {
		var Parser = util.inherit(
			ApiBasedValueParser,
			{ API_VALUE_PARSER_ID: parserId }
		);

		parserStore.registerDataValueParser( Parser, dvType );
	} );

	parserStore.registerDataTypeParser(
		util.inherit(
			ApiBasedValueParser,
			{ API_VALUE_PARSER_ID: 'commonsMedia' }
		),
		'commonsMedia'
	);

	parserStore.registerDataTypeParser(
		util.inherit(
			ApiBasedValueParser,
			{ API_VALUE_PARSER_ID: 'url' }
		),
		'url'
	);

	parserStore.registerDataTypeParser(
		util.inherit(
			ApiBasedValueParser,
			{ API_VALUE_PARSER_ID: 'external-id' }
		),
		'external-id'
	);

	return parserStore;
};

}( jQuery, wikibase, valueParsers, dataValues ) );