mirror of
https://github.com/jimeh/time_ext.git
synced 2026-02-19 13:26:39 +00:00
Compare commits
27 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 53fed4fb33 | |||
| dad55fb6f9 | |||
| 4b1327306d | |||
| 950a57dc66 | |||
| 59c96c0246 | |||
| 8bb93bf5f1 | |||
| d84154bd5b | |||
| 0bef341111 | |||
| 6686731651 | |||
| fceb7b8ff2 | |||
| 803ad03d6c | |||
| b29c232939 | |||
| f3b9d3751a | |||
| a612a17c54 | |||
| 71c5421587 | |||
| d564c31b93 | |||
| 29e1c7f500 | |||
| f49c6bd455 | |||
| 5ece10846a | |||
| 5afb6bc2b9 | |||
| 9bbd974a75 | |||
| ca929c6ae1 | |||
| edd828bb3e | |||
| 4afd3f84d5 | |||
| ea6d87e35f | |||
| 74574beaf0 | |||
| ba33dfec57 |
8
.gitignore
vendored
8
.gitignore
vendored
@@ -16,9 +16,11 @@ tmtags
|
|||||||
## PROJECT::GENERAL
|
## PROJECT::GENERAL
|
||||||
coverage
|
coverage
|
||||||
rdoc
|
rdoc
|
||||||
pkg
|
Gemfile.lock
|
||||||
|
pkg/*
|
||||||
|
*.gem
|
||||||
|
.bundle
|
||||||
|
|
||||||
## PROJECT::SPECIFIC
|
## PROJECT::SPECIFIC
|
||||||
.yardoc/*
|
.yardoc
|
||||||
*.gemspec
|
|
||||||
doc/*
|
doc/*
|
||||||
|
|||||||
4
Gemfile
Normal file
4
Gemfile
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
source 'http://rubygems.org/'
|
||||||
|
|
||||||
|
# Specify your gem's dependencies in time_ext.gemspec
|
||||||
|
gemspec
|
||||||
@@ -99,5 +99,5 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||||||
|
|
||||||
|
|
||||||
[as]: http://as.rubyonrails.org/classes/ActiveSupport/CoreExtensions/Time/Calculations.html
|
[as]: http://as.rubyonrails.org/classes/ActiveSupport/CoreExtensions/Time/Calculations.html
|
||||||
[docs]: http://rdoc.info/projects/jimeh/time_ext
|
[docs]: http://rdoc.info/gems/time_ext/frames
|
||||||
[rdoc.info]: http://rdoc.info/
|
[rdoc.info]: http://rdoc.info/
|
||||||
57
Rakefile
57
Rakefile
@@ -1,43 +1,27 @@
|
|||||||
require 'rubygems'
|
require 'bundler'
|
||||||
require 'rake'
|
Bundler::GemHelper.install_tasks
|
||||||
|
|
||||||
begin
|
|
||||||
require 'jeweler'
|
#
|
||||||
Jeweler::Tasks.new do |gem|
|
# Rspec
|
||||||
gem.name = "time_ext"
|
#
|
||||||
gem.summary = %Q{Extends the abilities of Ruby's built-in Time class by building on top of ActiveSupport.}
|
|
||||||
gem.description = %Q{Extends the abilities of Ruby's built-in Time class by building on top of ActiveSupport.}
|
require 'rspec/core/rake_task'
|
||||||
gem.email = "contact@jimeh.me"
|
RSpec::Core::RakeTask.new(:spec) do |spec|
|
||||||
gem.homepage = "http://github.com/jimeh/time_ext"
|
spec.pattern = 'spec/**/*_spec.rb'
|
||||||
gem.authors = ["Jim Myhrberg"]
|
|
||||||
gem.add_dependency "activesupport", ">= 2.3.0"
|
|
||||||
gem.add_development_dependency "rspec", ">= 1.2.9"
|
|
||||||
gem.add_development_dependency "yard", ">= 0"
|
|
||||||
end
|
|
||||||
Jeweler::GemcutterTasks.new
|
|
||||||
rescue LoadError
|
|
||||||
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
|
||||||
end
|
end
|
||||||
|
|
||||||
require 'spec/rake/spectask'
|
RSpec::Core::RakeTask.new(:rcov) do |spec|
|
||||||
Spec::Rake::SpecTask.new(:spec) do |spec|
|
|
||||||
spec.libs << 'lib' << 'spec'
|
|
||||||
spec.spec_files = FileList['spec/**/*_spec.rb']
|
|
||||||
end
|
|
||||||
|
|
||||||
Spec::Rake::SpecTask.new(:rcov) do |spec|
|
|
||||||
spec.libs << 'lib' << 'spec'
|
|
||||||
spec.pattern = 'spec/**/*_spec.rb'
|
spec.pattern = 'spec/**/*_spec.rb'
|
||||||
spec.rcov = true
|
spec.rcov = true
|
||||||
end
|
end
|
||||||
|
|
||||||
task :spec => :check_dependencies
|
|
||||||
|
|
||||||
task :default => :spec
|
task :default => :spec
|
||||||
|
|
||||||
task :console do
|
|
||||||
exec "irb -r spec/spec_helper"
|
#
|
||||||
end
|
# Yard
|
||||||
|
#
|
||||||
|
|
||||||
begin
|
begin
|
||||||
require 'yard'
|
require 'yard'
|
||||||
@@ -47,3 +31,14 @@ rescue LoadError
|
|||||||
abort "YARD is not available. In order to run yardoc, you must: sudo gem install yard"
|
abort "YARD is not available. In order to run yardoc, you must: sudo gem install yard"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Misc.
|
||||||
|
#
|
||||||
|
|
||||||
|
desc "Start an irb console with TimeExt pre-loaded."
|
||||||
|
task :console do
|
||||||
|
exec "irb -r spec/spec_helper"
|
||||||
|
end
|
||||||
|
task :c => :console
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
require 'rubygems'
|
require 'rubygems'
|
||||||
require 'active_support'
|
|
||||||
|
|
||||||
require 'time_ext/calculations'
|
require 'time_ext/calculations'
|
||||||
require 'time_ext/iterations'
|
require 'time_ext/iterations'
|
||||||
require 'time_ext/support'
|
require 'time_ext/support'
|
||||||
require 'time_ext/core_ext/time'
|
require 'time_ext/core_ext/time'
|
||||||
|
require 'time_ext/core_ext/numeric'
|
||||||
|
|||||||
6
lib/time_ext/core_ext/numeric.rb
Normal file
6
lib/time_ext/core_ext/numeric.rb
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
require 'active_support/core_ext/numeric/time' unless Numeric.new.respond_to?(:seconds) # fixes rare loading issue
|
||||||
|
|
||||||
|
class Numeric
|
||||||
|
alias :sec :seconds
|
||||||
|
alias :min :minutes
|
||||||
|
end
|
||||||
@@ -1,3 +1,7 @@
|
|||||||
|
require 'active_support'
|
||||||
|
require 'active_support/time' unless Time.respond_to?(:days_in_month) # support both Active Support 2.x and 3.x
|
||||||
|
require 'active_support/core_ext/time/calculations' unless Time.new.respond_to?(:ago) # fixes rare loading issue
|
||||||
|
|
||||||
class Time
|
class Time
|
||||||
include TimeExt::Support
|
include TimeExt::Support
|
||||||
include TimeExt::Calculations
|
include TimeExt::Calculations
|
||||||
|
|||||||
@@ -75,7 +75,6 @@ module TimeExt
|
|||||||
def map_each(unit, options = {}, &block)
|
def map_each(unit, options = {}, &block)
|
||||||
iterate(unit, options.merge(:map_result => true), &block)
|
iterate(unit, options.merge(:map_result => true), &block)
|
||||||
end
|
end
|
||||||
alias :map :map_each
|
|
||||||
|
|
||||||
# Executes passed block for each "unit" of time specified, returning an array with the return values from passed block. Additionally the time object passed into the block is set to the beginning of specified "unit".
|
# Executes passed block for each "unit" of time specified, returning an array with the return values from passed block. Additionally the time object passed into the block is set to the beginning of specified "unit".
|
||||||
def map_beginning_of_each(unit, options = {}, &block)
|
def map_beginning_of_each(unit, options = {}, &block)
|
||||||
@@ -84,7 +83,7 @@ module TimeExt
|
|||||||
|
|
||||||
# Dynamically define convenience methods, like #each_hour instead of #each(:hour).
|
# Dynamically define convenience methods, like #each_hour instead of #each(:hour).
|
||||||
[:year, :month, :day, :hour, :min, :sec].each do |unit|
|
[:year, :month, :day, :hour, :min, :sec].each do |unit|
|
||||||
[:each, :beginning_of_each, :map_each, :map_beginning_of_each, :map].each do |method|
|
[:each, :beginning_of_each, :map_each, :map_beginning_of_each].each do |method|
|
||||||
define_method "#{method}_#{unit}" do |*args, &block|
|
define_method "#{method}_#{unit}" do |*args, &block|
|
||||||
send(method, unit, *args, &block)
|
send(method, unit, *args, &block)
|
||||||
end
|
end
|
||||||
|
|||||||
3
lib/time_ext/version.rb
Normal file
3
lib/time_ext/version.rb
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
module TimeExt
|
||||||
|
VERSION = "0.2.9"
|
||||||
|
end
|
||||||
19
spec/core_ext_spec.rb
Normal file
19
spec/core_ext_spec.rb
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
||||||
|
|
||||||
|
describe "Core Extensions" do
|
||||||
|
|
||||||
|
it "should alias Numeric class methods" do
|
||||||
|
number = 1
|
||||||
|
number.sec.should == number.second
|
||||||
|
number.min.should == number.minute
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should alias Time instance methods" do
|
||||||
|
time = Time.now
|
||||||
|
time.secs_ago(10).should == time.ago(10)
|
||||||
|
time.seconds_ago(10).should == time.ago(10)
|
||||||
|
time.secs_since(10).should == time.since(10)
|
||||||
|
time.seconds_since(10).should == time.since(10)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
--format specdoc
|
|
||||||
--color
|
|
||||||
@@ -1,9 +1,6 @@
|
|||||||
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
||||||
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
||||||
|
|
||||||
require 'time_ext'
|
require 'time_ext'
|
||||||
require 'spec'
|
require 'rspec'
|
||||||
require 'spec/autorun'
|
require 'rspec/autorun'
|
||||||
|
|
||||||
Spec::Runner.configure do |config|
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|||||||
@@ -52,8 +52,6 @@ describe "Time Iterations" do
|
|||||||
match = (1..6).map { |i| @now + i.hours }
|
match = (1..6).map { |i| @now + i.hours }
|
||||||
@now.map_each_hour.until(@now + 6.hours) { |time| time }.should == match
|
@now.map_each_hour.until(@now + 6.hours) { |time| time }.should == match
|
||||||
@now.until(@now + 6.hours).map_each(:hour) { |time| time }.should == match
|
@now.until(@now + 6.hours).map_each(:hour) { |time| time }.should == match
|
||||||
# check so the #map alias for #map_each works
|
|
||||||
@now.map_hour.until(@now + 6.hours) { |time| time }.should == match
|
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should iterate over time objects backwards with #until set in the past" do
|
it "should iterate over time objects backwards with #until set in the past" do
|
||||||
|
|||||||
29
time_ext.gemspec
Normal file
29
time_ext.gemspec
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
# -*- encoding: utf-8 -*-
|
||||||
|
$:.push File.expand_path("../lib", __FILE__)
|
||||||
|
require "time_ext/version"
|
||||||
|
|
||||||
|
Gem::Specification.new do |s|
|
||||||
|
s.name = "time_ext"
|
||||||
|
s.version = TimeExt::VERSION
|
||||||
|
s.platform = Gem::Platform::RUBY
|
||||||
|
s.authors = ["Jim Myhrberg"]
|
||||||
|
s.email = ["contact@jimeh.me"]
|
||||||
|
s.homepage = "http://github.com/jimeh/time_ext"
|
||||||
|
s.summary = "Extends the abilities of Ruby's built-in Time class by building on top of ActiveSupport."
|
||||||
|
s.description = "Extends the abilities of Ruby's built-in Time class by building on top of ActiveSupport."
|
||||||
|
|
||||||
|
s.rubyforge_project = "time_ext"
|
||||||
|
|
||||||
|
s.files = `git ls-files`.split("\n")
|
||||||
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
||||||
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
||||||
|
s.require_paths = ["lib"]
|
||||||
|
|
||||||
|
s.add_runtime_dependency 'activesupport', '>= 2.3.2'
|
||||||
|
s.add_runtime_dependency 'i18n', '>= 0.4.2'
|
||||||
|
|
||||||
|
s.add_development_dependency 'rake', '>= 0.8.7'
|
||||||
|
s.add_development_dependency 'rspec', '>= 2.1.0'
|
||||||
|
s.add_development_dependency 'yard', '>= 0.6.3'
|
||||||
|
s.add_development_dependency 'ruby-debug'
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user