moment_timezone-rails 0.0.3.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []