local_time 1.0.2 → 1.0.3
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 +11 -0
- data/app/assets/javascripts/local_time.js.coffee +20 -1
- data/test/javascripts/fixtures/body.html +8 -0
- data/test/javascripts/{local_time → src}/local_time_test.js.coffee +0 -0
- data/test/javascripts/{local_time → src}/page_events_test.js.coffee +0 -0
- data/test/javascripts/{local_time → src}/public_api_test.js.coffee +0 -0
- data/test/javascripts/{local_time → src}/relative_date_test.js.coffee +0 -0
- data/test/javascripts/{local_time → src}/strftime_test.js.coffee +1 -2
- data/test/javascripts/{local_time/index.js.coffee → src/test.js.coffee} +2 -4
- data/test/javascripts/{local_time → src}/time_ago_test.js.coffee +0 -0
- metadata +47 -27
- data/test/javascripts/runner/config.ru +0 -19
- data/test/javascripts/runner/index.html +0 -20
- data/test/javascripts/vendor/qunit.css +0 -244
- data/test/javascripts/vendor/qunit.js +0 -2212
- data/test/javascripts/vendor/run-qunit.coffee +0 -50
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e386d2a684296b0e7489cc13bee76a7df4495474
|
4
|
+
data.tar.gz: 1167fdacc381765bc7ef5cf31499e9c46c23083c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f66918a56f5cb8c3be57c99537a1d054f7a10a6bedf2a309c320da407025e1f2b9b1f3410c60e5f532e3ffacc378bf65183b705253bdbd8d08e7023c741483c2
|
7
|
+
data.tar.gz: 954b8526c0846718f9bfe0e81eb1660a02399cf76cf9e5cb056bdc492e38abd0c13feb2c22ba09d93c6969457354f25c1cbf1752e34c3b3888f2b6362afd2221
|
data/README.md
CHANGED
@@ -127,6 +127,11 @@ The included JavaScript does not depend on any frameworks or libraries, and list
|
|
127
127
|
|
128
128
|
#### Version History
|
129
129
|
|
130
|
+
**1.0.3**
|
131
|
+
|
132
|
+
* Improve `%Z` time zone parsing
|
133
|
+
* Use [Blade](https://github.com/javan/blade) runner for JavaScript tests
|
134
|
+
|
130
135
|
**1.0.2** (February 3, 2015)
|
131
136
|
|
132
137
|
* Fix displaying future relative dates [Cezary Baginski]
|
@@ -156,3 +161,9 @@ The included JavaScript does not depend on any frameworks or libraries, and list
|
|
156
161
|
**0.1.0** (November 29, 2013)
|
157
162
|
|
158
163
|
* Initial release.
|
164
|
+
|
165
|
+
---
|
166
|
+
|
167
|
+
[](https://travis-ci.org/basecamp/local_time)
|
168
|
+
|
169
|
+
[](https://saucelabs.com/u/basecamp_local_time)
|
@@ -21,6 +21,25 @@ months = "January February March April May June July August September October
|
|
21
21
|
|
22
22
|
pad = (num) -> ('0' + num).slice -2
|
23
23
|
|
24
|
+
parseTimeZone = (time) ->
|
25
|
+
string = time.toString()
|
26
|
+
# Sun Aug 30 2015 10:22:57 GMT-0400 (NAME)
|
27
|
+
if name = string.match(/\(([\w\s]+)\)$/)?[1]
|
28
|
+
if /\s/.test(name)
|
29
|
+
# Sun Aug 30 2015 10:22:57 GMT-0400 (Eastern Daylight Time)
|
30
|
+
name.match(/\b(\w)/g).join("")
|
31
|
+
else
|
32
|
+
# Sun Aug 30 2015 10:22:57 GMT-0400 (EDT)
|
33
|
+
name
|
34
|
+
# Sun Aug 30 10:22:57 EDT 2015
|
35
|
+
else if name = string.match(/(\w{3,4})\s\d{4}$/)?[1]
|
36
|
+
name
|
37
|
+
# "Sun Aug 30 10:22:57 UTC-0400 2015"
|
38
|
+
else if name = string.match(/(UTC[\+\-]\d+)/)?[1]
|
39
|
+
name
|
40
|
+
else
|
41
|
+
""
|
42
|
+
|
24
43
|
strftime = (time, formatString) ->
|
25
44
|
day = time.getDay()
|
26
45
|
date = time.getDate()
|
@@ -51,7 +70,7 @@ strftime = (time, formatString) ->
|
|
51
70
|
when 'w' then day
|
52
71
|
when 'y' then pad year % 100
|
53
72
|
when 'Y' then year
|
54
|
-
when 'Z' then time
|
73
|
+
when 'Z' then parseTimeZone(time)
|
55
74
|
|
56
75
|
|
57
76
|
class CalendarDate
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<time id="one" data-format="%B %e, %Y %l:%M%P" data-local="time" datetime="2013-11-12T12:13:00Z"></time>
|
2
|
+
<time id="two" data-format="%B %e, %Y %l:%M%P" data-local="time" datetime="2013-01-02T02:04:00Z"></time>
|
3
|
+
<time id="past" data-format="%B %e, %Y %l:%M%P" data-local="time" datetime="1805-05-15T01:01:00Z"></time>
|
4
|
+
<time id="future" data-format="%B %e, %Y %l:%M%P" data-local="time" datetime="3333-02-14T23:55:00Z"></time>
|
5
|
+
|
6
|
+
<time id="date" data-format="%B %e, %Y" data-local="time" datetime="2013-11-12T12:13:00Z"></time>
|
7
|
+
|
8
|
+
<time id="ago"></time>
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: local_time
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Javan Makhmali
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-08-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: coffee-rails
|
@@ -53,6 +53,34 @@ dependencies:
|
|
53
53
|
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: blade
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 0.3.0
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 0.3.0
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: blade-sauce_labs_plugin
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - "~>"
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 0.3.0
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - "~>"
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: 0.3.0
|
56
84
|
description:
|
57
85
|
email: javan@basecamp.com
|
58
86
|
executables: []
|
@@ -65,19 +93,15 @@ files:
|
|
65
93
|
- app/helpers/local_time_helper.rb
|
66
94
|
- lib/local_time.rb
|
67
95
|
- test/helpers/local_time_helper_test.rb
|
68
|
-
- test/javascripts/
|
69
|
-
- test/javascripts/
|
70
|
-
- test/javascripts/
|
71
|
-
- test/javascripts/
|
72
|
-
- test/javascripts/
|
73
|
-
- test/javascripts/
|
74
|
-
- test/javascripts/
|
75
|
-
- test/javascripts/
|
76
|
-
- test/javascripts/runner/index.html
|
96
|
+
- test/javascripts/fixtures/body.html
|
97
|
+
- test/javascripts/src/local_time_test.js.coffee
|
98
|
+
- test/javascripts/src/page_events_test.js.coffee
|
99
|
+
- test/javascripts/src/public_api_test.js.coffee
|
100
|
+
- test/javascripts/src/relative_date_test.js.coffee
|
101
|
+
- test/javascripts/src/strftime_test.js.coffee
|
102
|
+
- test/javascripts/src/test.js.coffee
|
103
|
+
- test/javascripts/src/time_ago_test.js.coffee
|
77
104
|
- test/javascripts/vendor/moment.js
|
78
|
-
- test/javascripts/vendor/qunit.css
|
79
|
-
- test/javascripts/vendor/qunit.js
|
80
|
-
- test/javascripts/vendor/run-qunit.coffee
|
81
105
|
- test/javascripts/vendor/sinon-timers.js
|
82
106
|
homepage:
|
83
107
|
licenses:
|
@@ -99,23 +123,19 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
99
123
|
version: '0'
|
100
124
|
requirements: []
|
101
125
|
rubyforge_project:
|
102
|
-
rubygems_version: 2.
|
126
|
+
rubygems_version: 2.4.6
|
103
127
|
signing_key:
|
104
128
|
specification_version: 4
|
105
129
|
summary: Rails engine for cache-friendly, client-side local time
|
106
130
|
test_files:
|
107
131
|
- test/helpers/local_time_helper_test.rb
|
108
|
-
- test/javascripts/
|
109
|
-
- test/javascripts/
|
110
|
-
- test/javascripts/
|
111
|
-
- test/javascripts/
|
112
|
-
- test/javascripts/
|
113
|
-
- test/javascripts/
|
114
|
-
- test/javascripts/
|
115
|
-
- test/javascripts/
|
116
|
-
- test/javascripts/runner/index.html
|
132
|
+
- test/javascripts/fixtures/body.html
|
133
|
+
- test/javascripts/src/local_time_test.js.coffee
|
134
|
+
- test/javascripts/src/page_events_test.js.coffee
|
135
|
+
- test/javascripts/src/public_api_test.js.coffee
|
136
|
+
- test/javascripts/src/relative_date_test.js.coffee
|
137
|
+
- test/javascripts/src/strftime_test.js.coffee
|
138
|
+
- test/javascripts/src/test.js.coffee
|
139
|
+
- test/javascripts/src/time_ago_test.js.coffee
|
117
140
|
- test/javascripts/vendor/moment.js
|
118
|
-
- test/javascripts/vendor/qunit.css
|
119
|
-
- test/javascripts/vendor/qunit.js
|
120
|
-
- test/javascripts/vendor/run-qunit.coffee
|
121
141
|
- test/javascripts/vendor/sinon-timers.js
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'sprockets'
|
2
|
-
require 'coffee-rails'
|
3
|
-
|
4
|
-
Root = File.expand_path("../../../..", __FILE__)
|
5
|
-
|
6
|
-
Assets = Sprockets::Environment.new(Root) do |env|
|
7
|
-
env.append_path "app/assets/javascripts"
|
8
|
-
env.append_path "test/javascripts"
|
9
|
-
end
|
10
|
-
|
11
|
-
map "/css" do
|
12
|
-
run Assets
|
13
|
-
end
|
14
|
-
|
15
|
-
map "/js" do
|
16
|
-
run Assets
|
17
|
-
end
|
18
|
-
|
19
|
-
map("/") { run Rack::File.new("#{Root}/test/javascripts/runner") }
|
@@ -1,20 +0,0 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
<html>
|
3
|
-
<head>
|
4
|
-
<meta charset="utf-8">
|
5
|
-
<link rel="stylesheet" href="/css/vendor/qunit.css">
|
6
|
-
<script type="text/javascript" src="/js/local_time/index.js"></script>
|
7
|
-
</head>
|
8
|
-
<body>
|
9
|
-
<div id="qunit"></div>
|
10
|
-
<div id="qunit-fixture"></div>
|
11
|
-
|
12
|
-
<time id="one" data-format="%B %e, %Y %l:%M%P" data-local="time" datetime="2013-11-12T12:13:00Z"></time>
|
13
|
-
<time id="two" data-format="%B %e, %Y %l:%M%P" data-local="time" datetime="2013-01-02T02:04:00Z"></time>
|
14
|
-
<time id="past" data-format="%B %e, %Y %l:%M%P" data-local="time" datetime="1805-05-15T01:01:00Z"></time>
|
15
|
-
<time id="future" data-format="%B %e, %Y %l:%M%P" data-local="time" datetime="3333-02-14T23:55:00Z"></time>
|
16
|
-
|
17
|
-
<time id="date" data-format="%B %e, %Y" data-local="time" datetime="2013-11-12T12:13:00Z"></time>
|
18
|
-
|
19
|
-
<time id="ago"></time>
|
20
|
-
</html>
|
@@ -1,244 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* QUnit v1.12.0 - A JavaScript Unit Testing Framework
|
3
|
-
*
|
4
|
-
* http://qunitjs.com
|
5
|
-
*
|
6
|
-
* Copyright 2012 jQuery Foundation and other contributors
|
7
|
-
* Released under the MIT license.
|
8
|
-
* http://jquery.org/license
|
9
|
-
*/
|
10
|
-
|
11
|
-
/** Font Family and Sizes */
|
12
|
-
|
13
|
-
#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
|
14
|
-
font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
|
15
|
-
}
|
16
|
-
|
17
|
-
#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
|
18
|
-
#qunit-tests { font-size: smaller; }
|
19
|
-
|
20
|
-
|
21
|
-
/** Resets */
|
22
|
-
|
23
|
-
#qunit-tests, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter {
|
24
|
-
margin: 0;
|
25
|
-
padding: 0;
|
26
|
-
}
|
27
|
-
|
28
|
-
|
29
|
-
/** Header */
|
30
|
-
|
31
|
-
#qunit-header {
|
32
|
-
padding: 0.5em 0 0.5em 1em;
|
33
|
-
|
34
|
-
color: #8699a4;
|
35
|
-
background-color: #0d3349;
|
36
|
-
|
37
|
-
font-size: 1.5em;
|
38
|
-
line-height: 1em;
|
39
|
-
font-weight: normal;
|
40
|
-
|
41
|
-
border-radius: 5px 5px 0 0;
|
42
|
-
-moz-border-radius: 5px 5px 0 0;
|
43
|
-
-webkit-border-top-right-radius: 5px;
|
44
|
-
-webkit-border-top-left-radius: 5px;
|
45
|
-
}
|
46
|
-
|
47
|
-
#qunit-header a {
|
48
|
-
text-decoration: none;
|
49
|
-
color: #c2ccd1;
|
50
|
-
}
|
51
|
-
|
52
|
-
#qunit-header a:hover,
|
53
|
-
#qunit-header a:focus {
|
54
|
-
color: #fff;
|
55
|
-
}
|
56
|
-
|
57
|
-
#qunit-testrunner-toolbar label {
|
58
|
-
display: inline-block;
|
59
|
-
padding: 0 .5em 0 .1em;
|
60
|
-
}
|
61
|
-
|
62
|
-
#qunit-banner {
|
63
|
-
height: 5px;
|
64
|
-
}
|
65
|
-
|
66
|
-
#qunit-testrunner-toolbar {
|
67
|
-
padding: 0.5em 0 0.5em 2em;
|
68
|
-
color: #5E740B;
|
69
|
-
background-color: #eee;
|
70
|
-
overflow: hidden;
|
71
|
-
}
|
72
|
-
|
73
|
-
#qunit-userAgent {
|
74
|
-
padding: 0.5em 0 0.5em 2.5em;
|
75
|
-
background-color: #2b81af;
|
76
|
-
color: #fff;
|
77
|
-
text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
|
78
|
-
}
|
79
|
-
|
80
|
-
#qunit-modulefilter-container {
|
81
|
-
float: right;
|
82
|
-
}
|
83
|
-
|
84
|
-
/** Tests: Pass/Fail */
|
85
|
-
|
86
|
-
#qunit-tests {
|
87
|
-
list-style-position: inside;
|
88
|
-
}
|
89
|
-
|
90
|
-
#qunit-tests li {
|
91
|
-
padding: 0.4em 0.5em 0.4em 2.5em;
|
92
|
-
border-bottom: 1px solid #fff;
|
93
|
-
list-style-position: inside;
|
94
|
-
}
|
95
|
-
|
96
|
-
#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running {
|
97
|
-
display: none;
|
98
|
-
}
|
99
|
-
|
100
|
-
#qunit-tests li strong {
|
101
|
-
cursor: pointer;
|
102
|
-
}
|
103
|
-
|
104
|
-
#qunit-tests li a {
|
105
|
-
padding: 0.5em;
|
106
|
-
color: #c2ccd1;
|
107
|
-
text-decoration: none;
|
108
|
-
}
|
109
|
-
#qunit-tests li a:hover,
|
110
|
-
#qunit-tests li a:focus {
|
111
|
-
color: #000;
|
112
|
-
}
|
113
|
-
|
114
|
-
#qunit-tests li .runtime {
|
115
|
-
float: right;
|
116
|
-
font-size: smaller;
|
117
|
-
}
|
118
|
-
|
119
|
-
.qunit-assert-list {
|
120
|
-
margin-top: 0.5em;
|
121
|
-
padding: 0.5em;
|
122
|
-
|
123
|
-
background-color: #fff;
|
124
|
-
|
125
|
-
border-radius: 5px;
|
126
|
-
-moz-border-radius: 5px;
|
127
|
-
-webkit-border-radius: 5px;
|
128
|
-
}
|
129
|
-
|
130
|
-
.qunit-collapsed {
|
131
|
-
display: none;
|
132
|
-
}
|
133
|
-
|
134
|
-
#qunit-tests table {
|
135
|
-
border-collapse: collapse;
|
136
|
-
margin-top: .2em;
|
137
|
-
}
|
138
|
-
|
139
|
-
#qunit-tests th {
|
140
|
-
text-align: right;
|
141
|
-
vertical-align: top;
|
142
|
-
padding: 0 .5em 0 0;
|
143
|
-
}
|
144
|
-
|
145
|
-
#qunit-tests td {
|
146
|
-
vertical-align: top;
|
147
|
-
}
|
148
|
-
|
149
|
-
#qunit-tests pre {
|
150
|
-
margin: 0;
|
151
|
-
white-space: pre-wrap;
|
152
|
-
word-wrap: break-word;
|
153
|
-
}
|
154
|
-
|
155
|
-
#qunit-tests del {
|
156
|
-
background-color: #e0f2be;
|
157
|
-
color: #374e0c;
|
158
|
-
text-decoration: none;
|
159
|
-
}
|
160
|
-
|
161
|
-
#qunit-tests ins {
|
162
|
-
background-color: #ffcaca;
|
163
|
-
color: #500;
|
164
|
-
text-decoration: none;
|
165
|
-
}
|
166
|
-
|
167
|
-
/*** Test Counts */
|
168
|
-
|
169
|
-
#qunit-tests b.counts { color: black; }
|
170
|
-
#qunit-tests b.passed { color: #5E740B; }
|
171
|
-
#qunit-tests b.failed { color: #710909; }
|
172
|
-
|
173
|
-
#qunit-tests li li {
|
174
|
-
padding: 5px;
|
175
|
-
background-color: #fff;
|
176
|
-
border-bottom: none;
|
177
|
-
list-style-position: inside;
|
178
|
-
}
|
179
|
-
|
180
|
-
/*** Passing Styles */
|
181
|
-
|
182
|
-
#qunit-tests li li.pass {
|
183
|
-
color: #3c510c;
|
184
|
-
background-color: #fff;
|
185
|
-
border-left: 10px solid #C6E746;
|
186
|
-
}
|
187
|
-
|
188
|
-
#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; }
|
189
|
-
#qunit-tests .pass .test-name { color: #366097; }
|
190
|
-
|
191
|
-
#qunit-tests .pass .test-actual,
|
192
|
-
#qunit-tests .pass .test-expected { color: #999999; }
|
193
|
-
|
194
|
-
#qunit-banner.qunit-pass { background-color: #C6E746; }
|
195
|
-
|
196
|
-
/*** Failing Styles */
|
197
|
-
|
198
|
-
#qunit-tests li li.fail {
|
199
|
-
color: #710909;
|
200
|
-
background-color: #fff;
|
201
|
-
border-left: 10px solid #EE5757;
|
202
|
-
white-space: pre;
|
203
|
-
}
|
204
|
-
|
205
|
-
#qunit-tests > li:last-child {
|
206
|
-
border-radius: 0 0 5px 5px;
|
207
|
-
-moz-border-radius: 0 0 5px 5px;
|
208
|
-
-webkit-border-bottom-right-radius: 5px;
|
209
|
-
-webkit-border-bottom-left-radius: 5px;
|
210
|
-
}
|
211
|
-
|
212
|
-
#qunit-tests .fail { color: #000000; background-color: #EE5757; }
|
213
|
-
#qunit-tests .fail .test-name,
|
214
|
-
#qunit-tests .fail .module-name { color: #000000; }
|
215
|
-
|
216
|
-
#qunit-tests .fail .test-actual { color: #EE5757; }
|
217
|
-
#qunit-tests .fail .test-expected { color: green; }
|
218
|
-
|
219
|
-
#qunit-banner.qunit-fail { background-color: #EE5757; }
|
220
|
-
|
221
|
-
|
222
|
-
/** Result */
|
223
|
-
|
224
|
-
#qunit-testresult {
|
225
|
-
padding: 0.5em 0.5em 0.5em 2.5em;
|
226
|
-
|
227
|
-
color: #2b81af;
|
228
|
-
background-color: #D2E0E6;
|
229
|
-
|
230
|
-
border-bottom: 1px solid white;
|
231
|
-
}
|
232
|
-
#qunit-testresult .module-name {
|
233
|
-
font-weight: bold;
|
234
|
-
}
|
235
|
-
|
236
|
-
/** Fixture */
|
237
|
-
|
238
|
-
#qunit-fixture {
|
239
|
-
position: absolute;
|
240
|
-
top: -10000px;
|
241
|
-
left: -10000px;
|
242
|
-
width: 1000px;
|
243
|
-
height: 1000px;
|
244
|
-
}
|