can_has_support 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/HISTORY ADDED
@@ -0,0 +1,4 @@
1
+ == 0.0.1 2008-03-16
2
+
3
+ * 1 major enhancement:
4
+ * Initial release
data/LICENSE ADDED
@@ -0,0 +1,25 @@
1
+ Copyright (c) 2008 Brian Smith <wbsmith83@gmail.com>
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without
5
+ modification, are permitted provided that the following conditions are met:
6
+
7
+ * Redistributions of source code must retain the above copyright notice,
8
+ this list of conditions and the following disclaimer.
9
+ * Redistributions in binary form must reproduce the above copyright notice,
10
+ this list of conditions and the following disclaimer in the documentation
11
+ and/or other materials provided with the distribution.
12
+ * Neither the name of this project nor the names of its contributors may be
13
+ used to endorse or promote products derived from this software without
14
+ specific prior written permission.
15
+
16
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
20
+ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
23
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/README ADDED
@@ -0,0 +1 @@
1
+ README
@@ -0,0 +1,75 @@
1
+ # -*- ruby -*-
2
+
3
+ require "rake"
4
+ require "rake/clean"
5
+ require "rake/gempackagetask"
6
+ require 'rake/rdoctask'
7
+ require "spec"
8
+ require "spec/rake/spectask"
9
+
10
+ DIR = File.dirname(__FILE__)
11
+ NAME = 'can_has_support'
12
+ SUMMARY =<<-EOS
13
+ EOS
14
+
15
+ require "lib/#{NAME}/version"
16
+
17
+ spec = Gem::Specification.new do |s|
18
+ s.name = NAME
19
+ s.summary = SUMMARY
20
+
21
+ s.version = CanHasSupport::VERSION
22
+ s.platform = Gem::Platform::RUBY
23
+
24
+ s.require_path = "lib"
25
+ s.files = %w(Rakefile LICENSE HISTORY README) + Dir["lib/**/*"]
26
+ end
27
+
28
+ Rake::GemPackageTask.new(spec) do |package|
29
+ package.gem_spec = spec
30
+ package.need_zip = true
31
+ package.need_tar = true
32
+ end
33
+
34
+ ##############################################################################
35
+ # Documentation
36
+ ##############################################################################
37
+ task :doc => "doc:rerdoc"
38
+ namespace :doc do
39
+
40
+ Rake::RDocTask.new do |rdoc|
41
+ files = ['README', 'LICENSE', 'HISTORY',
42
+ 'lib/**/*.rb', 'doc/**/*.rdoc', 'spec/**/*.rb']
43
+ rdoc.rdoc_files.add(files)
44
+ rdoc.main = 'README'
45
+ rdoc.title = 'I CAN HAS "CAN HAS FIXTURES?" DOCS? '
46
+ rdoc.template = 'tools/allison-2.0.3/lib/allison'
47
+ rdoc.rdoc_dir = "doc/#{NAME}/rdoc"
48
+ rdoc.options << '--line-numbers' << '--inline-source'
49
+ end
50
+
51
+ desc "rdoc to rubyforge"
52
+ task :rubyforge => :doc do
53
+ sh %{chmod -R 755 doc}
54
+ sh %{/usr/bin/scp -r -p doc/#{NAME}/rdoc/* brianthecoder@rubyforge.org:/var/www/gforge-projects/canhasgems/#{NAME}}
55
+ end
56
+ end
57
+
58
+ ##############################################################################
59
+ # rSpec & rcov
60
+ ##############################################################################
61
+ desc "Run all specs"
62
+ Spec::Rake::SpecTask.new("specs") do |t|
63
+ t.spec_opts = ["--format", "specdoc", "--colour"]
64
+ t.spec_files = Dir["spec/**/*_spec.rb"].sort
65
+ end
66
+
67
+ ##############################################################################
68
+ # release
69
+ ##############################################################################
70
+ task :release => [:specs, :package] do
71
+ sh %{rubyforge add_release canhasgems #{NAME} "#{CanHasSupport::VERSION}" pkg/#{NAME}-#{CanHasSupport::VERSION}.gem}
72
+ %w[zip tgz].each do |ext|
73
+ sh %{rubyforge add_file canhasgems #{NAME} #{CanHasSupport::VERSION} pkg/#{NAME}-#{CanHasSupport::VERSION}.#{ext}}
74
+ end
75
+ end
@@ -0,0 +1,6 @@
1
+ $:.unshift File.dirname(__FILE__)
2
+ Dir["#{File.dirname(__FILE__)}/can_has_support/*.rb"].each {|m| require m }
3
+
4
+ module CanHasSupport
5
+
6
+ end
@@ -0,0 +1,18 @@
1
+ class Fixnum
2
+ {"years" => 31536000,"weeks" => 604800,"days" => 86400,
3
+ "hours" => 3600,"minutes" => 60, "seconds" => 1}.each do |key,val|
4
+ define_method( key ){ self * val }
5
+ end
6
+
7
+ %w(year week day hour minute second).each do |method|
8
+ define_method( method ){ 1.send("#{method}s".to_sym) }
9
+ end
10
+
11
+ {"ago" => "-", "from_now" => "+"}.each do |key,val|
12
+ define_method( key ){ Time.now.send(val.to_sym,self) }
13
+ end
14
+
15
+ {"until" => "-","since" => "+"}.each do |key,val|
16
+ define_method( key ){ |time| time.send(val.to_sym,self) }
17
+ end
18
+ end
@@ -0,0 +1,27 @@
1
+ class Hash
2
+ ## These are stealed from Geoff of Peepcode fame
3
+ ##
4
+ # Filter keys out of a Hash.
5
+ #
6
+ # { :a => 1, :b => 2, :c => 3 }.except(:a)
7
+ # => { :b => 2, :c => 3 }
8
+ def except(*keys)
9
+ self.reject { |k,v| keys.include?(k || k.to_sym) }
10
+ end
11
+ ##
12
+ # Override some keys.
13
+ #
14
+ # { :a => 1, :b => 2, :c => 3 }.with(:a => 4)
15
+ # => { :a => 4, :b => 2, :c => 3 }
16
+ def with(overrides = {})
17
+ self.merge overrides
18
+ end
19
+ ##
20
+ # Returns a Hash with only the pairs identified by +keys+.
21
+ #
22
+ # { :a => 1, :b => 2, :c => 3 }.only(:a)
23
+ # => { :a => 1 }
24
+ def only(*keys)
25
+ self.reject { |k,v| !keys.include?(k || k.to_sym) }
26
+ end
27
+ end
@@ -0,0 +1,32 @@
1
+ class Range
2
+ ##
3
+ # Takes a range and converts it to an array of days
4
+ #
5
+ # (Time.now..7.days.from_now).to_days
6
+ #
7
+ def to_days
8
+ return if first > last
9
+ arr = []
10
+ time = first
11
+ while time <= last
12
+ arr << time
13
+ time += 1.day
14
+ end
15
+ return arr
16
+ end
17
+ ##
18
+ # Takes a range and converts it to an array of hours
19
+ #
20
+ # (Time.now..1.day.from_now).to_hours
21
+ #
22
+ def to_hours
23
+ return if first > last
24
+ arr = []
25
+ time = first
26
+ while time <= last
27
+ arr << time
28
+ time += 1.hour
29
+ end
30
+ return arr
31
+ end
32
+ end
@@ -0,0 +1,18 @@
1
+ class Time
2
+ ["week","month","year"].each do |time|
3
+ define_method( "last_#{time}" ){ send(time.to_sym).until(self) }
4
+ end
5
+
6
+ ["week","month","year"].each do |time|
7
+ define_method( "next_#{time}" ){ 1.send(time.to_sym).since(self) }
8
+ end
9
+ ##
10
+ # Convience methods
11
+ def tomorrow
12
+ 1.day.since(self)
13
+ end
14
+
15
+ def yesterday
16
+ 1.day.until(self)
17
+ end
18
+ end
@@ -0,0 +1,7 @@
1
+ module CanHasSupport #:nodoc:
2
+ MAJOR = 0
3
+ MINOR = 1
4
+ TINY = 0
5
+
6
+ VERSION = [MAJOR, MINOR, TINY].join('.')
7
+ end
metadata ADDED
@@ -0,0 +1,63 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: can_has_support
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors: []
7
+
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-03-17 00:00:00 -05:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description:
17
+ email:
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - Rakefile
26
+ - LICENSE
27
+ - HISTORY
28
+ - README
29
+ - lib/can_has_support
30
+ - lib/can_has_support/fixnum_time_ext.rb
31
+ - lib/can_has_support/hash_core_ext.rb
32
+ - lib/can_has_support/range_time_ext.rb
33
+ - lib/can_has_support/time_core_ext.rb
34
+ - lib/can_has_support/version.rb
35
+ - lib/can_has_support.rb
36
+ has_rdoc: false
37
+ homepage:
38
+ post_install_message:
39
+ rdoc_options: []
40
+
41
+ require_paths:
42
+ - lib
43
+ required_ruby_version: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: "0"
48
+ version:
49
+ required_rubygems_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: "0"
54
+ version:
55
+ requirements: []
56
+
57
+ rubyforge_project:
58
+ rubygems_version: 1.0.1
59
+ signing_key:
60
+ specification_version: 2
61
+ summary: ""
62
+ test_files: []
63
+