jQuery dataTables nepali numbers sorting demo

DataTables Examples

HTML

<link rel="stylesheet" href="//cdn.datatables.net/1.10.0/css/jquery.dataTables.css">
<script src="//cdn.datatables.net/1.10.0/js/jquery.dataTables.js"></script>
<table id="example">
    <thead>
        <tr>
            <th>nepalese</th>
            <th>latin</th>
        </tr>
    </thead>
    <tbody>
<tr><td>१</td><td>1</td></tr> <!-- 1 -->
<tr><td>२</td><td>2</td></tr> <!-- 2 -->
<tr><td>३</td><td>3</td></tr> <!-- 3 -->
<tr><td>१२</td><td>12</td></tr> <!-- 12 -->
<tr><td>१०</td><td>10</td></tr> <!-- 10 -->
<tr><td>११</td><td>11</td></tr> <!-- 11 -->
<tr><td>२०</td><td>20</td></tr> <!-- 20 -->
<tr><td>२१</td><td> 21</td></tr> <!--  21 -->
<tr><td>९</td><td>9</td></tr> <!-- 9 -->
    </tbody>
</table>

JavaScript

jQuery.extend( jQuery.fn.dataTableExt.oSort, {
	"nepali-numbers-pre" : function(a) {
		function nepaliToLatin(nepali) {
			switch(nepali) {
				case "०": return 0; break;
				case "१": return 1; break;
				case "२": return 2; break;
				case "३": return 3; break;
				case "४": return 4; break;
				case "५": return 5; break;
				case "६": return 6; break;
				case "७": return 7; break;
				case "८": return 8; break;
				case "९": return 9; break;        
				default : return 0; break;
			}        
		}
		var latin = '', i = 0;
		for (i; i<a.length; i++) {
			latin += nepaliToLatin(a.charAt(i))
		}
		return parseInt(latin)
	},

	"nepali-numbers-asc": function(a, b) {
		return ((a < b) ? -1 : ((a > b) ? 1 : 0))
	},

	"nepali-numbers-desc": function(a, b) {
		return ((a < b) ? 1 : ((a > b) ? -1 : 0))
	}

} );

var table = $('#example').DataTable({
    columnDefs: [
      { type: 'nepali-numbers', targets : 0 }
    ]
});