moment_timezone-rails 0.0.4 → 0.1.0
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 +4 -4
- data/README.md +25 -1
- data/lib/moment_timezone/rails/version.rb +1 -1
- data/moment_timezone-rails.gemspec +2 -2
- data/vendor/assets/javascripts/moment-timezone.js +250 -460
- data/vendor/assets/javascripts/moment-timezone.min.js +6 -1
- metadata +15 -17
- data/app/assets/javascripts/moment-timezone-data.js +0 -7564
- data/vendor/assets/javascripts/moment-timezone.json +0 -7564
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 34fb06044fcd232cebb6940b4e9d5ce0530b41db
|
4
|
+
data.tar.gz: cab067330843c1104899f723db40e86e4caaa31b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 80bc732d49f06ca3d0c22a2f55f67bfad3b383624cb3b6095b80d77f619d378136189cd6985663a105ee9e96760d4cac4bc10a252a36ef73649e823adba569c0
|
7
|
+
data.tar.gz: b7cb6f1fc57c8d86b728a2ca7f134134733e8c722ae7c05ea1ac0b63dae57ba36e40cc57cead49645dfbd878dd91399acc8c311dfe11d8349a9208182177ed83
|
data/README.md
CHANGED
@@ -4,7 +4,13 @@
|
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
7
|
-
|
7
|
+
`momentjs-rails` need to be explicitly included in your application's Gemfile:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'momentjs-rails'
|
11
|
+
```
|
12
|
+
|
13
|
+
Then add this line to your application's Gemfile:
|
8
14
|
|
9
15
|
```ruby
|
10
16
|
gem 'moment_timezone-rails'
|
@@ -26,12 +32,30 @@ $ gem install moment_timezone-rails
|
|
26
32
|
|
27
33
|
Add the following directives to `application.js`.
|
28
34
|
|
35
|
+
### For v0.0.4 and below
|
36
|
+
|
29
37
|
```js
|
30
38
|
//= require moment
|
31
39
|
//= require moment-timezone
|
32
40
|
//= require moment-timezone-data
|
33
41
|
```
|
34
42
|
|
43
|
+
### For v0.1.0
|
44
|
+
|
45
|
+
```js
|
46
|
+
//= require moment
|
47
|
+
|
48
|
+
// moment-timezone without timezone data
|
49
|
+
//= require moment-timezone
|
50
|
+
|
51
|
+
// moment-timezone with timezone data from 2010-2020
|
52
|
+
//= require moment-timezone-2010-2020
|
53
|
+
|
54
|
+
// moment-timezone all timezone data
|
55
|
+
//= require moment-timezone-all-years
|
56
|
+
|
57
|
+
```
|
58
|
+
|
35
59
|
## Contributing
|
36
60
|
|
37
61
|
1. Fork it
|
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_development_dependency "rails", "~> 3.2
|
21
|
+
spec.add_development_dependency "rails", "~> 3.2"
|
22
22
|
|
23
|
-
spec.add_runtime_dependency "momentjs-rails", "~> 2.
|
23
|
+
spec.add_runtime_dependency "momentjs-rails", "~> 2.7"
|
24
24
|
end
|
@@ -1,540 +1,330 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
(function () {
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
function
|
12
|
-
|
13
|
-
|
1
|
+
//! moment-timezone.js
|
2
|
+
//! version : 0.1.0
|
3
|
+
//! author : Tim Wood
|
4
|
+
//! license : MIT
|
5
|
+
//! github.com/moment/moment-timezone
|
6
|
+
|
7
|
+
(function (root, factory) {
|
8
|
+
"use strict";
|
9
|
+
|
10
|
+
/*global define*/
|
11
|
+
if (typeof define === 'function' && define.amd) {
|
12
|
+
define(['moment'], factory); // AMD
|
13
|
+
} else if (typeof exports === 'object') {
|
14
|
+
module.exports = factory(require('moment')); // Node
|
15
|
+
} else {
|
16
|
+
factory(root.moment); // Browser
|
17
|
+
}
|
18
|
+
}(this, function (moment) {
|
19
|
+
"use strict";
|
14
20
|
|
15
|
-
|
16
|
-
|
17
|
-
ruleSets = {},
|
18
|
-
zones = {},
|
19
|
-
zoneSets = {},
|
20
|
-
links = {},
|
21
|
+
// Do not load moment-timezone a second time.
|
22
|
+
if (moment.tz !== undefined) { return moment; }
|
21
23
|
|
22
|
-
|
23
|
-
|
24
|
-
|
24
|
+
var VERSION = "0.1.0",
|
25
|
+
zones = {},
|
26
|
+
links = {};
|
25
27
|
|
26
|
-
|
27
|
-
|
28
|
+
/************************************
|
29
|
+
Unpacking
|
30
|
+
************************************/
|
28
31
|
|
29
|
-
|
30
|
-
|
31
|
-
return;
|
32
|
+
function charCodeToInt(charCode) {
|
33
|
+
if (charCode > 96) {
|
34
|
+
return charCode - 87;
|
35
|
+
} else if (charCode > 64) {
|
36
|
+
return charCode - 29;
|
32
37
|
}
|
38
|
+
return charCode - 48;
|
39
|
+
}
|
33
40
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
41
|
+
function unpackBase60(string) {
|
42
|
+
var i = 0,
|
43
|
+
parts = string.split('.'),
|
44
|
+
whole = parts[0],
|
45
|
+
fractional = parts[1] || '',
|
46
|
+
multiplier = 1,
|
47
|
+
num,
|
48
|
+
out = 0,
|
49
|
+
sign = 1;
|
50
|
+
|
51
|
+
// handle negative numbers
|
52
|
+
if (string.charCodeAt(0) === 45) {
|
53
|
+
i = 1;
|
54
|
+
sign = -1;
|
44
55
|
}
|
45
56
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
function Rule (name, startYear, endYear, month, day, dayRule, time, timeRule, offset, letters) {
|
51
|
-
this.name = name;
|
52
|
-
this.startYear = +startYear;
|
53
|
-
this.endYear = +endYear;
|
54
|
-
this.month = +month;
|
55
|
-
this.day = +day;
|
56
|
-
this.dayRule = +dayRule;
|
57
|
-
this.time = parseMinutes(time);
|
58
|
-
this.timeRule = +timeRule;
|
59
|
-
this.offset = parseMinutes(offset);
|
60
|
-
this.letters = letters || '';
|
61
|
-
this.date = memoize(this.date);
|
62
|
-
this.weekdayAfter = memoize(this.weekdayAfter);
|
63
|
-
this.lastWeekday = memoize(this.lastWeekday);
|
57
|
+
// handle digits before the decimal
|
58
|
+
for (i; i < whole.length; i++) {
|
59
|
+
num = charCodeToInt(whole.charCodeAt(i));
|
60
|
+
out = 60 * out + num;
|
64
61
|
}
|
65
62
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
year = Math.min(Math.max(year, this.startYear), this.endYear);
|
73
|
-
return moment.utc([year, this.month, this.date(year), 0, this.time]);
|
74
|
-
},
|
75
|
-
|
76
|
-
date : function (year) {
|
77
|
-
if (this.dayRule === DAY_RULE_DAY_OF_MONTH) {
|
78
|
-
return this.day;
|
79
|
-
} else if (this.dayRule === DAY_RULE_LAST_WEEKDAY) {
|
80
|
-
return this.lastWeekday(year);
|
81
|
-
}
|
82
|
-
return this.weekdayAfter(year);
|
83
|
-
},
|
84
|
-
|
85
|
-
weekdayAfter : function (year) {
|
86
|
-
var day = this.day,
|
87
|
-
firstDayOfWeek = moment([year, this.month, 1]).day(),
|
88
|
-
output = this.dayRule + 1 - firstDayOfWeek;
|
89
|
-
|
90
|
-
while (output < day) {
|
91
|
-
output += 7;
|
92
|
-
}
|
93
|
-
|
94
|
-
return output;
|
95
|
-
},
|
96
|
-
|
97
|
-
lastWeekday : function (year) {
|
98
|
-
var day = this.day,
|
99
|
-
dow = day % 7,
|
100
|
-
lastDowOfMonth = moment([year, this.month + 1, 1]).day(),
|
101
|
-
daysInMonth = moment([year, this.month, 1]).daysInMonth(),
|
102
|
-
output = daysInMonth + (dow - (lastDowOfMonth - 1)) - (~~(day / 7) * 7);
|
103
|
-
|
104
|
-
if (dow >= lastDowOfMonth) {
|
105
|
-
output -= 7;
|
106
|
-
}
|
107
|
-
return output;
|
108
|
-
}
|
109
|
-
};
|
63
|
+
// handle digits after the decimal
|
64
|
+
for (i = 0; i < fractional.length; i++) {
|
65
|
+
multiplier = multiplier / 60;
|
66
|
+
num = charCodeToInt(fractional.charCodeAt(i));
|
67
|
+
out += num * multiplier;
|
68
|
+
}
|
110
69
|
|
111
|
-
|
112
|
-
|
113
|
-
************************************/
|
70
|
+
return out * sign;
|
71
|
+
}
|
114
72
|
|
115
|
-
|
116
|
-
|
117
|
-
|
73
|
+
function arrayToInt (array) {
|
74
|
+
for (var i = 0; i < array.length; i++) {
|
75
|
+
array[i] = unpackBase60(array[i]);
|
118
76
|
}
|
77
|
+
}
|
119
78
|
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
return false;
|
124
|
-
}
|
125
|
-
return Math.abs(other.start - this.start) < 86400000; // 24 * 60 * 60 * 1000
|
126
|
-
}
|
127
|
-
};
|
128
|
-
|
129
|
-
function sortRuleYears (a, b) {
|
130
|
-
if (a.isLast) {
|
131
|
-
return -1;
|
132
|
-
}
|
133
|
-
if (b.isLast) {
|
134
|
-
return 1;
|
135
|
-
}
|
136
|
-
return b.start - a.start;
|
79
|
+
function intToUntil (array, length) {
|
80
|
+
for (var i = 0; i < length; i++) {
|
81
|
+
array[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds
|
137
82
|
}
|
138
83
|
|
139
|
-
|
140
|
-
|
141
|
-
|
84
|
+
array[length - 1] = Infinity;
|
85
|
+
}
|
86
|
+
|
87
|
+
function mapIndices (source, indices) {
|
88
|
+
var out = [], i;
|
142
89
|
|
143
|
-
|
144
|
-
|
145
|
-
this.rules = [];
|
146
|
-
this.lastYearRule = memoize(this.lastYearRule);
|
90
|
+
for (i = 0; i < indices.length; i++) {
|
91
|
+
out[i] = source[indices[i]];
|
147
92
|
}
|
148
93
|
|
149
|
-
|
150
|
-
|
151
|
-
this.rules.push(rule);
|
152
|
-
},
|
153
|
-
|
154
|
-
ruleYears : function (mom, lastZone) {
|
155
|
-
var i, j,
|
156
|
-
year = mom.year(),
|
157
|
-
rule,
|
158
|
-
lastZoneRule,
|
159
|
-
rules = [];
|
160
|
-
|
161
|
-
for (i = 0; i < this.rules.length; i++) {
|
162
|
-
rule = this.rules[i];
|
163
|
-
if (rule.contains(year)) {
|
164
|
-
rules.push(new RuleYear(year, rule));
|
165
|
-
} else if (rule.contains(year + 1)) {
|
166
|
-
rules.push(new RuleYear(year + 1, rule));
|
167
|
-
}
|
168
|
-
}
|
169
|
-
rules.push(new RuleYear(year - 1, this.lastYearRule(year - 1)));
|
94
|
+
return out;
|
95
|
+
}
|
170
96
|
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
}
|
97
|
+
function unpack (string) {
|
98
|
+
var data = string.split('|'),
|
99
|
+
offsets = data[2].split(' '),
|
100
|
+
indices = data[3].split(''),
|
101
|
+
untils = data[4].split(' ');
|
177
102
|
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
rule : function (mom, offset, lastZone) {
|
183
|
-
var rules = this.ruleYears(mom, lastZone),
|
184
|
-
lastOffset = 0,
|
185
|
-
rule,
|
186
|
-
lastZoneOffset,
|
187
|
-
lastZoneOffsetAbs,
|
188
|
-
lastRule,
|
189
|
-
i;
|
190
|
-
|
191
|
-
if (lastZone) {
|
192
|
-
lastZoneOffset = lastZone.offset + lastZone.lastRule().offset;
|
193
|
-
lastZoneOffsetAbs = Math.abs(lastZoneOffset) * 90000;
|
194
|
-
}
|
103
|
+
arrayToInt(offsets);
|
104
|
+
arrayToInt(indices);
|
105
|
+
arrayToInt(untils);
|
195
106
|
|
196
|
-
|
197
|
-
for (i = rules.length - 1; i > -1; i--) {
|
198
|
-
lastRule = rule;
|
199
|
-
rule = rules[i];
|
107
|
+
intToUntil(untils, indices.length);
|
200
108
|
|
201
|
-
|
202
|
-
|
203
|
-
|
109
|
+
return {
|
110
|
+
name : data[0],
|
111
|
+
abbrs : mapIndices(data[1].split(' '), indices),
|
112
|
+
offsets : mapIndices(offsets, indices),
|
113
|
+
untils : untils
|
114
|
+
};
|
115
|
+
}
|
204
116
|
|
205
|
-
|
206
|
-
|
207
|
-
|
117
|
+
/************************************
|
118
|
+
Zone object
|
119
|
+
************************************/
|
208
120
|
|
209
|
-
|
210
|
-
|
211
|
-
|
121
|
+
function Zone (packedString) {
|
122
|
+
var unpacked = unpack(packedString);
|
123
|
+
this.name = unpacked.name;
|
124
|
+
this.abbrs = unpacked.abbrs;
|
125
|
+
this.untils = unpacked.untils;
|
126
|
+
this.offsets = unpacked.offsets;
|
127
|
+
}
|
212
128
|
|
213
|
-
|
214
|
-
|
215
|
-
|
129
|
+
Zone.prototype = {
|
130
|
+
_index : function (timestamp) {
|
131
|
+
var target = +timestamp,
|
132
|
+
untils = this.untils,
|
133
|
+
i;
|
216
134
|
|
217
|
-
|
135
|
+
for (i = 0; i < untils.length; i++) {
|
136
|
+
if (target < untils[i]) {
|
137
|
+
return i;
|
218
138
|
}
|
139
|
+
}
|
140
|
+
},
|
219
141
|
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
}
|
142
|
+
parse : function (timestamp) {
|
143
|
+
var target = +timestamp,
|
144
|
+
offsets = this.offsets,
|
145
|
+
untils = this.untils,
|
146
|
+
i;
|
226
147
|
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
lastYearRule : function (year) {
|
231
|
-
var i,
|
232
|
-
rule,
|
233
|
-
start,
|
234
|
-
bestRule = defaultRule,
|
235
|
-
largest = -1e30;
|
236
|
-
|
237
|
-
for (i = 0; i < this.rules.length; i++) {
|
238
|
-
rule = this.rules[i];
|
239
|
-
if (year >= rule.startYear) {
|
240
|
-
start = rule.start(year);
|
241
|
-
if (start > largest) {
|
242
|
-
largest = start;
|
243
|
-
bestRule = rule;
|
244
|
-
}
|
245
|
-
}
|
148
|
+
for (i = 0; i < untils.length; i++) {
|
149
|
+
if (target < untils[i] - (offsets[i] * 60000)) {
|
150
|
+
return offsets[i];
|
246
151
|
}
|
247
|
-
|
248
|
-
return bestRule;
|
249
152
|
}
|
250
|
-
}
|
251
|
-
|
252
|
-
/************************************
|
253
|
-
Zone
|
254
|
-
************************************/
|
153
|
+
},
|
255
154
|
|
256
|
-
function
|
257
|
-
|
258
|
-
|
155
|
+
abbr : function (mom) {
|
156
|
+
return this.abbrs[this._index(mom)];
|
157
|
+
},
|
259
158
|
|
260
|
-
|
261
|
-
this.
|
262
|
-
this.ruleSet = ruleSet;
|
263
|
-
this.letters = letters;
|
264
|
-
this.lastRule = memoize(this.lastRule);
|
265
|
-
|
266
|
-
for (i = 0; i < untilArray.length; i++) {
|
267
|
-
untilArray[i] = +untilArray[i];
|
268
|
-
}
|
269
|
-
this.until = moment.utc(untilArray).subtract('m', parseMinutes(untilOffset));
|
159
|
+
offset : function (mom) {
|
160
|
+
return this.offsets[this._index(mom)];
|
270
161
|
}
|
162
|
+
};
|
271
163
|
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
},
|
164
|
+
/************************************
|
165
|
+
Global Methods
|
166
|
+
************************************/
|
276
167
|
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
format : function (rule) {
|
282
|
-
return this.letters.replace("%s", rule.letters);
|
283
|
-
}
|
284
|
-
};
|
168
|
+
function normalizeName (name) {
|
169
|
+
return (name || '').toLowerCase().replace(/\//g, '_');
|
170
|
+
}
|
285
171
|
|
286
|
-
|
287
|
-
|
288
|
-
************************************/
|
172
|
+
function addZone (packed) {
|
173
|
+
var i, zone;
|
289
174
|
|
290
|
-
|
291
|
-
|
175
|
+
if (typeof packed === "string") {
|
176
|
+
packed = [packed];
|
292
177
|
}
|
293
178
|
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
this.zones = [];
|
298
|
-
this.zoneAndRule = memoize(this.zoneAndRule, function (mom) {
|
299
|
-
return +mom;
|
300
|
-
});
|
179
|
+
for (i = 0; i < packed.length; i++) {
|
180
|
+
zone = new Zone(packed[i]);
|
181
|
+
zones[normalizeName(zone.name)] = zone;
|
301
182
|
}
|
183
|
+
}
|
302
184
|
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
zone,
|
307
|
-
lastZone;
|
308
|
-
|
309
|
-
mom = mom.clone().utc();
|
310
|
-
for (i = 0; i < this.zones.length; i++) {
|
311
|
-
zone = this.zones[i];
|
312
|
-
if (mom < zone.until) {
|
313
|
-
break;
|
314
|
-
}
|
315
|
-
lastZone = zone;
|
316
|
-
}
|
317
|
-
|
318
|
-
return [zone, zone.rule(mom, lastZone)];
|
319
|
-
},
|
320
|
-
|
321
|
-
add : function (zone) {
|
322
|
-
this.zones.push(zone);
|
323
|
-
this.zones.sort(sortZones);
|
324
|
-
},
|
185
|
+
function getZone (name) {
|
186
|
+
name = normalizeName(name);
|
187
|
+
var linkName = links[name];
|
325
188
|
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
},
|
189
|
+
if (linkName && zones[linkName]) {
|
190
|
+
name = linkName;
|
191
|
+
}
|
330
192
|
|
331
|
-
|
332
|
-
|
333
|
-
return -(zoneAndRule[0].offset + zoneAndRule[1].offset);
|
334
|
-
}
|
335
|
-
};
|
193
|
+
return zones[name] || null;
|
194
|
+
}
|
336
195
|
|
337
|
-
|
338
|
-
|
339
|
-
************************************/
|
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
|
-
}
|
196
|
+
function getNames () {
|
197
|
+
var i, out = [];
|
350
198
|
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
rule = rules[i];
|
355
|
-
for (j = 0; j < rule.length; j++) {
|
356
|
-
addRule(i + '\t' + rule[j]);
|
357
|
-
}
|
199
|
+
for (i in zones) {
|
200
|
+
if (zones.hasOwnProperty(i) && zones[i]) {
|
201
|
+
out.push(zones[i].name);
|
358
202
|
}
|
359
203
|
}
|
360
204
|
|
361
|
-
|
362
|
-
|
363
|
-
if (rules[ruleString]) {
|
364
|
-
return rules[ruleString];
|
365
|
-
}
|
366
|
-
|
367
|
-
var p = ruleString.split(/\s/),
|
368
|
-
name = normalizeName(p[0]),
|
369
|
-
rule = new Rule(name, p[1], p[2], p[3], p[4], p[5], p[6], p[7], p[8], p[9], p[10]);
|
370
|
-
|
371
|
-
// cache the rule so we don't add it again
|
372
|
-
rules[ruleString] = rule;
|
205
|
+
return out.sort();
|
206
|
+
}
|
373
207
|
|
374
|
-
|
375
|
-
|
208
|
+
function addLink (aliases) {
|
209
|
+
var i, alias;
|
376
210
|
|
377
|
-
|
211
|
+
if (typeof aliases === "string") {
|
212
|
+
aliases = [aliases];
|
378
213
|
}
|
379
214
|
|
380
|
-
|
381
|
-
|
215
|
+
for (i = 0; i < aliases.length; i++) {
|
216
|
+
alias = normalizeName(aliases[i]).split('|');
|
217
|
+
links[alias[0]] = alias[1];
|
218
|
+
links[alias[1]] = alias[0];
|
382
219
|
}
|
220
|
+
}
|
383
221
|
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
addZone(i + '\t' + zone[j]);
|
390
|
-
}
|
391
|
-
}
|
392
|
-
}
|
222
|
+
function loadData (data) {
|
223
|
+
addZone(data.zones);
|
224
|
+
addLink(data.links);
|
225
|
+
tz.dataVersion = data.version;
|
226
|
+
}
|
393
227
|
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
228
|
+
function zoneExists (name) {
|
229
|
+
if (!zoneExists.didShowError) {
|
230
|
+
zoneExists.didShowError = true;
|
231
|
+
if (typeof console !== 'undefined' && typeof console.error === 'function') {
|
232
|
+
console.error("moment.tz.zoneExists('" + name + "') has been deprecated in favor of !moment.tz.zone('" + name + "')");
|
398
233
|
}
|
399
234
|
}
|
235
|
+
return !!getZone(name);
|
236
|
+
}
|
400
237
|
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
return zones[zoneString];
|
405
|
-
}
|
406
|
-
|
407
|
-
var p = zoneString.split(/\s/),
|
408
|
-
name = normalizeName(p[0]),
|
409
|
-
zone = new Zone(name, p[1], getRuleSet(p[2]), p[3], p[4], p[5]);
|
238
|
+
function needsOffset (m) {
|
239
|
+
return !!(m._a && (m._tzm === undefined));
|
240
|
+
}
|
410
241
|
|
411
|
-
|
412
|
-
|
242
|
+
/************************************
|
243
|
+
moment.tz namespace
|
244
|
+
************************************/
|
413
245
|
|
414
|
-
|
415
|
-
|
246
|
+
function tz () {
|
247
|
+
var args = Array.prototype.slice.call(arguments, 0, -1),
|
248
|
+
name = arguments[arguments.length - 1],
|
249
|
+
zone = getZone(name),
|
250
|
+
out = moment.utc.apply(null, args);
|
416
251
|
|
417
|
-
|
252
|
+
if (zone && needsOffset(out)) {
|
253
|
+
out.add('minutes', zone.parse(out));
|
418
254
|
}
|
419
255
|
|
420
|
-
|
421
|
-
name = normalizeName(name);
|
422
|
-
if (!ruleSets[name]) {
|
423
|
-
ruleSets[name] = new RuleSet(name);
|
424
|
-
}
|
425
|
-
return ruleSets[name];
|
426
|
-
}
|
256
|
+
out.tz(name);
|
427
257
|
|
428
|
-
|
429
|
-
|
430
|
-
if (links[machineName]) {
|
431
|
-
machineName = links[machineName];
|
432
|
-
}
|
433
|
-
if (!zoneSets[machineName]) {
|
434
|
-
zoneSets[machineName] = new ZoneSet(name);
|
435
|
-
}
|
436
|
-
return zoneSets[machineName];
|
437
|
-
}
|
438
|
-
|
439
|
-
function add (data) {
|
440
|
-
if (!data) {
|
441
|
-
return;
|
442
|
-
}
|
443
|
-
if (data.zones) {
|
444
|
-
addZones(data.zones);
|
445
|
-
}
|
446
|
-
if (data.rules) {
|
447
|
-
addRules(data.rules);
|
448
|
-
}
|
449
|
-
if (data.links) {
|
450
|
-
addLinks(data.links);
|
451
|
-
}
|
452
|
-
}
|
453
|
-
|
454
|
-
// overwrite moment.updateOffset
|
455
|
-
moment.updateOffset = function (mom, keepTime) {
|
456
|
-
var offset;
|
457
|
-
if (mom._z) {
|
458
|
-
offset = mom._z.offset(mom);
|
459
|
-
if (Math.abs(offset) < 16) {
|
460
|
-
offset = offset / 60;
|
461
|
-
}
|
462
|
-
mom.zone(offset, keepTime);
|
463
|
-
}
|
464
|
-
};
|
258
|
+
return out;
|
259
|
+
}
|
465
260
|
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
261
|
+
tz.version = VERSION;
|
262
|
+
tz.dataVersion = '';
|
263
|
+
tz._zones = zones;
|
264
|
+
tz._links = links;
|
265
|
+
tz.add = addZone;
|
266
|
+
tz.link = addLink;
|
267
|
+
tz.load = loadData;
|
268
|
+
tz.zone = getZone;
|
269
|
+
tz.zoneExists = zoneExists; // deprecated in 0.1.0
|
270
|
+
tz.names = getNames;
|
271
|
+
tz.Zone = Zone;
|
272
|
+
tz.unpack = unpack;
|
273
|
+
tz.unpackBase60 = unpackBase60;
|
274
|
+
tz.needsOffset = needsOffset;
|
275
|
+
|
276
|
+
/************************************
|
277
|
+
Interface with Moment.js
|
278
|
+
************************************/
|
279
|
+
|
280
|
+
var fn = moment.fn;
|
281
|
+
|
282
|
+
moment.tz = tz;
|
283
|
+
|
284
|
+
moment.updateOffset = function (mom, keepTime) {
|
285
|
+
var offset;
|
286
|
+
if (mom._z) {
|
287
|
+
offset = mom._z.offset(mom);
|
288
|
+
if (Math.abs(offset) < 16) {
|
289
|
+
offset = offset / 60;
|
471
290
|
}
|
472
|
-
|
291
|
+
mom.zone(offset, keepTime);
|
473
292
|
}
|
293
|
+
};
|
474
294
|
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
if (this._z) {
|
479
|
-
moment.updateOffset(this);
|
480
|
-
}
|
481
|
-
return this;
|
482
|
-
}
|
483
|
-
if (this._z) {
|
484
|
-
return this._z.displayName;
|
485
|
-
}
|
486
|
-
};
|
487
|
-
|
488
|
-
moment.fn.zoneName = function () {
|
295
|
+
fn.tz = function (name) {
|
296
|
+
if (name) {
|
297
|
+
this._z = getZone(name);
|
489
298
|
if (this._z) {
|
490
|
-
|
299
|
+
moment.updateOffset(this);
|
491
300
|
}
|
492
|
-
return
|
493
|
-
}
|
301
|
+
return this;
|
302
|
+
}
|
303
|
+
if (this._z) { return this._z.name; }
|
304
|
+
};
|
494
305
|
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
return oldZoneAbbr.call(this);
|
306
|
+
function abbrWrap (old) {
|
307
|
+
return function () {
|
308
|
+
if (this._z) { return this._z.abbr(this); }
|
309
|
+
return old.call(this);
|
500
310
|
};
|
311
|
+
}
|
501
312
|
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
var args = [], i, len = arguments.length - 1;
|
507
|
-
for (i = 0; i < len; i++) {
|
508
|
-
args[i] = arguments[i];
|
509
|
-
}
|
510
|
-
var m = moment.apply(null, args);
|
511
|
-
var preTzOffset = m.zone();
|
512
|
-
m.tz(arguments[len]);
|
513
|
-
return m.add('minutes', m.zone() - preTzOffset);
|
313
|
+
function resetZoneWrap (old) {
|
314
|
+
return function () {
|
315
|
+
this._z = null;
|
316
|
+
return old.call(this);
|
514
317
|
};
|
318
|
+
}
|
515
319
|
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
moment.tz.zones = getZoneSets;
|
520
|
-
|
521
|
-
moment.tz.version = VERSION;
|
522
|
-
|
523
|
-
moment.tz.zoneExists = function (name) {
|
524
|
-
return getZoneSet(name).zones.length > 0;
|
525
|
-
};
|
320
|
+
fn.zoneName = abbrWrap(fn.zoneName);
|
321
|
+
fn.zoneAbbr = abbrWrap(fn.zoneAbbr);
|
322
|
+
fn.utc = resetZoneWrap(fn.utc);
|
526
323
|
|
527
|
-
|
528
|
-
|
324
|
+
// Cloning a moment should include the _z property.
|
325
|
+
moment.momentProperties._z = null;
|
529
326
|
|
530
|
-
|
531
|
-
}
|
327
|
+
// INJECT DATA
|
532
328
|
|
533
|
-
|
534
|
-
|
535
|
-
} else if (typeof module !== 'undefined') {
|
536
|
-
module.exports = onload(require('moment'));
|
537
|
-
} else if (typeof window !== "undefined" && window.moment) {
|
538
|
-
onload(window.moment);
|
539
|
-
}
|
540
|
-
}).apply(this);
|
329
|
+
return moment;
|
330
|
+
}));
|