dotiw 0.2.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.
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ tmp
2
+ spec/fixtures/database.yml
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Ryan Bigg
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.markdown ADDED
@@ -0,0 +1,117 @@
1
+ # dotiw
2
+
3
+ dotiw is a plugin for Rails that overrides the default `distance_of_time_in_words` and provides a more accurate output. Do you crave accuracy down to the second? So do I. That's why I made this plugin. Take this for a totally kickass example:
4
+
5
+ >> distance_of_time_in_words(Time.now, Time.now + 1.year + 2.months + 3.days + 4.hours + 5.minutes + 6.seconds, true)
6
+ => "1 year, 2 months, 3 days, 4 hours, 5 minutes, and 6 seconds"
7
+
8
+ Also if one of the measurement is zero it will not output it:
9
+
10
+ >> distance_of_time_in_words(Time.now, Time.now + 1.year + 2.months + 4.hours + 5.minutes + 6.seconds, true)
11
+ => "1 year, 2 months, 4 hours, 5 minutes, and 6 seconds"
12
+
13
+ Better than "about 1 year", am I right? Of course I am.
14
+
15
+ This takes the same options plus an additional one on the end for passing options to the output (which uses `to_sentence`).
16
+
17
+ Oh, and did I mention it supports I18n? Oh yeah.
18
+
19
+ ## distance\_of\_time\_in\_words\_hash
20
+
21
+ Don't like any format you're given? That's cool too! Here, have an indifferent hash version:
22
+
23
+ >> distance_of_time_in_words_hash(Time.now, Time.now + 1.year + 2.months + 3.days + 4.hours + 5.minutes + 6.seconds)
24
+ => {"days"=>3, "seconds"=>6, "minutes"=>5, "years"=>1, "hours"=>4, "months"=>2}
25
+
26
+ Indiferrent means that you can access all keys by their `String` or `Symbol` version.
27
+
28
+ ### Options
29
+
30
+ #### :locale
31
+
32
+ The keys can be in your local language too:
33
+
34
+ >> distance_of_time_in_words_hash(Time.now, Time.now + 1.year + 2.months + 3.days + 4.hours + 5.minutes + 6.seconds, :locale => "es")
35
+ => {"horas"=>4, "días"=>3, "minutos"=>5, "segundos"=>6, "años"=>1, "meses"=>2}
36
+
37
+ You are not guaranteed the order of the hash in Ruby 1.8.
38
+
39
+ ## distance\_of\_time\_in\_words
40
+
41
+ ### Options
42
+
43
+ The third argument for this method is whether or not to include seconds. By default this is `false` (because in Rails' `distance_of_time_in_words` it is), you can turn it on though by passing `true` as the third argument:
44
+
45
+ >> distance_of_time_in_words(Time.now, Time.now + 1.year + 1.second, true)
46
+ => "1 year, and 1 second"
47
+
48
+ Yes this could just be merged into the options hash but I'm leaving it here to ensure "backwards-compatibility".
49
+
50
+ #### :locale
51
+
52
+ You can pass in a locale and it'll output it in whatever language you want (provided you have translations, otherwise it'll default to English):
53
+
54
+ >> distance_of_time_in_words(Time.now, Time.now + 1.minute, false, :locale => "es")
55
+ => "1 minuto"
56
+
57
+ This will also be passed to `to_sentence`
58
+
59
+ #### :only
60
+
61
+ **Note that values passed into this option must be passed in as strings!**
62
+
63
+ Only want a specific measurement of time? No problem!
64
+
65
+ >> distance_of_time_in_words(Time.now, Time.now + 1.hour + 1.minute, false, :only => "minutes")
66
+ => "1 minute"
67
+
68
+ You only want some? No problem too!
69
+
70
+ >> distance_of_time_in_words(Time.now, Time.now + 1.hour + 1.day + 1.minute, false, :only => ["minutes", "hours"])
71
+ => "1 hour and 1 minute"
72
+
73
+ #### :except
74
+
75
+ **Note that values passed into this option must be passed in as strings!**
76
+
77
+ Don't want a measurement of time? No problem!
78
+
79
+ >> distance_of_time_in_words(Time.now, Time.now + 1.hour + 1.minute, false, :except => "minutes")
80
+ => "1 hour"
81
+
82
+ Culling a whole group of measurements of time:
83
+
84
+ >> distance_of_time_in_words(Time.now, Time.now + 1.hour + 1.day + 1.minute, false, :except => ["minutes", "hours"])
85
+ => "1 day"
86
+
87
+ #### :words_connector
88
+
89
+ **This is an option for `to_sentence`, defaults to ', '**
90
+
91
+ Using something other than a comma:
92
+
93
+ >> distance_of_time_in_words(Time.now, Time.now + 1.hour + 1.minute + 1.second, true, { :words_connector => ' - ' })
94
+ => "1 hour - 1 minute, and 1 second"
95
+
96
+ #### :two\_words\_connector
97
+
98
+ **This is an option for `to_sentence`, defaults to ' and '**
99
+
100
+ Using something other than 'and':
101
+
102
+ >> distance_of_time_in_words(Time.now, Time.now + 1.hour + 1.minute, true, { :two_words_connector => ' plus ' })
103
+ => "1 hour plus 1 minute"
104
+
105
+ #### :last\_word\_connector
106
+
107
+ **This is an option for `to_sentence`, defaults to ', and '**
108
+
109
+ Using something other than ', and':
110
+
111
+ >> distance_of_time_in_words(Time.now, Time.now + 1.hour + 1.minute + 1.second, true, { :last_word_connector => ', finally ' })
112
+ => "1 hour, 1 minute, finally 1 second"
113
+
114
+ ## Contributors
115
+
116
+ chendo - for talking through it with me and drawing on the whiteboard
117
+ Derander - correct Spanish translations
data/Rakefile ADDED
@@ -0,0 +1,50 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "dotiw"
8
+ gem.summary = %Q{Better distance_of_time_in_words for Rails}
9
+ gem.description = %Q{Better distance_of_time_in_words for Rails}
10
+ gem.email = "radarlistener@gmail.com"
11
+ gem.homepage = "http://github.com/radar/dotiw"
12
+ gem.authors = ["Ryan Bigg"]
13
+ gem.add_development_dependency "rspec"
14
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
15
+ end
16
+ Jeweler::GemcutterTasks.new
17
+ rescue LoadError
18
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
19
+ end
20
+
21
+ require 'spec/rake/spectask'
22
+ Spec::Rake::SpecTask.new(:spec) do |spec|
23
+ spec.libs << 'lib' << 'spec'
24
+ spec.spec_files = FileList['spec/**/*_spec.rb']
25
+ end
26
+
27
+ Spec::Rake::SpecTask.new(:rcov) do |spec|
28
+ spec.libs << 'lib' << 'spec'
29
+ spec.pattern = 'spec/**/*_spec.rb'
30
+ spec.rcov = true
31
+ end
32
+
33
+ task :spec => :check_dependencies
34
+
35
+ task :default => :spec
36
+
37
+ require 'rake/rdoctask'
38
+ Rake::RDocTask.new do |rdoc|
39
+ if File.exist?('VERSION')
40
+ version = File.read('VERSION')
41
+ else
42
+ version = ""
43
+ end
44
+
45
+ rdoc.rdoc_dir = 'rdoc'
46
+ rdoc.title = "dotiw #{version}"
47
+ rdoc.rdoc_files.include('README*')
48
+ rdoc.rdoc_files.include('lib/**/*.rb')
49
+ end
50
+
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.2.4
data/dotiw.gemspec ADDED
@@ -0,0 +1,55 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{dotiw}
8
+ s.version = "0.2.4"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Ryan Bigg"]
12
+ s.date = %q{2009-10-18}
13
+ s.description = %q{Better distance_of_time_in_words for Rails}
14
+ s.email = %q{radarlistener@gmail.com}
15
+ s.extra_rdoc_files = [
16
+ "README.markdown"
17
+ ]
18
+ s.files = [
19
+ ".gitignore",
20
+ "MIT-LICENSE",
21
+ "README.markdown",
22
+ "Rakefile",
23
+ "VERSION",
24
+ "dotiw.gemspec",
25
+ "lib/dotiw.rb",
26
+ "lib/i18n.rb",
27
+ "rails/init.rb",
28
+ "spec/dotiw_spec.rb",
29
+ "spec/spec_helper.rb",
30
+ "spec/translations/en.yml",
31
+ "spec/translations/es.yml"
32
+ ]
33
+ s.homepage = %q{http://github.com/radar/dotiw}
34
+ s.rdoc_options = ["--charset=UTF-8"]
35
+ s.require_paths = ["lib"]
36
+ s.rubygems_version = %q{1.3.5}
37
+ s.summary = %q{Better distance_of_time_in_words for Rails}
38
+ s.test_files = [
39
+ "spec/dotiw_spec.rb",
40
+ "spec/spec_helper.rb"
41
+ ]
42
+
43
+ if s.respond_to? :specification_version then
44
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
45
+ s.specification_version = 3
46
+
47
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
48
+ s.add_development_dependency(%q<rspec>, [">= 0"])
49
+ else
50
+ s.add_dependency(%q<rspec>, [">= 0"])
51
+ end
52
+ else
53
+ s.add_dependency(%q<rspec>, [">= 0"])
54
+ end
55
+ end
data/lib/dotiw.rb ADDED
@@ -0,0 +1,96 @@
1
+ module ActionView
2
+ module Helpers
3
+ module DateHelper
4
+ def distance_of_time_in_words_hash(from_time, to_time, options={})
5
+ output = HashWithIndifferentAccess.new
6
+ from_time = from_time.to_time if from_time.respond_to?(:to_time)
7
+ to_time = to_time.to_time if to_time.respond_to?(:to_time)
8
+
9
+ distance = (from_time - to_time).abs
10
+ I18n.with_options :locale => options[:locale] do |locale|
11
+ while distance > 0
12
+ if distance < 1.minute
13
+ output[locale.t(:seconds, :default => "seconds")] = distance.to_i
14
+ distance = 0
15
+ elsif distance < 1.hour
16
+ output[locale.t(:minutes, :default => "minutes")], distance = distance.divmod(1.minute)
17
+ elsif distance < 1.day
18
+ output[locale.t(:hours, :default => "hours")], distance = distance.divmod(1.hour)
19
+ elsif distance < 28.days
20
+ output[locale.t(:days, :default => "days")], distance = distance.divmod(1.day)
21
+ # Time has to be greater than a month
22
+ else
23
+ smallest, largest = from_time < to_time ? [from_time, to_time] : [to_time, from_time]
24
+
25
+ months = (largest.year - smallest.year) * 12 + (largest.month - smallest.month)
26
+ years, months = months.divmod(12)
27
+
28
+ days = largest.day - smallest.day
29
+
30
+ # Will otherwise incorrectly say one more day if our range goes over a day.
31
+ days -= 1 if largest.hour < smallest.hour
32
+
33
+ if days < 0
34
+ # Convert the last month to days and add to total
35
+ months -= 1
36
+ last_month = largest.advance(:months => -1)
37
+ days += Time.days_in_month(last_month.month, last_month.year)
38
+ end
39
+
40
+ if months < 0
41
+ # Convert a year to months
42
+ years -= 1
43
+ months += 12
44
+ end
45
+
46
+ output[locale.t(:years, :default => "years")] = years
47
+ output[locale.t(:months, :default => "months")] = months
48
+ output[locale.t(:days, :default => "days")] = days
49
+
50
+ total_days, distance = distance.divmod(1.day)
51
+ end
52
+ end
53
+ end
54
+ output
55
+ end
56
+
57
+ def distance_of_time_in_words(from_time, to_time, include_seconds = false, options = {})
58
+ hash = distance_of_time_in_words_hash(from_time, to_time, options)
59
+ hash.delete(:seconds) if !include_seconds
60
+ I18n.with_options :locale => options[:locale] do |locale|
61
+ # Remove all the values that are nil.
62
+ time_measurements = [locale.t(:years, :default => "years"),
63
+ locale.t(:months, :default => "months"),
64
+ locale.t(:weeks, :default => "weeks"),
65
+ locale.t(:days, :default => "days"),
66
+ locale.t(:hours, :default => "hours"),
67
+ locale.t(:minutes, :default => "minutes"),
68
+ locale.t(:seconds, :default => "seconds")].delete_if do |key|
69
+ hash[key].nil? || hash[key].zero? ||
70
+ # Remove the keys that we don't want.
71
+ (!options[:except].nil? && options[:except].include?(key)) ||
72
+ # keep the keys we only want.
73
+ (options[:only] && !options[:only].include?(key))
74
+ end
75
+
76
+ options.delete(:except)
77
+ options.delete(:only)
78
+ output = []
79
+ time_measurements.each do |key|
80
+ name = hash[key] > 1 ? key : key.singularize
81
+ output += ["#{hash[key]} #{name}"]
82
+ end
83
+
84
+ # maybe only grab the first few values
85
+ if options[:precision]
86
+ output = output[0...options[:precision]]
87
+ options.delete(:precision)
88
+ end
89
+
90
+ output.to_sentence(options)
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end
96
+
data/lib/i18n.rb ADDED
@@ -0,0 +1,5 @@
1
+ class I18n
2
+ def p(key)
3
+ t(key, :default => key)
4
+ end
5
+ end
data/rails/init.rb ADDED
@@ -0,0 +1 @@
1
+ require 'dotiw'
@@ -0,0 +1,107 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+ require 'dotiw'
3
+
4
+ describe "A better distance_of_time_in_words" do
5
+ include ActionView::Helpers::DateHelper
6
+ include ActionView::Helpers::TextHelper
7
+
8
+ before do
9
+ I18n.locale = :en
10
+ time = "01-08-2009".to_time
11
+ Time.stub!(:now).and_return(time)
12
+ Time.zone.stub!(:now).and_return(time)
13
+ end
14
+
15
+ describe "hash version" do
16
+ describe "giving correct numbers of" do
17
+
18
+ [:years, :months, :days, :minutes, :seconds].each do |name|
19
+ describe name do
20
+ it "exactly" do
21
+ hash = distance_of_time_in_words_hash(Time.now, Time.now + 1.send(name))
22
+ hash[name].should eql(1)
23
+ end
24
+
25
+ it "two" do
26
+ hash = distance_of_time_in_words_hash(Time.now, Time.now + 2.send(name))
27
+ hash[name].should eql(2)
28
+ end
29
+ end
30
+ end
31
+
32
+ it "should be happy with lots of measurements" do
33
+ hash = distance_of_time_in_words_hash(Time.now, Time.now + 1.year + 2.months + 3.days + 4.hours + 5.minutes + 6.seconds)
34
+ hash[:years].should eql(1)
35
+ hash[:months].should eql(2)
36
+ hash[:days].should eql(3)
37
+ hash[:hours].should eql(4)
38
+ hash[:minutes].should eql(5)
39
+ hash[:seconds].should eql(6)
40
+ end
41
+
42
+ it "debe estar contento con las mediciones en español" do
43
+ hash = distance_of_time_in_words_hash(Time.now, Time.now + 1.year + 2.months + 3.days + 4.hours + 5.minutes + 6.seconds, :locale => "es")
44
+ hash[:años].should eql(1)
45
+ hash[:meses].should eql(2)
46
+ hash[:días].should eql(3)
47
+ hash[:horas].should eql(4)
48
+ hash[:minutos].should eql(5)
49
+ hash[:segundos].should eql(6)
50
+ end
51
+
52
+
53
+ it "debe hablar español" do
54
+ I18n.locale = :es
55
+ hash = distance_of_time_in_words_hash(Time.now, Time.now + 5.days)
56
+ hash["días"].should eql(5)
57
+ end
58
+ end
59
+ end
60
+
61
+ describe "real version" do
62
+ it "debe hablar español" do
63
+ distance_of_time_in_words(Time.now, Time.now + 5.days, true, :locale => "es").should eql("5 días")
64
+ end
65
+
66
+ [
67
+ [Time.now, Time.now + 5.days + 3.minutes, "5 days and 3 minutes"],
68
+ [Time.now, Time.now + 1.minute, "1 minute"],
69
+ [Time.now, Time.now + 3.years, "3 years"],
70
+ [Time.now, Time.now + 10.years, "10 years"],
71
+ [Time.now, Time.now + 3.hour, "3 hours"],
72
+ [Time.now, Time.now + 13.months, "1 year and 1 month"],
73
+ # Any numeric sequence is merely coincidental.
74
+ [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"],
75
+ ["2009-3-16".to_time, "2008-4-14".to_time, "11 months and 2 days"],
76
+ ["2009-3-16".to_time + 1.minute, "2008-4-14".to_time, "11 months, 2 days, and 1 minute"],
77
+ ["2009-4-14".to_time, "2008-3-16".to_time, "1 year and 29 days"],
78
+ ["2009-2-01".to_time, "2009-3-01".to_time, "1 month"],
79
+ ["2008-2-01".to_time, "2008-3-01".to_time, "1 month"]
80
+ ].each do |start, finish, output|
81
+ it "should be #{output}" do
82
+ distance_of_time_in_words(start, finish, true).should eql(output)
83
+ end
84
+ end
85
+ end
86
+
87
+ describe "with output options" do
88
+ [
89
+ # Any numeric sequence is merely coincidental.
90
+ [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"],
91
+ [Time.now, Time.now + 1.year + 2.months + 3.days + 4.hours + 5.minutes + 6.seconds, { :words_connector => " - " }, "1 year - 2 months - 3 days - 4 hours - 5 minutes, and 6 seconds"],
92
+ [Time.now, Time.now + 5.minutes + 6.seconds, { :two_words_connector => " - " }, "5 minutes - 6 seconds"],
93
+ [Time.now, Time.now + 4.hours + 5.minutes + 6.seconds, { :last_word_connector => " - " }, "4 hours, 5 minutes - 6 seconds"],
94
+ [Time.now, Time.now + 1.hour + 1.minute, { :except => "minutes"}, "1 hour"],
95
+ [Time.now, Time.now + 1.hour + 1.day + 1.minute, { :except => ["minutes", "hours"]}, "1 day"],
96
+ [Time.now, Time.now + 1.hour + 1.day + 1.minute, { :only => ["minutes", "hours"]}, "1 hour and 1 minute"],
97
+ [Time.now, Time.now + 1.year + 2.months + 3.days + 4.hours + 5.minutes + 6.seconds, { :precision => 2 }, "1 year and 2 months"],
98
+ [Time.now, Time.now + 1.year + 2.months + 3.days + 4.hours + 5.minutes + 6.seconds, { :precision => 3 }, "1 year, 2 months, and 3 days"],
99
+ [Time.now, Time.now + 1.year + 2.months + 3.days + 4.hours + 5.minutes + 6.seconds, { :precision => 10 }, "1 year, 2 months, 3 days, 4 hours, 5 minutes, and 6 seconds"]
100
+ ].each do |start, finish, options, output|
101
+ it "should be #{output}" do
102
+ distance_of_time_in_words(start, finish, true, options).should eql(output)
103
+ end
104
+ end
105
+ end
106
+
107
+ end
@@ -0,0 +1,18 @@
1
+ require 'rubygems'
2
+ $:.unshift(File.join(File.dirname(__FILE__), "../lib"))
3
+
4
+ require 'action_controller'
5
+ require 'activesupport'
6
+ require 'dotiw'
7
+ require 'spec'
8
+
9
+ # Define time zone before loading, just like in the real world
10
+ zone = "UTC"
11
+ Time.zone = zone
12
+
13
+ I18n.load_path << Dir[File.join(File.dirname(__FILE__), "translations", "*")]
14
+ I18n.locale = :en
15
+
16
+ # bootstraping the plugin through init.rb
17
+ # tests how it would load in a real application
18
+ load File.dirname(__FILE__) + "/../rails/init.rb"
@@ -0,0 +1,9 @@
1
+ en:
2
+ seconds: seconds
3
+ minutes: minutes
4
+ hours: hours
5
+ days: days
6
+ weeks: weeks
7
+ months: months
8
+ years: years
9
+
@@ -0,0 +1,9 @@
1
+ es:
2
+ seconds: segundos
3
+ minutes: minutos
4
+ hours: horas
5
+ days: días
6
+ weeks: semanas
7
+ months: meses
8
+ years: años
9
+
metadata ADDED
@@ -0,0 +1,77 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dotiw
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.4
5
+ platform: ruby
6
+ authors:
7
+ - Ryan Bigg
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-10-18 00:00:00 +10:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rspec
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ description: Better distance_of_time_in_words for Rails
26
+ email: radarlistener@gmail.com
27
+ executables: []
28
+
29
+ extensions: []
30
+
31
+ extra_rdoc_files:
32
+ - README.markdown
33
+ files:
34
+ - .gitignore
35
+ - MIT-LICENSE
36
+ - README.markdown
37
+ - Rakefile
38
+ - VERSION
39
+ - dotiw.gemspec
40
+ - lib/dotiw.rb
41
+ - lib/i18n.rb
42
+ - rails/init.rb
43
+ - spec/dotiw_spec.rb
44
+ - spec/spec_helper.rb
45
+ - spec/translations/en.yml
46
+ - spec/translations/es.yml
47
+ has_rdoc: true
48
+ homepage: http://github.com/radar/dotiw
49
+ licenses: []
50
+
51
+ post_install_message:
52
+ rdoc_options:
53
+ - --charset=UTF-8
54
+ require_paths:
55
+ - lib
56
+ required_ruby_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: "0"
61
+ version:
62
+ required_rubygems_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: "0"
67
+ version:
68
+ requirements: []
69
+
70
+ rubyforge_project:
71
+ rubygems_version: 1.3.5
72
+ signing_key:
73
+ specification_version: 3
74
+ summary: Better distance_of_time_in_words for Rails
75
+ test_files:
76
+ - spec/dotiw_spec.rb
77
+ - spec/spec_helper.rb