spanner-lfittl 0.0.4 → 0.0.5

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.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- spanner-lfittl (0.0.3)
4
+ spanner-lfittl (0.0.4)
5
5
  activesupport
6
6
  spanner-lfittl
7
7
 
@@ -2,6 +2,14 @@
2
2
 
3
3
  Easy way to parse natural language time spans as periods expressed in seconds. Supports float point notions of spans as well.
4
4
 
5
+ == Installation
6
+
7
+ gem install spanner-lfittl
8
+
9
+ or add this to your Gemfile:
10
+
11
+ gem 'spanner-lfittl', :require => 'spanner'
12
+
5
13
  == Usage
6
14
 
7
15
  require 'spanner'
@@ -15,6 +23,9 @@ Easy way to parse natural language time spans as periods expressed in seconds. S
15
23
  Spanner.format(83520)
16
24
  => '23 hours 12 minutes'
17
25
 
26
+ Spanner.format(83520, :biggest_unit => :minutes)
27
+ => '1392 minutes'
28
+
18
29
  == Authors
19
30
 
20
31
  Original author:
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.4
1
+ 0.0.5
@@ -19,6 +19,7 @@ class Spanner
19
19
  @value = value
20
20
  @on_error = opts && opts.key?(:on_error) ? opts[:on_error] : :raise
21
21
  @length_of_month = opts && opts[:length_of_month]
22
+ @biggest_unit = ((opts && opts[:biggest_unit]) || "years").to_s.downcase.to_sym
22
23
 
23
24
  @from = if opts && opts.key?(:from)
24
25
  case opts[:from]
@@ -98,13 +99,16 @@ class Spanner
98
99
  def format(distance)
99
100
  distance = distance.to_i
100
101
 
102
+ units = [:years, :months, :weeks, :days, :hours, :minutes]
103
+ biggest_unit = units.index(@biggest_unit) || 0
104
+
101
105
  parts = {}
102
- parts[:years], distance = distance.divmod(31_556_926)
103
- parts[:months], distance = distance.divmod(length_of_month)
104
- parts[:weeks], distance = distance.divmod(604_800)
105
- parts[:days], distance = distance.divmod(86_400)
106
- parts[:hours], distance = distance.divmod(3600)
107
- parts[:minutes], parts[:seconds] = distance.divmod(60)
106
+ parts[:years], distance = distance.divmod(31_556_926) unless biggest_unit > units.index(:years)
107
+ parts[:months], distance = distance.divmod(length_of_month) unless biggest_unit > units.index(:months)
108
+ parts[:weeks], distance = distance.divmod(604_800) unless biggest_unit > units.index(:weeks)
109
+ parts[:days], distance = distance.divmod(86_400) unless biggest_unit > units.index(:days)
110
+ parts[:hours], distance = distance.divmod(3600) unless biggest_unit > units.index(:hours)
111
+ parts[:minutes], parts[:seconds] = distance.divmod(60) unless biggest_unit > units.index(:minutes)
108
112
 
109
113
  output = []
110
114
  parts.each do |name, value|
@@ -55,4 +55,13 @@ describe Spanner, "format" do
55
55
  Spanner.format(input).should == output
56
56
  end
57
57
  end
58
+
59
+ it "should be possible to restrict the biggest unit" do
60
+ Spanner.format(3600*24*50).should == "1 month 2 weeks 5 days"
61
+ Spanner.format(3600*24*50, :biggest_unit => :days).should == "50 days"
62
+ end
63
+
64
+ it "should default to no restriction if invalid biggest unit is supplied" do
65
+ Spanner.format(3600*24*14, :biggest_unit => "LALA").should == "2 weeks"
66
+ end
58
67
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spanner-lfittl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -14,7 +14,7 @@ date: 2012-08-07 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: spanner-lfittl
17
- requirement: &2156119100 !ruby/object:Gem::Requirement
17
+ requirement: &2156930980 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2156119100
25
+ version_requirements: *2156930980
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: jeweler
28
- requirement: &2156117700 !ruby/object:Gem::Requirement
28
+ requirement: &2156930480 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
- version_requirements: *2156117700
36
+ version_requirements: *2156930480
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: rake
39
- requirement: &2155997880 !ruby/object:Gem::Requirement
39
+ requirement: &2156930000 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: '0'
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *2155997880
47
+ version_requirements: *2156930000
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: rspec
50
- requirement: &2155964700 !ruby/object:Gem::Requirement
50
+ requirement: &2156929520 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: '0'
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *2155964700
58
+ version_requirements: *2156929520
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: jeweler
61
- requirement: &2155946780 !ruby/object:Gem::Requirement
61
+ requirement: &2156929040 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ! '>='
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: '0'
67
67
  type: :development
68
68
  prerelease: false
69
- version_requirements: *2155946780
69
+ version_requirements: *2156929040
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rake
72
- requirement: &2155945760 !ruby/object:Gem::Requirement
72
+ requirement: &2156928540 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ! '>='
@@ -77,10 +77,10 @@ dependencies:
77
77
  version: '0'
78
78
  type: :development
79
79
  prerelease: false
80
- version_requirements: *2155945760
80
+ version_requirements: *2156928540
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: rspec
83
- requirement: &2155944920 !ruby/object:Gem::Requirement
83
+ requirement: &2156847620 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - ! '>='
@@ -88,10 +88,10 @@ dependencies:
88
88
  version: '0'
89
89
  type: :development
90
90
  prerelease: false
91
- version_requirements: *2155944920
91
+ version_requirements: *2156847620
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: jeweler
94
- requirement: &2155944280 !ruby/object:Gem::Requirement
94
+ requirement: &2156847020 !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements:
97
97
  - - ! '>='
@@ -99,10 +99,10 @@ dependencies:
99
99
  version: '0'
100
100
  type: :development
101
101
  prerelease: false
102
- version_requirements: *2155944280
102
+ version_requirements: *2156847020
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: rake
105
- requirement: &2155943560 !ruby/object:Gem::Requirement
105
+ requirement: &2156846420 !ruby/object:Gem::Requirement
106
106
  none: false
107
107
  requirements:
108
108
  - - ! '>='
@@ -110,10 +110,10 @@ dependencies:
110
110
  version: '0'
111
111
  type: :development
112
112
  prerelease: false
113
- version_requirements: *2155943560
113
+ version_requirements: *2156846420
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: rspec
116
- requirement: &2155943000 !ruby/object:Gem::Requirement
116
+ requirement: &2156845820 !ruby/object:Gem::Requirement
117
117
  none: false
118
118
  requirements:
119
119
  - - ! '>='
@@ -121,10 +121,43 @@ dependencies:
121
121
  version: '0'
122
122
  type: :development
123
123
  prerelease: false
124
- version_requirements: *2155943000
124
+ version_requirements: *2156845820
125
+ - !ruby/object:Gem::Dependency
126
+ name: jeweler
127
+ requirement: &2156845220 !ruby/object:Gem::Requirement
128
+ none: false
129
+ requirements:
130
+ - - ! '>='
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: *2156845220
136
+ - !ruby/object:Gem::Dependency
137
+ name: rake
138
+ requirement: &2156844640 !ruby/object:Gem::Requirement
139
+ none: false
140
+ requirements:
141
+ - - ! '>='
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ type: :development
145
+ prerelease: false
146
+ version_requirements: *2156844640
147
+ - !ruby/object:Gem::Dependency
148
+ name: rspec
149
+ requirement: &2156844040 !ruby/object:Gem::Requirement
150
+ none: false
151
+ requirements:
152
+ - - ! '>='
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
155
+ type: :development
156
+ prerelease: false
157
+ version_requirements: *2156844040
125
158
  - !ruby/object:Gem::Dependency
126
159
  name: activesupport
127
- requirement: &2155942480 !ruby/object:Gem::Requirement
160
+ requirement: &2156843500 !ruby/object:Gem::Requirement
128
161
  none: false
129
162
  requirements:
130
163
  - - ! '>='
@@ -132,10 +165,10 @@ dependencies:
132
165
  version: '0'
133
166
  type: :runtime
134
167
  prerelease: false
135
- version_requirements: *2155942480
168
+ version_requirements: *2156843500
136
169
  - !ruby/object:Gem::Dependency
137
170
  name: jeweler
138
- requirement: &2155941920 !ruby/object:Gem::Requirement
171
+ requirement: &2156842980 !ruby/object:Gem::Requirement
139
172
  none: false
140
173
  requirements:
141
174
  - - ! '>='
@@ -143,10 +176,10 @@ dependencies:
143
176
  version: '0'
144
177
  type: :development
145
178
  prerelease: false
146
- version_requirements: *2155941920
179
+ version_requirements: *2156842980
147
180
  - !ruby/object:Gem::Dependency
148
181
  name: rake
149
- requirement: &2155941220 !ruby/object:Gem::Requirement
182
+ requirement: &2156842380 !ruby/object:Gem::Requirement
150
183
  none: false
151
184
  requirements:
152
185
  - - ! '>='
@@ -154,10 +187,10 @@ dependencies:
154
187
  version: '0'
155
188
  type: :development
156
189
  prerelease: false
157
- version_requirements: *2155941220
190
+ version_requirements: *2156842380
158
191
  - !ruby/object:Gem::Dependency
159
192
  name: rspec
160
- requirement: &2155940360 !ruby/object:Gem::Requirement
193
+ requirement: &2156841800 !ruby/object:Gem::Requirement
161
194
  none: false
162
195
  requirements:
163
196
  - - ! '>='
@@ -165,7 +198,7 @@ dependencies:
165
198
  version: '0'
166
199
  type: :development
167
200
  prerelease: false
168
- version_requirements: *2155940360
201
+ version_requirements: *2156841800
169
202
  description: Natural language time span parsing & formatting
170
203
  email: lukas@fittl.com
171
204
  executables: []