Skip to content

Commit

Permalink
fix(calendar): no word length limit for months
Browse files Browse the repository at this point in the history
BREAKING CHANGE: When entering a date using words, calendar only considers the first 3 letters of the month, which in most languages is probably sufficient, but not in french. As a result juillet (july) is always interpreted as juin (june).
It's also an issue for many other languages according to https://library.princeton.edu/departments/tsd/katmandu/reference/months.html

Closes #1026
  • Loading branch information
lubber-de committed Nov 12, 2019
1 parent 3d329c2 commit 060ee89
Showing 1 changed file with 10 additions and 8 deletions.
18 changes: 10 additions & 8 deletions src/definitions/modules/calendar.js
Original file line number Diff line number Diff line change
Expand Up @@ -1304,8 +1304,11 @@ $.fn.calendar.settings = {
var isTimeOnly = settings.type === 'time';
var isDateOnly = settings.type.indexOf('time') < 0;

var words = text.split(settings.regExp.dateWords);
var numbers = text.split(settings.regExp.dateNumbers);
var words = text.split(settings.regExp.dateWords), word;
var numbers = text.split(settings.regExp.dateNumbers), number;

var parts;
var monthString;

if (!isDateOnly) {
//am/pm
Expand All @@ -1314,10 +1317,10 @@ $.fn.calendar.settings = {

//time with ':'
for (i = 0; i < numbers.length; i++) {
var number = numbers[i];
number = numbers[i];
if (number.indexOf(':') >= 0) {
if (hour < 0 || minute < 0) {
var parts = number.split(':');
parts = number.split(':');
for (k = 0; k < Math.min(2, parts.length); k++) {
j = parseInt(parts[k]);
if (isNaN(j)) {
Expand All @@ -1338,14 +1341,13 @@ $.fn.calendar.settings = {
if (!isTimeOnly) {
//textual month
for (i = 0; i < words.length; i++) {
var word = words[i];
word = words[i];
if (word.length <= 0) {
continue;
}
word = word.substring(0, Math.min(word.length, 3));
for (j = 0; j < settings.text.months.length; j++) {
var monthString = settings.text.months[j];
monthString = monthString.substring(0, Math.min(word.length, Math.min(monthString.length, 3))).toLowerCase();
monthString = settings.text.months[j];
monthString = monthString.substring(0, word.length).toLowerCase();
if (monthString === word) {
month = j + 1;
break;
Expand Down

0 comments on commit 060ee89

Please sign in to comment.