bikram-sambat-bootstrap
Advanced tools
Comparing version 1.1.0 to 1.2.0
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ | ||
var toDevanagari = require('eurodigit/src/to_non_euro').devanagari; | ||
var MS_PER_DAY = 86400000; | ||
// We have defined our own Epoch for Bikram Sambat: 1-1-2007 BS / 13-4-1950 AD | ||
var BS_EPOCH_TS = -622359900000; // = Date.parse('1950-4-13') | ||
var BS_YEAR_ZERO = 2007; | ||
// TODO this would be stored more efficiently converted to a string using | ||
// String.fromCharCode.apply(String, ENCODED_MONTH_LENGTHS), and extracted using | ||
// ENC_MTH.charCodeAt(...). However, JS seems to do something weird with the | ||
// top bits. | ||
var ENCODED_MONTH_LENGTHS = [ | ||
8673005,5315258,5314298,9459438,8673005,5315258,5314298,9459438,8473322,5315258,5314298,9459438,5327594,5315258,5314298,9459438,5327594,5315258,5314286,8673006,5315306,5315258,5265134,8673006,5315306,5315258,9459438,8673005,5315258,5314490,9459438,8673005,5315258,5314298,9459438,8473325,5315258,5314298,9459438,5327594,5315258,5314298,9459438,5327594,5315258,5314286,9459438,5315306,5315258,5265134,8673006,5315306,5315258,5265134,8673006,5315258,5314490,9459438,8673005,5315258,5314298,9459438,8669933,5315258,5314298,9459438,8473322,5315258,5314298,9459438,5327594,5315258,5314286,9459438,5315306,5315258,5265134,8673006,5315306,5315258,5265134,5527290,5527277,5527226,5527226,5528046,5527277,5528250,5528057,5527277,5527277 | ||
], | ||
MONTH_NAMES = ['बैशाख', 'जेठ', 'असार', 'साउन', 'भदौ', 'असोज', 'कार्तिक', 'मंसिर', 'पौष', 'माघ', 'फाल्गुन', 'चैत']; | ||
/** | ||
* Magic numbers: | ||
* 2000 <- the first year encoded in ENCODED_MONTH_LENGTHS | ||
* month #5 <- this is the only month which has a day variation of more than 1 | ||
* & 3 <- this is a 2 bit mask, i.e. 0...011 | ||
*/ | ||
function daysInMonth(year, month) { | ||
return 29 + ((ENCODED_MONTH_LENGTHS[year - 2000] >>> | ||
(((month-1) << 1))) & 3); | ||
} | ||
function zPad(x) { return x > 9 ? x : '0' + x; } | ||
function toBik(greg) { | ||
// TODO do not use Date.parse(), as per https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse | ||
var m, dM, year = BS_YEAR_ZERO, | ||
days = Math.floor((Date.parse(greg) - BS_EPOCH_TS) / MS_PER_DAY) + 1; | ||
while(days > 0) { | ||
for(m=1; m<=12; ++m) { | ||
dM = daysInMonth(year, m); | ||
if(days <= dM) return { year:year, month:m, day:days }; | ||
days -= dM; | ||
} | ||
++year; | ||
} | ||
throw new Error('Date outside supported range: ' + greg + ' AD'); | ||
} | ||
function toBik_euro(greg) { | ||
var d = toBik(greg); | ||
return d.year + '-' + zPad(d.month) + '-' + zPad(d.day); | ||
} | ||
function toBik_dev(greg) { | ||
return toDevanagari(toBik_euro(greg)); | ||
} | ||
function toBik_text(greg) { | ||
var d = toBik(greg); | ||
return toDevanagari(d.day) + ' ' + MONTH_NAMES[d.month-1] + ' ' + toDevanagari(d.year); | ||
} | ||
function toGreg(year, month, day) { | ||
var timestamp = BS_EPOCH_TS; | ||
while(year >= BS_YEAR_ZERO) { | ||
while(month >= 1) { | ||
while(day >= 1) { | ||
timestamp += MS_PER_DAY; | ||
--day; | ||
} | ||
--month; | ||
day = daysInMonth(year, month, day); | ||
} | ||
--year; | ||
month = 12; | ||
day = daysInMonth(year, month, day); | ||
} | ||
var d = new Date(timestamp); | ||
return { | ||
year: d.getUTCFullYear(), | ||
month: 1+d.getUTCMonth(), | ||
day: d.getUTCDate() | ||
}; | ||
} | ||
module.exports = { | ||
daysInMonth: daysInMonth, | ||
toBik_dev: toBik_dev, | ||
toBik_euro: toBik_euro, | ||
toBik_text: toBik_text, | ||
toGreg: toGreg | ||
}; | ||
},{"eurodigit/src/to_non_euro":5}],2:[function(require,module,exports){ | ||
"use strict"; | ||
@@ -103,3 +9,3 @@ module.exports = { | ||
},{"./to_euro":3,"./to_int":4,"./to_non_euro":5}],3:[function(require,module,exports){ | ||
},{"./to_euro":2,"./to_int":3,"./to_non_euro":4}],2:[function(require,module,exports){ | ||
'use strict'; | ||
@@ -118,3 +24,3 @@ | ||
},{}],4:[function(require,module,exports){ | ||
},{}],3:[function(require,module,exports){ | ||
var to_euro = require('./to_euro'); | ||
@@ -126,3 +32,3 @@ | ||
},{"./to_euro":3}],5:[function(require,module,exports){ | ||
},{"./to_euro":2}],4:[function(require,module,exports){ | ||
'use strict'; | ||
@@ -143,3 +49,3 @@ | ||
},{}],6:[function(require,module,exports){ | ||
},{}],5:[function(require,module,exports){ | ||
var bs = require('bikram-sambat'); | ||
@@ -153,2 +59,24 @@ var eurodig = require('eurodigit'); | ||
function addChangeListener($parent, selecters, onChange) { | ||
if(arguments.length === 1) { | ||
onChange = $parent; | ||
selecters = {}; | ||
$parent = $('body'); | ||
} else if(arguments.length === 2) { | ||
onChange = selecters; | ||
if($parent instanceof jQuery) { | ||
selecters = {}; | ||
} else { | ||
selecters = $parent; | ||
$parent = $('body'); | ||
} | ||
} | ||
$parent.find(selecters.numberInput || '.devanagari-number-input') | ||
.on('input', onChange); | ||
$parent.find(selecters.monthToggle || '.bikram-sambat-input-group .dropdown-menu li a') | ||
.on('click', onChange); | ||
} | ||
function initListeners($parent, selecters) { | ||
@@ -189,5 +117,11 @@ if(arguments.length === 0) { | ||
function fieldValue($parent, selecter) { | ||
return from_dev($parent.find(selecter).val()); | ||
function fieldValue($parent, name) { | ||
return from_dev($parent.find('[name='+name+']').val()); | ||
} | ||
function setText($parent, name, val) { | ||
$parent.find('[name='+name+']').val(to_dev(val)); | ||
} | ||
function setDropdown($parent, name, val) { | ||
$parent.find('[name='+name+']').val(val); | ||
} | ||
@@ -198,12 +132,140 @@ | ||
module.exports = window.bikram_sambat_bootstrap = { | ||
getDate: function($inputGroup) { | ||
// TODO handle fields not set, out of bounds etc. | ||
var year = fieldValue($inputGroup, '[name=year]'); | ||
var month = fieldValue($inputGroup, '[name=month]'); | ||
var day = fieldValue($inputGroup, '[name=day]'); | ||
return bs.toGreg(year, month, day); | ||
addChangeListener: addChangeListener, | ||
getDate_greg: function($inputGroup) { | ||
var year = fieldValue($inputGroup, 'year'); | ||
var month = fieldValue($inputGroup, 'month'); | ||
var day = fieldValue($inputGroup, 'day'); | ||
try { | ||
return bs.toGreg(year, month, day); | ||
} catch(e) { | ||
return null; | ||
} | ||
}, | ||
getDate_greg_text: function($inputGroup) { | ||
var year = fieldValue($inputGroup, 'year'); | ||
var month = fieldValue($inputGroup, 'month'); | ||
var day = fieldValue($inputGroup, 'day'); | ||
try { | ||
return bs.toGreg_text(year, month, day); | ||
} catch(e) { | ||
return null; | ||
} | ||
}, | ||
setDate_greg_text: function($inputGroup, gregDateString) { | ||
var bik = bs.toBik(gregDateString); | ||
setText($inputGroup, 'year', bik.year); | ||
setDropdown($inputGroup, 'month', bik.month); | ||
setText($inputGroup, 'day', bik.day); | ||
}, | ||
initListeners: initListeners, | ||
}; | ||
},{"bikram-sambat":1,"eurodigit":2}]},{},[6]); | ||
},{"bikram-sambat":7,"eurodigit":1}],6:[function(require,module,exports){ | ||
arguments[4][4][0].apply(exports,arguments) | ||
},{"dup":4}],7:[function(require,module,exports){ | ||
var toDevanagari = require('eurodigit/src/to_non_euro').devanagari; | ||
var MS_PER_DAY = 86400000; | ||
// We have defined our own Epoch for Bikram Sambat: 1-1-2007 BS / 13-4-1950 AD | ||
var BS_EPOCH_TS = -622359900000; // = Date.parse('1950-4-13') | ||
var BS_YEAR_ZERO = 2007; | ||
// TODO this would be stored more efficiently converted to a string using | ||
// String.fromCharCode.apply(String, ENCODED_MONTH_LENGTHS), and extracted using | ||
// ENC_MTH.charCodeAt(...). However, JS seems to do something weird with the | ||
// top bits. | ||
var ENCODED_MONTH_LENGTHS = [ | ||
8673005,5315258,5314298,9459438,8673005,5315258,5314298,9459438,8473322,5315258,5314298,9459438,5327594,5315258,5314298,9459438,5327594,5315258,5314286,8673006,5315306,5315258,5265134,8673006,5315306,5315258,9459438,8673005,5315258,5314490,9459438,8673005,5315258,5314298,9459438,8473325,5315258,5314298,9459438,5327594,5315258,5314298,9459438,5327594,5315258,5314286,9459438,5315306,5315258,5265134,8673006,5315306,5315258,5265134,8673006,5315258,5314490,9459438,8673005,5315258,5314298,9459438,8669933,5315258,5314298,9459438,8473322,5315258,5314298,9459438,5327594,5315258,5314286,9459438,5315306,5315258,5265134,8673006,5315306,5315258,5265134,5527290,5527277,5527226,5527226,5528046,5527277,5528250,5528057,5527277,5527277 | ||
], | ||
MONTH_NAMES = ['बैशाख', 'जेठ', 'असार', 'साउन', 'भदौ', 'असोज', 'कार्तिक', 'मंसिर', 'पौष', 'माघ', 'फाल्गुन', 'चैत']; | ||
/** | ||
* Magic numbers: | ||
* 2000 <- the first year (BS) encoded in ENCODED_MONTH_LENGTHS | ||
* month #5 <- this is the only month which has a day variation of more than 1 | ||
* & 3 <- this is a 2 bit mask, i.e. 0...011 | ||
*/ | ||
function daysInMonth(year, month) { | ||
// TODO why does this accept 0? | ||
if(month < 0 || month > 12) throw new Error('Invalid month value ' + month); | ||
var delta = ENCODED_MONTH_LENGTHS[year - 2000]; | ||
if(typeof delta === 'undefined') throw new Error('No data for year: ' + year + ' BS'); | ||
return 29 + ((delta >>> | ||
(((month-1) << 1))) & 3); | ||
} | ||
function zPad(x) { return x > 9 ? x : '0' + x; } | ||
function toBik(greg) { | ||
// TODO do not use Date.parse(), as per https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse | ||
var m, dM, year = BS_YEAR_ZERO, | ||
days = Math.floor((Date.parse(greg) - BS_EPOCH_TS) / MS_PER_DAY) + 1; | ||
while(days > 0) { | ||
for(m=1; m<=12; ++m) { | ||
dM = daysInMonth(year, m); | ||
if(days <= dM) return { year:year, month:m, day:days }; | ||
days -= dM; | ||
} | ||
++year; | ||
} | ||
throw new Error('Date outside supported range: ' + greg + ' AD'); | ||
} | ||
function toBik_euro(greg) { | ||
var d = toBik(greg); | ||
return d.year + '-' + zPad(d.month) + '-' + zPad(d.day); | ||
} | ||
function toBik_dev(greg) { | ||
return toDevanagari(toBik_euro(greg)); | ||
} | ||
function toBik_text(greg) { | ||
var d = toBik(greg); | ||
return toDevanagari(d.day) + ' ' + MONTH_NAMES[d.month-1] + ' ' + toDevanagari(d.year); | ||
} | ||
function toGreg(year, month, day) { | ||
// TODO month bounds-checking should be handled in daysInMonth() | ||
if(month < 1) throw new Error('Invalid month value ' + month); | ||
if(year < BS_YEAR_ZERO) throw new Error('Invalid year value ' + year); | ||
if(day < 1 || day > daysInMonth(year, month)) throw new Error('Invalid day value', day); | ||
var timestamp = BS_EPOCH_TS; | ||
while(year >= BS_YEAR_ZERO) { | ||
while(month >= 1) { | ||
while(--day >= 0) { | ||
timestamp += MS_PER_DAY; | ||
} | ||
day = daysInMonth(year, --month); | ||
} | ||
day = daysInMonth(--year, month = 12); | ||
} | ||
var d = new Date(timestamp); | ||
return { | ||
year: d.getUTCFullYear(), | ||
month: 1+d.getUTCMonth(), | ||
day: d.getUTCDate() | ||
}; | ||
} | ||
function toGreg_text(year, month, day) { | ||
var d = toGreg(year, month, day); | ||
return d.year + '-' + zPad(d.month) + '-' + zPad(d.day); | ||
} | ||
module.exports = { | ||
daysInMonth: daysInMonth, | ||
toBik: toBik, | ||
toBik_dev: toBik_dev, | ||
toBik_euro: toBik_euro, | ||
toBik_text: toBik_text, | ||
toGreg: toGreg, | ||
toGreg_text: toGreg_text | ||
}; | ||
},{"eurodigit/src/to_non_euro":6}]},{},[5]); |
{ | ||
"name": "bikram-sambat-bootstrap", | ||
"version": "1.1.0", | ||
"version": "1.2.0", | ||
"description": "bikram sambat datepicker for bootstrap", | ||
"main": "src/bikram-sambat-bootstrap.js", | ||
"scripts": { | ||
"build": "./node_modules/browserify/bin/cmd.js -e ./src/bikram-sambat-bootstrap.js -o dist/bikram-sambat-bs.js", | ||
"server": "./node_modules/http-server/bin/http-server dist", | ||
"test": "echo \"Error: no test specified\" && exit 1" | ||
"build": "browserify -e ./src/bikram-sambat-bootstrap.js -o dist/bikram-sambat-bs.js", | ||
"server": "http-server dist", | ||
"test": "jshint src/*.js" | ||
}, | ||
@@ -23,8 +23,9 @@ "repository": { | ||
"browserify": "^14.4.0", | ||
"http-server": "^0.10.0" | ||
"http-server": "^0.10.0", | ||
"jshint": "^2.9.5" | ||
}, | ||
"dependencies": { | ||
"bikram-sambat": "^1.4.0", | ||
"bikram-sambat": "^1.5.0", | ||
"eurodigit": "^3.1.1" | ||
} | ||
} |
@@ -66,5 +66,11 @@ var bs = require('bikram-sambat'); | ||
function fieldValue($parent, selecter) { | ||
return from_dev($parent.find(selecter).val()); | ||
function fieldValue($parent, name) { | ||
return from_dev($parent.find('[name='+name+']').val()); | ||
} | ||
function setText($parent, name, val) { | ||
$parent.find('[name='+name+']').val(to_dev(val)); | ||
} | ||
function setDropdown($parent, name, val) { | ||
$parent.find('[name='+name+']').val(val); | ||
} | ||
@@ -76,6 +82,6 @@ | ||
addChangeListener: addChangeListener, | ||
getDate: function($inputGroup) { | ||
var year = fieldValue($inputGroup, '[name=year]'); | ||
var month = fieldValue($inputGroup, '[name=month]'); | ||
var day = fieldValue($inputGroup, '[name=day]'); | ||
getDate_greg: function($inputGroup) { | ||
var year = fieldValue($inputGroup, 'year'); | ||
var month = fieldValue($inputGroup, 'month'); | ||
var day = fieldValue($inputGroup, 'day'); | ||
try { | ||
@@ -87,6 +93,6 @@ return bs.toGreg(year, month, day); | ||
}, | ||
getDate_text: function($inputGroup) { | ||
var year = fieldValue($inputGroup, '[name=year]'); | ||
var month = fieldValue($inputGroup, '[name=month]'); | ||
var day = fieldValue($inputGroup, '[name=day]'); | ||
getDate_greg_text: function($inputGroup) { | ||
var year = fieldValue($inputGroup, 'year'); | ||
var month = fieldValue($inputGroup, 'month'); | ||
var day = fieldValue($inputGroup, 'day'); | ||
try { | ||
@@ -98,3 +104,9 @@ return bs.toGreg_text(year, month, day); | ||
}, | ||
setDate_greg_text: function($inputGroup, gregDateString) { | ||
var bik = bs.toBik(gregDateString); | ||
setText($inputGroup, 'year', bik.year); | ||
setDropdown($inputGroup, 'month', bik.month); | ||
setText($inputGroup, 'day', bik.day); | ||
}, | ||
initListeners: initListeners, | ||
}; |
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
No tests
QualityPackage does not have any tests. This is a strong signal of a poorly maintained or low quality package.
Found 1 instance in 1 package
19237
320
0
3
1
Updatedbikram-sambat@^1.5.0