ruby-duration 0.3.0 → 0.5.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.
data/.gitignore CHANGED
@@ -1,24 +1,11 @@
1
- ## MAC OS
2
1
  .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
2
+ .idea
3
+ .bundle
9
4
  *~
10
- \#*
11
- .\#*
12
-
13
- ## VIM
14
- *.swp
15
-
16
- ## PROJECT::GENERAL
17
- coverage
18
- rdoc
19
- pkg
5
+ #*
6
+ *.gem
7
+ .yardoc/*
8
+ coverage/*
9
+ doc/*
10
+ pkg/*
20
11
 
21
- ## PROJECT::SPECIFIC
22
- .document
23
- .yardoc
24
- doc
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source :gemcutter
2
+
3
+ # Specify your gem's dependencies in ruby-duration.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,32 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ ruby-duration (0.5.0)
5
+ i18n
6
+
7
+ GEM
8
+ remote: http://rubygems.org/
9
+ specs:
10
+ activesupport (3.0.1)
11
+ bluecloth (2.0.9)
12
+ i18n (0.4.1)
13
+ minitest (1.7.2)
14
+ rake (0.8.7)
15
+ simplecov (0.3.6)
16
+ simplecov-html (>= 0.3.7)
17
+ simplecov-html (0.3.8)
18
+ yard (0.6.1)
19
+
20
+ PLATFORMS
21
+ ruby
22
+
23
+ DEPENDENCIES
24
+ activesupport (>= 3.0.0)
25
+ bluecloth (>= 0.3.5)
26
+ bundler (>= 1.0.0)
27
+ i18n
28
+ minitest
29
+ rake
30
+ ruby-duration!
31
+ simplecov (>= 0.3.5)
32
+ yard
data/Rakefile CHANGED
@@ -1,22 +1,7 @@
1
- require 'rubygems'
2
- require 'rake'
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
3
 
4
- begin
5
- require 'jeweler'
6
- Jeweler::Tasks.new do |gem|
7
- gem.name = "ruby-duration"
8
- gem.summary = %Q{Duration type}
9
- gem.description = %Q{Duration type}
10
- gem.email = "jose@peleteiro.net"
11
- gem.homepage = "http://github.com/peleteiro/ruby-duration"
12
- gem.authors = ["Jose Peleteiro"]
13
- gem.add_development_dependency "minitest", ">= 0"
14
- gem.add_development_dependency "yard", ">= 0"
15
- end
16
- Jeweler::GemcutterTasks.new
17
- rescue LoadError
18
- puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
19
- end
4
+ task :default => :test
20
5
 
21
6
  require 'rake/testtask'
22
7
  Rake::TestTask.new(:test) do |test|
@@ -25,45 +10,5 @@ Rake::TestTask.new(:test) do |test|
25
10
  test.verbose = true
26
11
  end
27
12
 
28
- begin
29
- require 'rcov/rcovtask'
30
- Rcov::RcovTask.new do |test|
31
- test.libs << 'test'
32
- test.pattern = 'test/**/test_*.rb'
33
- test.rcov_opts << %w{--exclude /Library,.bundle,test,gems,.rvm}
34
- test.verbose = true
35
- end
36
- rescue LoadError
37
- task :rcov do
38
- abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
39
- end
40
- end
41
-
42
- namespace(:test) do
43
- desc "Run tests on multiple ruby versions"
44
- task(:portability) do
45
- versions = %w{system 1.8.7 ree-1.8.7 1.9.2 jruby rubinius}
46
- versions.each do |version|
47
- system <<-BASH
48
- bash -c 'source ~/.rvm/scripts/rvm;
49
- rvm use #{version};
50
- echo "-------- `ruby -v` ---------\n";
51
- gem install jeweler activesupport minitest yard i18n
52
- rake -s test'
53
- BASH
54
- end
55
- end
56
- end
57
-
58
- task :test => :check_dependencies
59
-
60
- task :default => :test
61
-
62
- begin
63
- require 'yard'
64
- YARD::Rake::YardocTask.new
65
- rescue LoadError
66
- task :yardoc do
67
- abort "YARD is not available. In order to run yardoc, you must: sudo gem install yard"
68
- end
69
- end
13
+ require 'yard'
14
+ YARD::Rake::YardocTask.new
@@ -0,0 +1,3 @@
1
+ class Duration
2
+ VERSION = "0.5.0"
3
+ end
data/lib/duration.rb CHANGED
@@ -10,17 +10,6 @@ class Duration
10
10
  include Comparable
11
11
 
12
12
  UNITS = [:seconds, :minutes, :hours, :days, :weeks]
13
-
14
- UNIT_LABELS = {:second => 'second',
15
- :seconds => 'seconds',
16
- :minute => 'minute',
17
- :minutes => 'minutes',
18
- :hour => 'hour',
19
- :hours => 'hours',
20
- :day => 'day',
21
- :days => 'days',
22
- :week => 'week',
23
- :weeks => 'weeks'}
24
13
 
25
14
  MULTIPLES = {:seconds => 1,
26
15
  :minutes => 60,
@@ -124,6 +113,25 @@ class Duration
124
113
  # %~h => locale-dependent "hours" terminology
125
114
  # %~d => locale-dependent "days" terminology
126
115
  # %~w => locale-dependent "weeks" terminology
116
+ #
117
+ # You can also use the I18n support.
118
+ # Load you locale using I18n.load_path and set it up using I18n.locale= or I18n.default_locale=
119
+ # If you are using Ruby on Rails, the support is ready out of the box, so just change your locale file.
120
+ #
121
+ # You must use the following structure (example):
122
+ # pt:
123
+ # ruby_duration:
124
+ # second: segundo
125
+ # seconds: segundos
126
+ # minute: minuto
127
+ # minutes: minutos
128
+ # hour: hora
129
+ # hours: horas
130
+ # day: dia
131
+ # days: dias
132
+ # week: semana
133
+ # weeks: semanas
134
+ #
127
135
  def format(format_str)
128
136
  identifiers = {
129
137
  'w' => @weeks,
@@ -135,11 +143,11 @@ class Duration
135
143
  'H' => @hours.to_s.rjust(2, '0'),
136
144
  'M' => @minutes.to_s.rjust(2, '0'),
137
145
  'S' => @seconds.to_s.rjust(2, '0'),
138
- '~s' => @seconds == 1 ? UNIT_LABELS[:second] : UNIT_LABELS[:seconds],
139
- '~m' => @minutes == 1 ? UNIT_LABELS[:minute] : UNIT_LABELS[:minutes],
140
- '~h' => @hours == 1 ? UNIT_LABELS[:hour] : UNIT_LABELS[:hours],
141
- '~d' => @days == 1 ? UNIT_LABELS[:day] : UNIT_LABELS[:days],
142
- '~w' => @weeks == 1 ? UNIT_LABELS[:week] : UNIT_LABELS[:weeks]}
146
+ '~s' => @seconds == 1 ? I18n.t(:second, :scope => :ruby_duration, :default => "second") : I18n.t(:seconds, :scope => :ruby_duration, :default => "seconds"),
147
+ '~m' => @minutes == 1 ? I18n.t(:minute, :scope => :ruby_duration, :default => "minute") : I18n.t(:minutes, :scope => :ruby_duration, :default => "minutes"),
148
+ '~h' => @hours == 1 ? I18n.t(:hour, :scope => :ruby_duration, :default => "hour") : I18n.t(:hours, :scope => :ruby_duration, :default => "hours"),
149
+ '~d' => @days == 1 ? I18n.t(:day, :scope => :ruby_duration, :default => "day") : I18n.t(:days, :scope => :ruby_duration, :default => "days"),
150
+ '~w' => @weeks == 1 ? I18n.t(:week, :scope => :ruby_duration, :default => "week") : I18n.t(:weeks, :scope => :ruby_duration, :default => "weeks")}
143
151
 
144
152
  format_str.gsub(/%?%(w|d|h|m|s|t|H|M|S|~(?:s|m|h|d|w))/) do |match|
145
153
  match['%%'] ? match : identifiers[match[1..-1]]
@@ -1,60 +1,32 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
1
  # -*- encoding: utf-8 -*-
2
+ require File.expand_path("../lib/duration/version", __FILE__)
5
3
 
6
4
  Gem::Specification.new do |s|
7
- s.name = %q{ruby-duration}
8
- s.version = "0.3.0"
5
+ s.name = "ruby-duration"
6
+ s.version = Duration::VERSION
7
+ s.platform = Gem::Platform::RUBY
8
+ s.authors = ["Jose Peleteiro"]
9
+ s.email = ["jose@peleteiro.net"]
10
+ s.homepage = "http://github.com/peleteiro/ruby-duration"
11
+ s.summary = "Duration type"
12
+ s.description = "Duration type"
9
13
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Jose Peleteiro"]
12
- s.date = %q{2010-09-22}
13
- s.description = %q{Duration type}
14
- s.email = %q{jose@peleteiro.net}
15
- s.extra_rdoc_files = [
16
- "LICENSE",
17
- "README.md"
18
- ]
19
- s.files = [
20
- ".gitignore",
21
- "LICENSE",
22
- "README.md",
23
- "Rakefile",
24
- "VERSION",
25
- "lib/duration.rb",
26
- "lib/duration/mongoid.rb",
27
- "lib/ruby-duration.rb",
28
- "ruby-duration.gemspec",
29
- "test/duration/test_mongoid.rb",
30
- "test/helper.rb",
31
- "test/test_duration.rb"
32
- ]
33
- s.homepage = %q{http://github.com/peleteiro/ruby-duration}
34
- s.rdoc_options = ["--charset=UTF-8"]
35
- s.require_paths = ["lib"]
36
- s.rubygems_version = %q{1.3.7}
37
- s.summary = %q{Duration type}
38
- s.test_files = [
39
- "test/duration/test_mongoid.rb",
40
- "test/helper.rb",
41
- "test/test_duration.rb"
42
- ]
14
+ s.required_rubygems_version = ">= 1.3.6"
15
+ s.rubyforge_project = "ruby-duration"
43
16
 
44
- if s.respond_to? :specification_version then
45
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
46
- s.specification_version = 3
17
+ s.add_dependency "i18n", ">= 0"
47
18
 
48
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
49
- s.add_development_dependency(%q<minitest>, [">= 0"])
50
- s.add_development_dependency(%q<yard>, [">= 0"])
51
- else
52
- s.add_dependency(%q<minitest>, [">= 0"])
53
- s.add_dependency(%q<yard>, [">= 0"])
54
- end
55
- else
56
- s.add_dependency(%q<minitest>, [">= 0"])
57
- s.add_dependency(%q<yard>, [">= 0"])
58
- end
59
- end
19
+ s.add_development_dependency "bundler", ">= 1.0.0"
20
+ s.add_development_dependency "minitest", ">= 0"
21
+ s.add_development_dependency "yard", ">= 0"
22
+ s.add_development_dependency "rake", ">= 0"
23
+ s.add_development_dependency "activesupport", ">= 3.0.0"
24
+ s.add_development_dependency "simplecov", ">= 0.3.5"
25
+ s.add_development_dependency "bluecloth", ">= 0.3.5"
26
+
27
+ s.files = `git ls-files`.split("\n")
28
+ s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
29
+ s.require_path = 'lib'
60
30
 
31
+ s.rdoc_options = ["--charset=UTF-8"]
32
+ end
@@ -0,0 +1,52 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'helper'
3
+
4
+ I18n.load_path << File.join(File.dirname(__FILE__), '..', 'fixtures', 'locales', 'pt.yml')
5
+
6
+ describe "I18n" do
7
+ describe "when the locale is pt" do
8
+ before do
9
+ I18n.locale = :pt
10
+ end
11
+
12
+ it "should translate to segundo" do
13
+ assert_equal "segundo", Duration.new(:second => 1).format("%~s")
14
+ end
15
+
16
+ it "should translate to segundos" do
17
+ assert_equal "segundos", Duration.new.format("%~s")
18
+ end
19
+
20
+ it "should translate to minuto" do
21
+ assert_equal "minuto", Duration.new(:minute => 1).format("%~m")
22
+ end
23
+
24
+ it "should translate to minutos" do
25
+ assert_equal "minutos", Duration.new.format("%~m")
26
+ end
27
+
28
+ it "should translate to hora" do
29
+ assert_equal "hora", Duration.new(:hour => 1).format("%~h")
30
+ end
31
+
32
+ it "should translate to horas" do
33
+ assert_equal "horas", Duration.new.format("%~h")
34
+ end
35
+
36
+ it "should translate to dia" do
37
+ assert_equal "dia", Duration.new(:day => 1).format("%~d")
38
+ end
39
+
40
+ it "should translate to dias" do
41
+ assert_equal "dias", Duration.new.format("%~d")
42
+ end
43
+
44
+ it "should translate to semana" do
45
+ assert_equal "semana", Duration.new(:week => 1).format("%~w")
46
+ end
47
+
48
+ it "should translate to semanas" do
49
+ assert_equal "semanas", Duration.new.format("%~w")
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,12 @@
1
+ pt:
2
+ ruby_duration:
3
+ second: segundo
4
+ seconds: segundos
5
+ minute: minuto
6
+ minutes: minutos
7
+ hour: hora
8
+ hours: horas
9
+ day: dia
10
+ days: dias
11
+ week: semana
12
+ weeks: semanas
data/test/helper.rb CHANGED
@@ -1,6 +1,12 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  require 'rubygems'
3
3
  require 'minitest/spec'
4
+ begin
5
+ require 'simplecov'
6
+ SimpleCov.start do
7
+ end
8
+ rescue LoadError
9
+ end
4
10
 
5
11
  $LOAD_PATH.unshift(File.dirname(__FILE__))
6
12
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-duration
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
5
4
  prerelease: false
6
5
  segments:
7
6
  - 0
8
- - 3
7
+ - 5
9
8
  - 0
10
- version: 0.3.0
9
+ version: 0.5.0
11
10
  platform: ruby
12
11
  authors:
13
12
  - Jose Peleteiro
@@ -15,57 +14,145 @@ autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
17
16
 
18
- date: 2010-09-22 00:00:00 -03:00
17
+ date: 2010-10-23 00:00:00 -02:00
19
18
  default_executable:
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
- name: minitest
21
+ name: i18n
23
22
  prerelease: false
24
23
  requirement: &id001 !ruby/object:Gem::Requirement
25
24
  none: false
26
25
  requirements:
27
26
  - - ">="
28
27
  - !ruby/object:Gem::Version
29
- hash: 3
30
28
  segments:
31
29
  - 0
32
30
  version: "0"
33
- type: :development
31
+ type: :runtime
34
32
  version_requirements: *id001
35
33
  - !ruby/object:Gem::Dependency
36
- name: yard
34
+ name: bundler
37
35
  prerelease: false
38
36
  requirement: &id002 !ruby/object:Gem::Requirement
39
37
  none: false
40
38
  requirements:
41
39
  - - ">="
42
40
  - !ruby/object:Gem::Version
43
- hash: 3
44
41
  segments:
42
+ - 1
45
43
  - 0
46
- version: "0"
44
+ - 0
45
+ version: 1.0.0
47
46
  type: :development
48
47
  version_requirements: *id002
48
+ - !ruby/object:Gem::Dependency
49
+ name: minitest
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ segments:
57
+ - 0
58
+ version: "0"
59
+ type: :development
60
+ version_requirements: *id003
61
+ - !ruby/object:Gem::Dependency
62
+ name: yard
63
+ prerelease: false
64
+ requirement: &id004 !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ segments:
70
+ - 0
71
+ version: "0"
72
+ type: :development
73
+ version_requirements: *id004
74
+ - !ruby/object:Gem::Dependency
75
+ name: rake
76
+ prerelease: false
77
+ requirement: &id005 !ruby/object:Gem::Requirement
78
+ none: false
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ segments:
83
+ - 0
84
+ version: "0"
85
+ type: :development
86
+ version_requirements: *id005
87
+ - !ruby/object:Gem::Dependency
88
+ name: activesupport
89
+ prerelease: false
90
+ requirement: &id006 !ruby/object:Gem::Requirement
91
+ none: false
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ segments:
96
+ - 3
97
+ - 0
98
+ - 0
99
+ version: 3.0.0
100
+ type: :development
101
+ version_requirements: *id006
102
+ - !ruby/object:Gem::Dependency
103
+ name: simplecov
104
+ prerelease: false
105
+ requirement: &id007 !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ segments:
111
+ - 0
112
+ - 3
113
+ - 5
114
+ version: 0.3.5
115
+ type: :development
116
+ version_requirements: *id007
117
+ - !ruby/object:Gem::Dependency
118
+ name: bluecloth
119
+ prerelease: false
120
+ requirement: &id008 !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ segments:
126
+ - 0
127
+ - 3
128
+ - 5
129
+ version: 0.3.5
130
+ type: :development
131
+ version_requirements: *id008
49
132
  description: Duration type
50
- email: jose@peleteiro.net
133
+ email:
134
+ - jose@peleteiro.net
51
135
  executables: []
52
136
 
53
137
  extensions: []
54
138
 
55
- extra_rdoc_files:
56
- - LICENSE
57
- - README.md
139
+ extra_rdoc_files: []
140
+
58
141
  files:
59
142
  - .gitignore
143
+ - Gemfile
144
+ - Gemfile.lock
60
145
  - LICENSE
61
146
  - README.md
62
147
  - Rakefile
63
- - VERSION
64
148
  - lib/duration.rb
65
149
  - lib/duration/mongoid.rb
150
+ - lib/duration/version.rb
66
151
  - lib/ruby-duration.rb
67
152
  - ruby-duration.gemspec
153
+ - test/duration/test_i18n.rb
68
154
  - test/duration/test_mongoid.rb
155
+ - test/fixtures/locales/pt.yml
69
156
  - test/helper.rb
70
157
  - test/test_duration.rb
71
158
  has_rdoc: true
@@ -82,7 +169,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
82
169
  requirements:
83
170
  - - ">="
84
171
  - !ruby/object:Gem::Version
85
- hash: 3
86
172
  segments:
87
173
  - 0
88
174
  version: "0"
@@ -91,18 +177,17 @@ required_rubygems_version: !ruby/object:Gem::Requirement
91
177
  requirements:
92
178
  - - ">="
93
179
  - !ruby/object:Gem::Version
94
- hash: 3
95
180
  segments:
96
- - 0
97
- version: "0"
181
+ - 1
182
+ - 3
183
+ - 6
184
+ version: 1.3.6
98
185
  requirements: []
99
186
 
100
- rubyforge_project:
187
+ rubyforge_project: ruby-duration
101
188
  rubygems_version: 1.3.7
102
189
  signing_key:
103
190
  specification_version: 3
104
191
  summary: Duration type
105
- test_files:
106
- - test/duration/test_mongoid.rb
107
- - test/helper.rb
108
- - test/test_duration.rb
192
+ test_files: []
193
+
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.3.0