ruby-duration 0.3.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
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