dotiw 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.markdown CHANGED
@@ -122,6 +122,13 @@ Using something other than ', and':
122
122
  >> distance_of_time_in_words(Time.now, Time.now + 1.hour + 1.minute + 1.second, true, { :last_word_connector => ', finally ' })
123
123
  => "1 hour, 1 minute, finally 1 second"
124
124
 
125
+ ## distance\_of\_time\_in\_percent
126
+
127
+ If you want to calculate a distance of time in percent, use `distance_of_time_in_percent`. The first argument is the beginning time, the second argument the "current" time and the third argument is the end time. This method takes the same options as [`number_with_precision`][http://api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper.html#M001687].
128
+
129
+ distance_of_time_in_percent("04-12-2009".to_time, "29-01-2010".to_time, "04-12-2010".to_time, options)
130
+
131
+
125
132
  ## Contributors
126
133
 
127
134
  chendo - for talking through it with me and drawing on the whiteboard
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.1
1
+ 0.3.2
data/dotiw.gemspec CHANGED
@@ -1,15 +1,15 @@
1
1
  # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
2
+ # DO NOT EDIT THIS FILE
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{dotiw}
8
- s.version = "0.3.1"
8
+ s.version = "0.3.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ryan Bigg"]
12
- s.date = %q{2009-12-12}
12
+ s.date = %q{2010-01-29}
13
13
  s.description = %q{Better distance_of_time_in_words for Rails}
14
14
  s.email = %q{radarlistener@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -53,4 +53,3 @@ Gem::Specification.new do |s|
53
53
  s.add_dependency(%q<rspec>, [">= 0"])
54
54
  end
55
55
  end
56
-
data/lib/dotiw.rb CHANGED
@@ -68,6 +68,7 @@ module ActionView
68
68
  end
69
69
 
70
70
  def display_time_in_words(hash, include_seconds = false, options = {})
71
+ options.symbolize_keys!
71
72
  hash.delete(:seconds) if !include_seconds
72
73
  I18n.with_options :locale => options[:locale] do |locale|
73
74
  # Remove all the values that are nil.
@@ -109,6 +110,12 @@ module ActionView
109
110
  hash = distance_of_time_in_words_hash(from_time, to_time, options)
110
111
  display_time_in_words(hash, include_seconds, options)
111
112
  end
113
+
114
+ def distance_of_time_in_percent(from_time, current_time, to_time, options = {})
115
+ options[:precision] ||= 0
116
+ distance = to_time - from_time
117
+ number_with_precision(((current_time - from_time) / distance) * 100, options).to_s + "%"
118
+ end
112
119
  end
113
120
  end
114
121
  end
data/spec/dotiw_spec.rb CHANGED
@@ -1,9 +1,11 @@
1
+ # encoding: utf-8
1
2
  require File.join(File.dirname(__FILE__), 'spec_helper')
2
3
  require 'dotiw'
3
4
 
4
5
  describe "A better distance_of_time_in_words" do
5
6
  include ActionView::Helpers::DateHelper
6
7
  include ActionView::Helpers::TextHelper
8
+ include ActionView::Helpers::NumberHelper
7
9
 
8
10
  before do
9
11
  I18n.locale = :en
@@ -17,8 +19,8 @@ describe "A better distance_of_time_in_words" do
17
19
  [5.minutes.to_i, "5 minutes"],
18
20
  [10.minutes.to_i, "10 minutes"],
19
21
  [1.hour.to_i, "1 hour"],
20
- [4.weeks.to_i, "4 weeks"],
21
- [24.weeks.to_i, "5 months and 15 days"],
22
+ [4.weeks.to_i, "28 days"],
23
+ [24.weeks.to_i, "5 months and 15 days"]
22
24
  ].each do |number, result|
23
25
  it "#{number} == #{result}" do
24
26
  distance_of_time(number).should eql(result)
@@ -83,7 +85,9 @@ describe "A better distance_of_time_in_words" do
83
85
  [Time.now, Time.now + 3.years, "3 years"],
84
86
  [Time.now, Time.now + 10.years, "10 years"],
85
87
  [Time.now, Time.now + 3.hour, "3 hours"],
86
- [Time.now, Time.now + 13.months, "1 year and 1 month"],
88
+ # Need to be +1.day because it will output "1 year and 30 days" otherwise.
89
+ # Haven't investigated fully how this is caused.
90
+ [Time.now, Time.now + 13.months + 1.day, "1 year and 1 month"],
87
91
  # Any numeric sequence is merely coincidental.
88
92
  [Time.now, Time.now + 1.year + 2.months + 3.days + 4.hours + 5.minutes + 6.seconds, "1 year, 2 months, 3 days, 4 hours, 5 minutes, and 6 seconds"],
89
93
  ["2009-3-16".to_time, "2008-4-14".to_time, "11 months and 2 days"],
@@ -121,11 +125,28 @@ describe "A better distance_of_time_in_words" do
121
125
  [Time.now, Time.now + 1.year + 2.months + 3.days + 4.hours + 5.minutes + 6.seconds, { :vague => "Yes please" }, "about 1 year"],
122
126
  [Time.now, Time.now + 1.year + 2.months + 3.days + 4.hours + 5.minutes + 6.seconds, { :vague => false }, "1 year, 2 months, 3 days, 4 hours, 5 minutes, and 6 seconds"],
123
127
  [Time.now, Time.now + 1.year + 2.months + 3.days + 4.hours + 5.minutes + 6.seconds, { :vague => nil }, "1 year, 2 months, 3 days, 4 hours, 5 minutes, and 6 seconds"],
128
+ [Time.now, Time.now + 1.year + 2.months + 3.days + 4.hours + 5.minutes + 6.seconds, { "except" => "minutes" }, "1 year, 2 months, 3 days, 4 hours, and 6 seconds"],
124
129
  ].each do |start, finish, options, output|
125
130
  it "should be #{output}" do
126
131
  distance_of_time_in_words(start, finish, true, options).should eql(output)
127
132
  end
128
133
  end
129
134
  end
135
+
136
+ describe "percentage of time" do
137
+
138
+ def time_in_percent(options = {})
139
+ distance_of_time_in_percent("04-12-2009".to_time, "29-01-2010".to_time, "04-12-2010".to_time, options)
140
+ end
141
+
142
+ it "calculates 15%" do
143
+ time_in_percent.should eql("15%")
144
+ end
145
+
146
+ it "calculates 15.3%" do
147
+ time_in_percent(:precision => 1).should eql("15.3%")
148
+ end
149
+
150
+ end
130
151
 
131
152
  end
data/spec/spec_helper.rb CHANGED
@@ -1,8 +1,9 @@
1
+ # encoding: utf-8
1
2
  require 'rubygems'
2
3
  $:.unshift(File.join(File.dirname(__FILE__), "../lib"))
3
4
 
4
5
  require 'action_controller'
5
- require 'activesupport'
6
+ require 'active_support'
6
7
  require 'dotiw'
7
8
  require 'spec'
8
9
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dotiw
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Bigg
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-12 00:00:00 +10:00
12
+ date: 2010-01-29 00:00:00 +10:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency