moment_timezone-rails 0.0.3.2 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 132b8a300e1ac0c7c4ec19e0702db077f7563bf7
4
- data.tar.gz: 9373e559821c0920531b757c2419b82ec01dea4b
3
+ metadata.gz: ab1870c6883b821833d2ce72ef342ce90a8e53fa
4
+ data.tar.gz: 8ba2a9a96f99ca3db903ac53358557991f91cbed
5
5
  SHA512:
6
- metadata.gz: 299eea3330b906bd515994c97c132100baff6db7cc65c2a1f08ae32caeafbad013ad8151a54d777738ed22ee6eb61dae85a3f1a26e458d82d689ed5abc90753a
7
- data.tar.gz: 9ca6ccb7fa2d21500686090dfcdb52905ba8caf319dcbc12109cb135f7696efc235281c48690be8ebc87208e499ec72a32d01420f7fc28c9aa4dcffeec1e3ba5
6
+ metadata.gz: 1eeca069699a685c76a879304e925adff11a745cc4c7fac65579cf4674e298c5f10246a3f0b484f31e66e9c46d80558ec525f414ac2b34128a0d409d9d99b15e
7
+ data.tar.gz: 4fd4972095c57cca92f0bfd4219afbae608c31cdfd040099bbe3db4ca055bc1cb6ead46cd8a01b74670d83ebb93be1640e38a07fe96d5301d073bd8d012f6c11
@@ -1,5 +1,5 @@
1
1
  module MomentTimezone
2
2
  module Rails
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
  end
@@ -5,7 +5,7 @@ require 'moment_timezone/rails/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "moment_timezone-rails"
8
- spec.version = "#{MomentTimezone::Rails::VERSION}.2"
8
+ spec.version = "#{MomentTimezone::Rails::VERSION}"
9
9
  spec.authors = ["Lim Victor"]
10
10
  spec.email = ["github.victor@gmail.com"]
11
11
  spec.description = "moment-timezone for Rails"
@@ -1,12 +1,12 @@
1
1
  // moment-timezone.js
2
- // version : 0.0.3
2
+ // version : 0.0.4
3
3
  // author : Tim Wood
4
4
  // license : MIT
5
5
  // github.com/timrwood/moment-timezone
6
6
 
7
7
  (function () {
8
8
 
9
- var VERSION = "0.0.3";
9
+ var VERSION = "0.0.4";
10
10
 
11
11
  function onload(moment) {
12
12
  var oldZoneName = moment.fn.zoneName,
@@ -26,6 +26,11 @@
26
26
  DAY_RULE_DAY_OF_MONTH = 7,
27
27
  DAY_RULE_LAST_WEEKDAY = 8;
28
28
 
29
+ if (moment.tz !== undefined) {
30
+ // Do not load moment-timezone a second time.
31
+ return;
32
+ }
33
+
29
34
  // converts time in the HH:mm:ss format to absolute number of minutes
30
35
  function parseMinutes (input) {
31
36
  input = input + '';
@@ -53,6 +58,9 @@
53
58
  this.timeRule = +timeRule;
54
59
  this.offset = parseMinutes(offset);
55
60
  this.letters = letters || '';
61
+ this.date = memoize(this.date);
62
+ this.weekdayAfter = memoize(this.weekdayAfter);
63
+ this.lastWeekday = memoize(this.lastWeekday);
56
64
  }
57
65
 
58
66
  Rule.prototype = {
@@ -135,6 +143,7 @@
135
143
  function RuleSet (name) {
136
144
  this.name = name;
137
145
  this.rules = [];
146
+ this.lastYearRule = memoize(this.lastYearRule);
138
147
  }
139
148
 
140
149
  RuleSet.prototype = {
@@ -252,6 +261,7 @@
252
261
  this.offset = parseMinutes(offset);
253
262
  this.ruleSet = ruleSet;
254
263
  this.letters = letters;
264
+ this.lastRule = memoize(this.lastRule);
255
265
 
256
266
  for (i = 0; i < untilArray.length; i++) {
257
267
  untilArray[i] = +untilArray[i];
@@ -265,10 +275,7 @@
265
275
  },
266
276
 
267
277
  lastRule : function () {
268
- if (!this._lastRule) {
269
- this._lastRule = this.rule(this.until);
270
- }
271
- return this._lastRule;
278
+ return this.rule(this.until);
272
279
  },
273
280
 
274
281
  format : function (rule) {
@@ -288,6 +295,9 @@
288
295
  this.name = normalizeName(name);
289
296
  this.displayName = name;
290
297
  this.zones = [];
298
+ this.zoneAndRule = memoize(this.zoneAndRule, function (mom) {
299
+ return +mom;
300
+ });
291
301
  }
292
302
 
293
303
  ZoneSet.prototype = {
@@ -328,6 +338,16 @@
328
338
  Global Methods
329
339
  ************************************/
330
340
 
341
+ function memoize (fn, keyFn) {
342
+ var cache = {};
343
+ return function (first) {
344
+ var key = keyFn ? keyFn.apply(this, arguments) : first;
345
+ return key in cache ?
346
+ cache[key] :
347
+ (cache[key] = fn.apply(this, arguments));
348
+ };
349
+ }
350
+
331
351
  function addRules (rules) {
332
352
  var i, j, rule;
333
353
  for (i in rules) {
@@ -432,14 +452,14 @@
432
452
  }
433
453
 
434
454
  // overwrite moment.updateOffset
435
- moment.updateOffset = function (mom) {
455
+ moment.updateOffset = function (mom, keepTime) {
436
456
  var offset;
437
457
  if (mom._z) {
438
458
  offset = mom._z.offset(mom);
439
459
  if (Math.abs(offset) < 16) {
440
460
  offset = offset / 60;
441
461
  }
442
- mom.zone(offset);
462
+ mom.zone(offset, keepTime);
443
463
  }
444
464
  };
445
465
 
@@ -479,6 +499,9 @@
479
499
  return oldZoneAbbr.call(this);
480
500
  };
481
501
 
502
+ // Make sure moment's clone includes the newly added properties
503
+ moment.momentProperties._z = null;
504
+
482
505
  moment.tz = function () {
483
506
  var args = [], i, len = arguments.length - 1;
484
507
  for (i = 0; i < len; i++) {
@@ -497,6 +520,10 @@
497
520
 
498
521
  moment.tz.version = VERSION;
499
522
 
523
+ moment.tz.zoneExists = function (name) {
524
+ return getZoneSet(name).zones.length > 0;
525
+ };
526
+
500
527
  // add default rule
501
528
  defaultRule = addRule("- 0 9999 0 0 0 0 0 0");
502
529
 
@@ -505,9 +532,9 @@
505
532
 
506
533
  if (typeof define === "function" && define.amd) {
507
534
  define("moment-timezone", ["moment"], onload);
508
- } else if (typeof window !== "undefined" && window.moment) {
509
- onload(window.moment);
510
535
  } else if (typeof module !== 'undefined') {
511
536
  module.exports = onload(require('moment'));
537
+ } else if (typeof window !== "undefined" && window.moment) {
538
+ onload(window.moment);
512
539
  }
513
540
  }).apply(this);
@@ -1 +1 @@
1
- (function(){function t(t){function n(t){t+="";var e=t.split(":"),n=~t.indexOf("-")?-1:1,s=Math.abs(+e[0]),r=parseInt(e[1],10)||0,i=parseInt(e[2],10)||0;return n*(60*s+r+i/60)}function s(t,e,s,r,i,u,a,o,h,f){this.name=t,this.startYear=+e,this.endYear=+s,this.month=+r,this.day=+i,this.dayRule=+u,this.time=n(a),this.timeRule=+o,this.offset=n(h),this.letters=f||""}function r(t,e){this.rule=e,this.start=e.start(t)}function i(t,e){return t.isLast?-1:e.isLast?1:e.start-t.start}function u(t){this.name=t,this.rules=[]}function a(e,s,r,i,u,a){var o,h="string"==typeof u?u.split("_"):[9999];for(this.name=e,this.offset=n(s),this.ruleSet=r,this.letters=i,o=0;h.length>o;o++)h[o]=+h[o];this.until=t.utc(h).subtract("m",n(a))}function o(t,e){return t.until-e.until}function h(t){this.name=d(t),this.displayName=t,this.zones=[]}function f(t){var e,n,s;for(e in t)for(s=t[e],n=0;s.length>n;n++)l(e+" "+s[n])}function l(t){if(Y[t])return Y[t];var e=t.split(/\s/),n=d(e[0]),r=new s(n,e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10]);return Y[t]=r,z(n).add(r),r}function d(t){return(t||"").toLowerCase().replace(/\//g,"_")}function c(t){var e,n,s;for(e in t)for(s=t[e],n=0;s.length>n;n++)p(e+" "+s[n])}function m(t){var e;for(e in t)k[d(e)]=d(t[e])}function p(t){if(M[t])return M[t];var e=t.split(/\s/),n=d(e[0]),s=new a(n,e[1],z(e[2]),e[3],e[4],e[5]);return M[t]=s,y(e[0]).add(s),s}function z(t){return t=d(t),b[t]||(b[t]=new u(t)),b[t]}function y(t){var e=d(t);return k[e]&&(e=k[e]),A[e]||(A[e]=new h(t)),A[e]}function v(t){t&&(t.zones&&c(t.zones),t.rules&&f(t.rules),t.links&&m(t.links))}function R(){var t,e=[];for(t in A)e.push(A[t]);return e}var w,_=t.fn.zoneName,g=t.fn.zoneAbbr,Y={},b={},M={},A={},k={},L=1,N=2,q=7,x=8;return s.prototype={contains:function(t){return t>=this.startYear&&this.endYear>=t},start:function(e){return e=Math.min(Math.max(e,this.startYear),this.endYear),t.utc([e,this.month,this.date(e),0,this.time])},date:function(t){return this.dayRule===q?this.day:this.dayRule===x?this.lastWeekday(t):this.weekdayAfter(t)},weekdayAfter:function(e){for(var n=this.day,s=t([e,this.month,1]).day(),r=this.dayRule+1-s;n>r;)r+=7;return r},lastWeekday:function(e){var n=this.day,s=n%7,r=t([e,this.month+1,1]).day(),i=t([e,this.month,1]).daysInMonth(),u=i+(s-(r-1))-7*~~(n/7);return s>=r&&(u-=7),u}},r.prototype={equals:function(t){return t&&t.rule===this.rule?864e5>Math.abs(t.start-this.start):!1}},u.prototype={add:function(t){this.rules.push(t)},ruleYears:function(t,e){var n,s,u,a=t.year(),o=[];for(n=0;this.rules.length>n;n++)s=this.rules[n],s.contains(a)?o.push(new r(a,s)):s.contains(a+1)&&o.push(new r(a+1,s));return o.push(new r(a-1,this.lastYearRule(a-1))),e&&(u=new r(a-1,e.lastRule()),u.start=e.until.clone().utc(),u.isLast=e.ruleSet!==this,o.push(u)),o.sort(i),o},rule:function(t,e,n){var s,r,i,u,a,o=this.ruleYears(t,n),h=0;for(n&&(r=n.offset+n.lastRule().offset,i=9e4*Math.abs(r)),a=o.length-1;a>-1;a--)u=s,s=o[a],s.equals(u)||(n&&!s.isLast&&i>=Math.abs(s.start-n.until)&&(h+=r-e),s.rule.timeRule===N&&(h=e),s.rule.timeRule!==L&&s.start.add("m",-h),h=s.rule.offset+e);for(a=0;o.length>a;a++)if(s=o[a],t>=s.start&&!s.isLast)return s.rule;return w},lastYearRule:function(t){var e,n,s,r=w,i=-1e30;for(e=0;this.rules.length>e;e++)n=this.rules[e],t>=n.startYear&&(s=n.start(t),s>i&&(i=s,r=n));return r}},a.prototype={rule:function(t,e){return this.ruleSet.rule(t,this.offset,e)},lastRule:function(){return this._lastRule||(this._lastRule=this.rule(this.until)),this._lastRule},format:function(t){return this.letters.replace("%s",t.letters)}},h.prototype={zoneAndRule:function(t){var e,n,s;for(t=t.clone().utc(),e=0;this.zones.length>e&&(n=this.zones[e],!(n.until>t));e++)s=n;return[n,n.rule(t,s)]},add:function(t){this.zones.push(t),this.zones.sort(o)},format:function(t){var e=this.zoneAndRule(t);return e[0].format(e[1])},offset:function(t){var e=this.zoneAndRule(t);return-(e[0].offset+e[1].offset)}},t.updateOffset=function(t){var e;t._z&&(e=t._z.offset(t),16>Math.abs(e)&&(e/=60),t.zone(e))},t.fn.tz=function(e){return e?(this._z=y(e),this._z&&t.updateOffset(this),this):this._z?this._z.displayName:void 0},t.fn.zoneName=function(){return this._z?this._z.format(this):_.call(this)},t.fn.zoneAbbr=function(){return this._z?this._z.format(this):g.call(this)},t.tz=function(){var e,n=[],s=arguments.length-1;for(e=0;s>e;e++)n[e]=arguments[e];var r=t.apply(null,n),i=r.zone();return r.tz(arguments[s]),r.add("minutes",r.zone()-i)},t.tz.add=v,t.tz.addRule=l,t.tz.addZone=p,t.tz.zones=R,t.tz.version=e,w=l("- 0 9999 0 0 0 0 0 0"),t}var e="0.0.3";"function"==typeof define&&define.amd?define("moment-timezone",["moment"],t):"undefined"!=typeof window&&window.moment?t(window.moment):"undefined"!=typeof module&&(module.exports=t(require("moment")))}).apply(this);
1
+ (function(){function a(a){function c(a){a+="";var b=a.split(":"),c=~a.indexOf("-")?-1:1,d=Math.abs(+b[0]),e=parseInt(b[1],10)||0,f=parseInt(b[2],10)||0;return c*(60*d+e+f/60)}function d(a,b,d,e,f,g,h,i,j,l){this.name=a,this.startYear=+b,this.endYear=+d,this.month=+e,this.day=+f,this.dayRule=+g,this.time=c(h),this.timeRule=+i,this.offset=c(j),this.letters=l||"",this.date=k(this.date),this.weekdayAfter=k(this.weekdayAfter),this.lastWeekday=k(this.lastWeekday)}function e(a,b){this.rule=b,this.start=b.start(a)}function f(a,b){return a.isLast?-1:b.isLast?1:b.start-a.start}function g(a){this.name=a,this.rules=[],this.lastYearRule=k(this.lastYearRule)}function h(b,d,e,f,g,h){var i,j="string"==typeof g?g.split("_"):[9999];for(this.name=b,this.offset=c(d),this.ruleSet=e,this.letters=f,this.lastRule=k(this.lastRule),i=0;i<j.length;i++)j[i]=+j[i];this.until=a.utc(j).subtract("m",c(h))}function i(a,b){return a.until-b.until}function j(a){this.name=n(a),this.displayName=a,this.zones=[],this.zoneAndRule=k(this.zoneAndRule,function(a){return+a})}function k(a,b){var c={};return function(d){var e=b?b.apply(this,arguments):d;return e in c?c[e]:c[e]=a.apply(this,arguments)}}function l(a){var b,c,d;for(b in a)for(d=a[b],c=0;c<d.length;c++)m(b+" "+d[c])}function m(a){if(y[a])return y[a];var b=a.split(/\s/),c=n(b[0]),e=new d(c,b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9],b[10]);return y[a]=e,r(c).add(e),e}function n(a){return(a||"").toLowerCase().replace(/\//g,"_")}function o(a){var b,c,d;for(b in a)for(d=a[b],c=0;c<d.length;c++)q(b+" "+d[c])}function p(a){var b;for(b in a)C[n(b)]=n(a[b])}function q(a){if(A[a])return A[a];var b=a.split(/\s/),c=n(b[0]),d=new h(c,b[1],r(b[2]),b[3],b[4],b[5]);return A[a]=d,s(b[0]).add(d),d}function r(a){return a=n(a),z[a]||(z[a]=new g(a)),z[a]}function s(a){var b=n(a);return C[b]&&(b=C[b]),B[b]||(B[b]=new j(a)),B[b]}function t(a){a&&(a.zones&&o(a.zones),a.rules&&l(a.rules),a.links&&p(a.links))}function u(){var a,b=[];for(a in B)b.push(B[a]);return b}var v,w=a.fn.zoneName,x=a.fn.zoneAbbr,y={},z={},A={},B={},C={},D=1,E=2,F=7,G=8;if(void 0===a.tz)return d.prototype={contains:function(a){return a>=this.startYear&&a<=this.endYear},start:function(b){return b=Math.min(Math.max(b,this.startYear),this.endYear),a.utc([b,this.month,this.date(b),0,this.time])},date:function(a){return this.dayRule===F?this.day:this.dayRule===G?this.lastWeekday(a):this.weekdayAfter(a)},weekdayAfter:function(b){for(var c=this.day,d=a([b,this.month,1]).day(),e=this.dayRule+1-d;c>e;)e+=7;return e},lastWeekday:function(b){var c=this.day,d=c%7,e=a([b,this.month+1,1]).day(),f=a([b,this.month,1]).daysInMonth(),g=f+(d-(e-1))-7*~~(c/7);return d>=e&&(g-=7),g}},e.prototype={equals:function(a){return a&&a.rule===this.rule?Math.abs(a.start-this.start)<864e5:!1}},g.prototype={add:function(a){this.rules.push(a)},ruleYears:function(a,b){var c,d,g,h=a.year(),i=[];for(c=0;c<this.rules.length;c++)d=this.rules[c],d.contains(h)?i.push(new e(h,d)):d.contains(h+1)&&i.push(new e(h+1,d));return i.push(new e(h-1,this.lastYearRule(h-1))),b&&(g=new e(h-1,b.lastRule()),g.start=b.until.clone().utc(),g.isLast=b.ruleSet!==this,i.push(g)),i.sort(f),i},rule:function(a,b,c){var d,e,f,g,h,i=this.ruleYears(a,c),j=0;for(c&&(e=c.offset+c.lastRule().offset,f=9e4*Math.abs(e)),h=i.length-1;h>-1;h--)g=d,d=i[h],d.equals(g)||(c&&!d.isLast&&Math.abs(d.start-c.until)<=f&&(j+=e-b),d.rule.timeRule===E&&(j=b),d.rule.timeRule!==D&&d.start.add("m",-j),j=d.rule.offset+b);for(h=0;h<i.length;h++)if(d=i[h],a>=d.start&&!d.isLast)return d.rule;return v},lastYearRule:function(a){var b,c,d,e=v,f=-1e30;for(b=0;b<this.rules.length;b++)c=this.rules[b],a>=c.startYear&&(d=c.start(a),d>f&&(f=d,e=c));return e}},h.prototype={rule:function(a,b){return this.ruleSet.rule(a,this.offset,b)},lastRule:function(){return this.rule(this.until)},format:function(a){return this.letters.replace("%s",a.letters)}},j.prototype={zoneAndRule:function(a){var b,c,d;for(a=a.clone().utc(),b=0;b<this.zones.length&&(c=this.zones[b],!(a<c.until));b++)d=c;return[c,c.rule(a,d)]},add:function(a){this.zones.push(a),this.zones.sort(i)},format:function(a){var b=this.zoneAndRule(a);return b[0].format(b[1])},offset:function(a){var b=this.zoneAndRule(a);return-(b[0].offset+b[1].offset)}},a.updateOffset=function(a,b){var c;a._z&&(c=a._z.offset(a),Math.abs(c)<16&&(c/=60),a.zone(c,b))},a.fn.tz=function(b){return b?(this._z=s(b),this._z&&a.updateOffset(this),this):this._z?this._z.displayName:void 0},a.fn.zoneName=function(){return this._z?this._z.format(this):w.call(this)},a.fn.zoneAbbr=function(){return this._z?this._z.format(this):x.call(this)},a.momentProperties._z=null,a.tz=function(){var b,c=[],d=arguments.length-1;for(b=0;d>b;b++)c[b]=arguments[b];var e=a.apply(null,c),f=e.zone();return e.tz(arguments[d]),e.add("minutes",e.zone()-f)},a.tz.add=t,a.tz.addRule=m,a.tz.addZone=q,a.tz.zones=u,a.tz.version=b,a.tz.zoneExists=function(a){return s(a).zones.length>0},v=m("- 0 9999 0 0 0 0 0 0"),a}var b="0.0.4";"function"==typeof define&&define.amd?define("moment-timezone",["moment"],a):"undefined"!=typeof module?module.exports=a(require("moment")):"undefined"!=typeof window&&window.moment&&a(window.moment)}).apply(this);
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moment_timezone-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3.2
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lim Victor
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-05 00:00:00.000000000 Z
11
+ date: 2014-04-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -81,5 +81,5 @@ rubyforge_project:
81
81
  rubygems_version: 2.0.5
82
82
  signing_key:
83
83
  specification_version: 4
84
- summary: moment-timezone-0.0.3
84
+ summary: moment-timezone-0.0.4
85
85
  test_files: []