<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="nl">
	<id>https://informatiestandaarden.test-nictiz.nl/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-Numerakri.js</id>
	<title>MediaWiki:Gadget-Numerakri.js - Bewerkingsoverzicht</title>
	<link rel="self" type="application/atom+xml" href="https://informatiestandaarden.test-nictiz.nl/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-Numerakri.js"/>
	<link rel="alternate" type="text/html" href="https://informatiestandaarden.test-nictiz.nl/index.php?title=MediaWiki:Gadget-Numerakri.js&amp;action=history"/>
	<updated>2026-04-23T18:47:19Z</updated>
	<subtitle>Bewerkingsoverzicht voor deze pagina op de wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://informatiestandaarden.test-nictiz.nl/index.php?title=MediaWiki:Gadget-Numerakri.js&amp;diff=3258&amp;oldid=prev</id>
		<title>Ahenket: Nieuwe pagina aangemaakt met &#039;/**  * Convert Arabic numerals to Devanagari and vice-versa.  *  * @revision 2.3-2012-12-30  * @dependencies jquery.cookie, mediawiki.util, mediawiki.user, jquery.m...&#039;</title>
		<link rel="alternate" type="text/html" href="https://informatiestandaarden.test-nictiz.nl/index.php?title=MediaWiki:Gadget-Numerakri.js&amp;diff=3258&amp;oldid=prev"/>
		<updated>2013-07-19T18:26:24Z</updated>

		<summary type="html">&lt;p&gt;Nieuwe pagina aangemaakt met &amp;#039;/**  * Convert Arabic numerals to Devanagari and vice-versa.  *  * @revision 2.3-2012-12-30  * @dependencies jquery.cookie, mediawiki.util, mediawiki.user, jquery.m...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nieuwe pagina&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/**&lt;br /&gt;
 * Convert Arabic numerals to Devanagari and vice-versa.&lt;br /&gt;
 *&lt;br /&gt;
 * @revision 2.3-2012-12-30&lt;br /&gt;
 * @dependencies jquery.cookie, mediawiki.util, mediawiki.user, jquery.mwExtension&lt;br /&gt;
 * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-Numerakri.js&lt;br /&gt;
 * @author Daniel Friesen, 2012&lt;br /&gt;
 * @author Timo Tijhof, 2012&lt;br /&gt;
 * @author Siddhartha Ghai, 2012&lt;br /&gt;
 * @license CC-BY-SA 3.0&lt;br /&gt;
 * @license MIT&lt;br /&gt;
 */&lt;br /&gt;
/*jshint browser:true, boss:true, unused:true, white:true */&lt;br /&gt;
/*global jQuery, mediaWiki */&lt;br /&gt;
(function (mw, $) {&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
	// Private cache &amp;amp; utilities&lt;br /&gt;
	var el, w, num,&lt;br /&gt;
		/**&lt;br /&gt;
		 * @var {RegExp} Matcher for characters that can be mapped.&lt;br /&gt;
		 * @example matchers.devanagari[0] matches devanagari numeral for 0&lt;br /&gt;
		 *  can be mapped with e.g. maps.arabic[0].&lt;br /&gt;
		 */&lt;br /&gt;
		matchers = {},&lt;br /&gt;
		msgs = {&lt;br /&gt;
			&amp;#039;option-default&amp;#039;: {&lt;br /&gt;
				en: &amp;#039;Default&amp;#039;,&lt;br /&gt;
				hi: &amp;#039;डिफ़ॉल्ट&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			&amp;#039;option-arabic&amp;#039;: {&lt;br /&gt;
				en: &amp;#039;123&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			&amp;#039;option-devanagari&amp;#039;: {&lt;br /&gt;
				en: &amp;#039;Devanagari&amp;#039;,&lt;br /&gt;
				hi: &amp;#039;१२३&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			&amp;#039;label-url&amp;#039;: {&lt;br /&gt;
				en: &amp;#039;//www.mediawiki.org/wiki/MediaWiki_talk:Gadget-Numerakri.js&amp;#039;,&lt;br /&gt;
				hi: &amp;#039;//hi.wikipedia.org/wiki/विकिपीडिया:अंक_परिवर्तक&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			&amp;#039;label-text&amp;#039;: {&lt;br /&gt;
				en: &amp;#039;Convert numerals&amp;#039;,&lt;br /&gt;
				hi: &amp;#039;अंक परिवर्तन&amp;#039;&lt;br /&gt;
			},&lt;br /&gt;
			&amp;#039;label-tooltip&amp;#039;: {&lt;br /&gt;
				en: &amp;#039;Convert between Arabic and Devanagari numerals&amp;#039;,&lt;br /&gt;
				hi: &amp;#039;नागरी और अरबी अंकों में परिवर्तन करें&amp;#039;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		maps = {&lt;br /&gt;
			// 0 to 9&lt;br /&gt;
			devanagari: [ &amp;#039;०&amp;#039;, &amp;#039;१&amp;#039;, &amp;#039;२&amp;#039;, &amp;#039;३&amp;#039;, &amp;#039;४&amp;#039;, &amp;#039;५&amp;#039;, &amp;#039;६&amp;#039;, &amp;#039;७&amp;#039;, &amp;#039;८&amp;#039;, &amp;#039;९&amp;#039; ],&lt;br /&gt;
			arabic:     [ &amp;#039;0&amp;#039;, &amp;#039;1&amp;#039;, &amp;#039;2&amp;#039;, &amp;#039;3&amp;#039;, &amp;#039;4&amp;#039;, &amp;#039;5&amp;#039;, &amp;#039;6&amp;#039;, &amp;#039;7&amp;#039;, &amp;#039;8&amp;#039;, &amp;#039;9&amp;#039; ]&lt;br /&gt;
		},&lt;br /&gt;
		compatCookie = {&lt;br /&gt;
			&amp;#039;-1&amp;#039;: &amp;#039;default&amp;#039;,&lt;br /&gt;
			&amp;#039;0&amp;#039; : &amp;#039;arabic&amp;#039;,&lt;br /&gt;
			&amp;#039;1&amp;#039;: &amp;#039;devanagari&amp;#039;&lt;br /&gt;
		},&lt;br /&gt;
		// For consistency recreate these objects locally in older browsers so that&lt;br /&gt;
		// we can use the same constants in fallback code as well.&lt;br /&gt;
		NodeFilter = window.NodeFilter || {&lt;br /&gt;
			FILTER_ACCEPT: 1,&lt;br /&gt;
			FILTER_REJECT: 2,&lt;br /&gt;
			FILTER_SKIP: 3&lt;br /&gt;
		},&lt;br /&gt;
		Node = window.Node || {&lt;br /&gt;
			TEXT_NODE: 3&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
	// Fallback for document.createTreeWalker for older browsers (IE6-8)&lt;br /&gt;
	function walkTheDomFallback(node, filter, apply) {&lt;br /&gt;
		var val = filter(node);&lt;br /&gt;
		switch (val) {&lt;br /&gt;
		case NodeFilter.FILTER_ACCEPT:&lt;br /&gt;
			apply(node);&lt;br /&gt;
			node = node.firstChild;&lt;br /&gt;
			break;&lt;br /&gt;
		case NodeFilter.FILTER_REJECT:&lt;br /&gt;
			node = node.nextSibling;&lt;br /&gt;
			break;&lt;br /&gt;
		case NodeFilter.FILTER_SKIP:&lt;br /&gt;
			node = node.firstChild;&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
		while (node) {&lt;br /&gt;
			walkTheDomFallback(node, apply);&lt;br /&gt;
			node = node.nextSibling;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function walkTheDom(filter, apply) {&lt;br /&gt;
		if (document.createTreeWalker) {&lt;br /&gt;
			w = document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, filter, false);&lt;br /&gt;
			while (el = w.nextNode()) {&lt;br /&gt;
				apply(el);&lt;br /&gt;
			}&lt;br /&gt;
		} else {&lt;br /&gt;
			walkTheDomFallback(document.body, filter, apply);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function msg(key) {&lt;br /&gt;
		return msgs[key][mw.config.get(&amp;#039;wgUserLanguage&amp;#039;)] || msgs[key].en;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function getMatchers(target) {&lt;br /&gt;
		var rChars;&lt;br /&gt;
		if (!matchers[target]) {&lt;br /&gt;
			rChars = { 0: [], 1: [], 2: [], 3: [], 4: [], 5: [], 6: [], 7: [], 8: [], 9: [] };&lt;br /&gt;
			$.each(maps, function (type, map) {&lt;br /&gt;
				if (type !== target) {&lt;br /&gt;
					for (var i = 0; i &amp;lt;= 9; i++) {&lt;br /&gt;
						rChars[i].push(map[i]);&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			});&lt;br /&gt;
			rChars = $.map(rChars, function (chars) {&lt;br /&gt;
				return new RegExp(&amp;#039;(&amp;#039; + $.map(chars, $.escapeRE).join(&amp;#039;|&amp;#039;) + &amp;#039;)&amp;#039;, &amp;#039;g&amp;#039;);&lt;br /&gt;
			});&lt;br /&gt;
			matchers[target] = rChars;&lt;br /&gt;
		}&lt;br /&gt;
		return matchers[target];&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * @singleton&lt;br /&gt;
	 */&lt;br /&gt;
	num = window.Numerakri = {&lt;br /&gt;
		matchers: matchers,&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * @property {string} One of &amp;#039;default&amp;#039;, &amp;#039;arabic&amp;#039; or &amp;#039;devanagari&amp;#039;.&lt;br /&gt;
		 *  default leaves the page unchanged (default).&lt;br /&gt;
		 */&lt;br /&gt;
		type: &amp;#039;default&amp;#039;,&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * @property {jQuery|null} The HTML interface. May or may not be&lt;br /&gt;
		 * attached to the document yet.&lt;br /&gt;
		 */&lt;br /&gt;
		$int: null,&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * @param {HTMLElement|TextNode} el&lt;br /&gt;
		 */&lt;br /&gt;
		filterNode: function (el) {&lt;br /&gt;
			var n = el.nodeName &amp;amp;&amp;amp; el.nodeName.toLowerCase();&lt;br /&gt;
			if (n === &amp;#039;input&amp;#039; || n === &amp;#039;textarea&amp;#039; || $(el).hasClass(&amp;#039;mw-numerakri-skip&amp;#039;)) {&lt;br /&gt;
				return NodeFilter.FILTER_REJECT;&lt;br /&gt;
			}&lt;br /&gt;
			if (el.nodeType === Node.TEXT_NODE) {&lt;br /&gt;
				return NodeFilter.FILTER_ACCEPT;&lt;br /&gt;
			}&lt;br /&gt;
			return NodeFilter.FILTER_SKIP;&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * @method&lt;br /&gt;
		 * @param {TextNode} el&lt;br /&gt;
		 */&lt;br /&gt;
		handleTextNode: function (el) {&lt;br /&gt;
			var live = el.nodeValue,&lt;br /&gt;
				fix = live,&lt;br /&gt;
				matchers = getMatchers(num.type),&lt;br /&gt;
				i = 0;&lt;br /&gt;
			for (; i &amp;lt;= 9; i++) {&lt;br /&gt;
				fix = fix.replace(matchers[i], maps[num.type][i]);&lt;br /&gt;
			}&lt;br /&gt;
			if (live !== fix) {&lt;br /&gt;
				el.nodeValue = fix;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		isValidType: function (type) {&lt;br /&gt;
			return type === &amp;#039;default&amp;#039; || !!maps[type];&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * Register an additional type.&lt;br /&gt;
		 *&lt;br /&gt;
		 * @example&lt;br /&gt;
		 *  num.addType(&amp;#039;arabic&amp;#039;, { map: [ &amp;#039;0&amp;#039;, &amp;#039;1&amp;#039;, &amp;#039;2&amp;#039;, &amp;#039;3&amp;#039;, &amp;#039;4&amp;#039;, &amp;#039;5&amp;#039;, &amp;#039;6&amp;#039;, &amp;#039;7&amp;#039;, &amp;#039;8&amp;#039;, &amp;#039;9&amp;#039; ] });&lt;br /&gt;
		 * @param {string} type ID&lt;br /&gt;
		 * @param {Object} data Contents:&lt;br /&gt;
		 * - {Object} map&lt;br /&gt;
		 * - {string|Object} msg [optional] Label for this type or translations of labels,&lt;br /&gt;
		 *   keyed by language code. Defaults to ucFirst transformation of ID.&lt;br /&gt;
		 */&lt;br /&gt;
		addType: function (type, data) {&lt;br /&gt;
			if (type &amp;amp;&amp;amp; data &amp;amp;&amp;amp; $.isArray(data.map)) {&lt;br /&gt;
				// Map&lt;br /&gt;
				maps[type] = data.map;&lt;br /&gt;
&lt;br /&gt;
				// Messages&lt;br /&gt;
				if (data.msg) {&lt;br /&gt;
					if ($.isPlainObject(data.msg)) {&lt;br /&gt;
						if (!data.msg.en) {&lt;br /&gt;
							data.msg.en = $.ucFirst(type);&lt;br /&gt;
						}&lt;br /&gt;
					} else {&lt;br /&gt;
						data.msg = { en: String(data.msg) };&lt;br /&gt;
					}&lt;br /&gt;
				} else {&lt;br /&gt;
					data.msg = { en: $.ucFirst(type) };&lt;br /&gt;
				}&lt;br /&gt;
				msgs[&amp;#039;option-&amp;#039; + type] = data.msg;&lt;br /&gt;
&lt;br /&gt;
				if (this.$select) {&lt;br /&gt;
					this.$select.append(&lt;br /&gt;
						$(&amp;#039;&amp;lt;option&amp;gt;&amp;#039;).val(type)&lt;br /&gt;
							.text(msg(&amp;#039;option-&amp;#039; + type))&lt;br /&gt;
							.prop(&amp;#039;selected&amp;#039;, this.getStoredType() === type)&lt;br /&gt;
					);&lt;br /&gt;
				}&lt;br /&gt;
				return true;&lt;br /&gt;
			}&lt;br /&gt;
			return false;&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * @method&lt;br /&gt;
		 * @param {string} type One of &amp;#039;arabic&amp;#039; or &amp;#039;devanagari&amp;#039;.&lt;br /&gt;
		 * @throws Error&lt;br /&gt;
		 */&lt;br /&gt;
		setType: function (type) {&lt;br /&gt;
			if (!this.isValidType(type)) {&lt;br /&gt;
				mw.log(&amp;#039;Unknown Numerakri type: &amp;#039; + type);&lt;br /&gt;
				return false;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			this.type = type;&lt;br /&gt;
&lt;br /&gt;
			// Remember for 30 days&lt;br /&gt;
			$.cookie(&amp;#039;mw-numerakri-type&amp;#039;, type, { expires: 30, path: &amp;#039;/&amp;#039; });&lt;br /&gt;
&lt;br /&gt;
			this.convertPage();&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * @return {string|undefined}&lt;br /&gt;
		 */&lt;br /&gt;
		getStoredType: function () {&lt;br /&gt;
			// From cookie&lt;br /&gt;
			var stored = $.cookie(&amp;#039;mw-numerakri-type&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
			// From cookie (old version)&lt;br /&gt;
			if (!stored) {&lt;br /&gt;
				stored = compatCookie[$.cookie(&amp;#039;numconvert&amp;#039;)];&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			return stored;&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		/**&lt;br /&gt;
		 * Do the conversion.&lt;br /&gt;
		 * @method&lt;br /&gt;
		 */&lt;br /&gt;
		convertPage: function () {&lt;br /&gt;
			if (this.type === &amp;#039;default&amp;#039;) {&lt;br /&gt;
				// Type &amp;#039;default&amp;#039; means &amp;quot;don&amp;#039;t change the page&amp;quot;.&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			switch (this.type) {&lt;br /&gt;
			case &amp;#039;arabic&amp;#039;:&lt;br /&gt;
				$(&amp;#039;ol:lang(hi) li, ol.references, li.references&amp;#039;).css(&amp;#039;list-style-type&amp;#039;, &amp;#039;decimal&amp;#039;);&lt;br /&gt;
				break;&lt;br /&gt;
			case &amp;#039;devanagari&amp;#039;:&lt;br /&gt;
				$(&amp;#039;ol:lang(hi) li, ol.references, li.references&amp;#039;).css(&amp;#039;list-style-type&amp;#039;, &amp;#039;devanagari&amp;#039;);&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			walkTheDom(this.filterNode, this.handleTextNode);&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		setupInterface: function () {&lt;br /&gt;
			var $select, stored;&lt;br /&gt;
			$select = $(&amp;#039;&amp;lt;select&amp;gt;&amp;#039;).addClass(&amp;#039;mw-numerakri-skip&amp;#039;).append(&lt;br /&gt;
				$(&amp;#039;&amp;lt;option&amp;gt;&amp;#039;).val(&amp;#039;default&amp;#039;).text(msg(&amp;#039;option-default&amp;#039;)),&lt;br /&gt;
				// $.map returns an array&lt;br /&gt;
				$.map(maps, function (map, type) {&lt;br /&gt;
					return $(&amp;#039;&amp;lt;option&amp;gt;&amp;#039;).val(type).text(msg(&amp;#039;option-&amp;#039; + type));&lt;br /&gt;
				})&lt;br /&gt;
			);&lt;br /&gt;
&lt;br /&gt;
			stored = num.getStoredType();&lt;br /&gt;
			if (stored) {&lt;br /&gt;
				// Set initial value from storage&lt;br /&gt;
				$select.val(stored);&lt;br /&gt;
				num.setType(stored);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$select.change(function () {&lt;br /&gt;
				num.setType(this.value);&lt;br /&gt;
			});&lt;br /&gt;
&lt;br /&gt;
			if (num.$select) {&lt;br /&gt;
				num.$select.replaceWith($select);&lt;br /&gt;
			} else {&lt;br /&gt;
				num.$select = $select;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
		attachInterface: function () {&lt;br /&gt;
			var potlet, $menu;&lt;br /&gt;
&lt;br /&gt;
			if (num.$select === null) {&lt;br /&gt;
				num.setupInterface();&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			switch (mw.config.get(&amp;#039;skin&amp;#039;)) {&lt;br /&gt;
			case &amp;#039;vector&amp;#039;:&lt;br /&gt;
			case &amp;#039;chick&amp;#039;:&lt;br /&gt;
			case &amp;#039;myskin&amp;#039;:&lt;br /&gt;
			case &amp;#039;simple&amp;#039;:&lt;br /&gt;
			case &amp;#039;monobook&amp;#039;:&lt;br /&gt;
			case &amp;#039;modern&amp;#039;:&lt;br /&gt;
				$(&amp;#039;#pt-numconvert&amp;#039;).remove(); // Just in case&lt;br /&gt;
				potlet = mw.util.addPortletLink(&lt;br /&gt;
					&amp;#039;p-personal&amp;#039;,&lt;br /&gt;
					msg(&amp;#039;label-url&amp;#039;),&lt;br /&gt;
					msg(&amp;#039;label-text&amp;#039;),&lt;br /&gt;
					&amp;#039;pt-numconvert&amp;#039;,&lt;br /&gt;
					msg(&amp;#039;label-tooltip&amp;#039;),&lt;br /&gt;
					null,&lt;br /&gt;
					mw.user.isAnon() ? &amp;#039;#pt-createaccount&amp;#039; : &amp;#039;#pt-userpage&amp;#039;&lt;br /&gt;
				);&lt;br /&gt;
				break;&lt;br /&gt;
			default:&lt;br /&gt;
				// Skin unsupported&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$menu = $(&amp;#039;&amp;lt;div&amp;gt;&amp;#039;).addClass(&amp;#039;mw-numerakri-menu&amp;#039;).append(num.$select);&lt;br /&gt;
&lt;br /&gt;
			$(potlet).append($menu);&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	num.setupInterface();&lt;br /&gt;
&lt;br /&gt;
	mw.loader.using(&amp;#039;mediawiki.user&amp;#039;, function () {&lt;br /&gt;
		$(document).ready(num.attachInterface);&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
})(mediaWiki, jQuery);&lt;/div&gt;</summary>
		<author><name>Ahenket</name></author>
	</entry>
</feed>