diff --git a/js/connection.js b/js/connection.js index e20a29e..2570a63 100644 --- a/js/connection.js +++ b/js/connection.js @@ -78,6 +78,11 @@ weechat.factory('connection', }; var _parseWeechatTimeFormat = function() { + // helper function to get a custom delimiter span + var _timeDelimiter = function(delim) { + return "'" + delim + "'"; + }; + // Fetch the buffer time format from weechat var timeFormat = models.wconfig['weechat.look.buffer_time_format']; @@ -88,7 +93,7 @@ weechat.factory('connection', // one of four formats, (short|long) (12|24)-hour time var angularFormat = ""; - var timeDelimiter = "':'"; + var timeDelimiter = _timeDelimiter(":"); var left12 = "hh" + timeDelimiter + "mm"; var right12 = "' 'a"; @@ -132,6 +137,41 @@ weechat.factory('connection', angularFormat = short24; } + // Assemble date format + var date_components = []; + + // Check for day of month in time format + var day_pos = Math.max(timeFormat.indexOf("%d"), + timeFormat.indexOf("%e")); + date_components.push([day_pos, "dd"]); + + // month of year? + var month_pos = timeFormat.indexOf("%m"); + date_components.push([month_pos, "MM"]); + + // year as well? + var year_pos = Math.max(timeFormat.indexOf("%y"), + timeFormat.indexOf("%Y")); + if (timeFormat.indexOf("%y") > -1) { + date_components.push([year_pos, "yy"]); + } else if (timeFormat.indexOf("%Y") > -1) { + date_components.push([year_pos, "yyyy"]); + } + + // if there is a date, assemble it in the right order + if (date_components.length > 0) { + date_components.sort(); + var format_array = []; + for (var i = 0; i < date_components.length; i++) { + if (date_components[i][0] == -1) continue; + format_array.push(date_components[i][1]); + } + // TODO: parse delimiter as well? For now, use '/' as it is + // more common internationally than '-' + var date_format = format_array.join(_timeDelimiter("/")); + angularFormat = date_format + _timeDelimiter(" ") + angularFormat; + } + $rootScope.angularTimeFormat = angularFormat; };