date_time-smart 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog ADDED
@@ -0,0 +1,4 @@
1
+ == 0.0.1 / 2007-12-28
2
+
3
+ * initial release
4
+
data/README ADDED
@@ -0,0 +1,38 @@
1
+
2
+ = date_time-smart
3
+
4
+ == Synopsis
5
+
6
+ require 'date_time-duration'
7
+ require 'date_time-smart'
8
+
9
+ DateTime::Smart.new(1984, 12, 26).add(years => 1).subtract(:day => 1).to_s
10
+ #=> "1985-12-25T00:00:00"
11
+ dt = DateTime::Smart.new(2007, 12, 25)
12
+ birth = DateTime::Smart.new(1984, 12, 26)
13
+ # if you subtract DateTime from DateTime::Smart instance, you got DateTime::Duration instance.
14
+ ( dt - birth ).years
15
+ #=> 22
16
+
17
+ == Description
18
+
19
+ wrapper of date_time using datetime-duration.
20
+
21
+ == Installation
22
+
23
+ === Archive Installation
24
+
25
+ rake install
26
+
27
+ === Gem Installation
28
+
29
+ gem install date_time-smart
30
+
31
+ == Features/Problems
32
+
33
+
34
+ == Copyright
35
+
36
+ Author:: Keiji, Yoshimi <walf443 at gmail.com>
37
+ Copyright:: Copyright (c) 2007 Keiji, Yoshimi
38
+ License:: you can redistribute it and/or modify it under the same terms as Ruby itself.
data/Rakefile ADDED
@@ -0,0 +1,135 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'rake/clean'
4
+ require 'rake/testtask'
5
+ require 'rake/packagetask'
6
+ require 'rake/gempackagetask'
7
+ require 'rake/rdoctask'
8
+ require 'rake/contrib/rubyforgepublisher'
9
+ require 'rake/contrib/sshpublisher'
10
+ require 'fileutils'
11
+ include FileUtils
12
+
13
+ NAME = "date_time-smart"
14
+ AUTHOR = "Keiji, Yoshimi"
15
+ EMAIL = "walf443 at gmail.com"
16
+ DESCRIPTION = "wrapper of date_time using date_time-duration"
17
+ RUBYFORGE_PROJECT = "akasakarb"
18
+ RUBYFORGE_PROJECT_ID = 4314
19
+ RUBYFORGE_PACKAGE_ID = 6502
20
+ HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
21
+ BIN_FILES = %w( )
22
+ VERS = "0.0.1"
23
+
24
+ REV = File.read(".svn/entries")[/committed-rev="(d+)"/, 1] rescue nil
25
+ CLEAN.include ['**/.*.sw?', '*.gem', '.config']
26
+ RDOC_OPTS = [
27
+ '--title', "#{NAME} documentation",
28
+ "--charset", "utf-8",
29
+ "--opname", "index.html",
30
+ "--line-numbers",
31
+ "--main", "README",
32
+ "--inline-source",
33
+ ]
34
+
35
+ task :default => [:test]
36
+ task :package => [:clean]
37
+
38
+ Rake::TestTask.new("test") do |t|
39
+ t.libs << "spec"
40
+ t.pattern = "spec/**/*_spec.rb"
41
+ t.verbose = true
42
+ end
43
+
44
+ spec = Gem::Specification.new do |s|
45
+ s.name = NAME
46
+ s.version = VERS
47
+ s.platform = Gem::Platform::RUBY
48
+ s.has_rdoc = true
49
+ s.extra_rdoc_files = ["README", "ChangeLog"]
50
+ s.rdoc_options += RDOC_OPTS + ['--exclude', '^(examples|extras)/']
51
+ s.summary = DESCRIPTION
52
+ s.description = DESCRIPTION
53
+ s.author = AUTHOR
54
+ s.email = EMAIL
55
+ s.homepage = HOMEPATH
56
+ s.executables = BIN_FILES
57
+ s.rubyforge_project = RUBYFORGE_PROJECT
58
+ s.bindir = "bin"
59
+ s.require_path = "lib"
60
+ s.autorequire = ""
61
+ s.test_files = Dir["spec/*_spec.rb"]
62
+
63
+ #s.add_dependency('activesupport', '>=1.3.1')
64
+ #s.required_ruby_version = '>= 1.8.2'
65
+ s.add_dependency('date_time-duration', '>= 0.0.1')
66
+
67
+ s.files = %w(README ChangeLog Rakefile) +
68
+ Dir.glob("{bin,doc,spec,test,lib,templates,generator,extras,website,script}/**/*") +
69
+ Dir.glob("ext/**/*.{h,c,rb}") +
70
+ Dir.glob("examples/**/*.rb") +
71
+ Dir.glob("tools/*.rb")
72
+
73
+ s.extensions = FileList["ext/**/extconf.rb"].to_a
74
+ end
75
+
76
+ Rake::GemPackageTask.new(spec) do |p|
77
+ p.need_tar = true
78
+ p.gem_spec = spec
79
+ end
80
+
81
+ task :install do
82
+ name = "#{NAME}-#{VERS}.gem"
83
+ sh %{rake package}
84
+ sh %{sudo gem install pkg/#{name}}
85
+ end
86
+
87
+ task :uninstall => [:clean] do
88
+ sh %{sudo gem uninstall #{NAME}}
89
+ end
90
+
91
+
92
+ Rake::RDocTask.new do |rdoc|
93
+ rdoc.rdoc_dir = 'html'
94
+ rdoc.options += RDOC_OPTS
95
+ rdoc.template = "resh"
96
+ #rdoc.template = "#{ENV['template']}.rb" if ENV['template']
97
+ if ENV['DOC_FILES']
98
+ rdoc.rdoc_files.include(ENV['DOC_FILES'].split(/,\s*/))
99
+ else
100
+ rdoc.rdoc_files.include('README', 'ChangeLog')
101
+ rdoc.rdoc_files.include('lib/**/*.rb')
102
+ rdoc.rdoc_files.include('ext/**/*.c')
103
+ end
104
+ end
105
+
106
+ desc "Publish to RubyForge"
107
+ task :rubyforge => [:rdoc, :package] do
108
+ require 'rubyforge'
109
+ Rake::RubyForgePublisher.new(RUBYFORGE_PROJECT, 'yoshimi').upload
110
+ end
111
+
112
+ desc 'Package and upload the release to rubyforge.'
113
+ task :release => [:clean, :package] do |t|
114
+ require 'rubyforge'
115
+ v = ENV["VERSION"] or abort "Must supply VERSION=x.y.z"
116
+ abort "Versions don't match #{v} vs #{VERS}" unless v == VERS
117
+ pkg = "pkg/#{NAME}-#{VERS}"
118
+
119
+ rf = RubyForge.new
120
+ puts "Logging in"
121
+ rf.login
122
+
123
+ c = rf.userconfig
124
+ # c["release_notes"] = description if description
125
+ # c["release_changes"] = changes if changes
126
+ c["preformatted"] = true
127
+
128
+ files = [
129
+ "#{pkg}.tgz",
130
+ "#{pkg}.gem"
131
+ ].compact
132
+
133
+ puts "Releasing #{NAME} v. #{VERS}"
134
+ rf.add_release RUBYFORGE_PROJECT_ID, RUBYFORGE_PACKAGE_ID, VERS, *files
135
+ end
@@ -0,0 +1,76 @@
1
+ require 'date'
2
+ require 'rubygems'
3
+ require 'date_time/duration'
4
+
5
+ class DateTime
6
+ class Smart < DateTime
7
+ module Shared
8
+
9
+ def +(n)
10
+ case n
11
+ when DateTime::Duration
12
+ return self.class.new!(@ajd + n.days, @of, @sg)
13
+ end
14
+ return super
15
+ end
16
+
17
+ def add n
18
+ case n
19
+ when Hash
20
+ return self + DateTime::Duration.new2(self, n)
21
+ end
22
+ __send__ :+, n
23
+ end
24
+
25
+ def -(n)
26
+ case n
27
+ when DateTime::Duration
28
+ return self.class.new!(@ajd - n.days, @of, @sg)
29
+ when self.class
30
+ return DateTime::Duration.new(n, self)
31
+ end
32
+ return super
33
+ end
34
+
35
+ def subtract n
36
+ case n
37
+ when Hash
38
+ return self - DateTime::Duration.new2(self, n)
39
+ end
40
+ __send__ :-, n
41
+ end
42
+
43
+ def inspect
44
+ "#<#{self.class}: #{self.to_s}, #{self.ajd}, #{self.offset}, #{self.sg}>"
45
+ end
46
+ end
47
+
48
+ module SharedClassMethods
49
+ def now(sg = Date::ITALY)
50
+ dt = DateTime.now(sg)
51
+
52
+ new!(dt.ajd, dt.offset, dt.sg)
53
+ end
54
+
55
+ def today(sg = Date::ITALY)
56
+ dt = Date.today(sg)
57
+
58
+ new!(dt.ajd, dt.offset, dt.sg)
59
+ end
60
+ end
61
+
62
+ alias original_add +
63
+ alias original_subtract -
64
+ include Shared
65
+ extend SharedClassMethods
66
+ end
67
+ end
68
+
69
+ class Date::Smart < Date
70
+ alias original_add +
71
+ alias original_subtract -
72
+
73
+ include DateTime::Smart::Shared
74
+ extend DateTime::Smart::SharedClassMethods
75
+ end
76
+
@@ -0,0 +1,62 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+ require 'date_time/smart'
3
+
4
+ describe DateTime::Smart do
5
+ before do
6
+ @birth = DateTime::Smart.new(1984,12,26)
7
+ @birth_after_a_year_before_a_day = DateTime::Smart.new(1985,12,25)
8
+ @dd = DateTime::Duration.new(@birth, @birth_after_a_year_before_a_day)
9
+ end
10
+
11
+ it %{ should add Numeric and return new object } do
12
+ (@birth + 30).should == DateTime::Smart.new(1985, 1, 25)
13
+ end
14
+
15
+ it %{should add DateTime::Duration and return new object} do
16
+ ( @birth + @dd ).should == @birth_after_a_year_before_a_day
17
+ end
18
+
19
+ it %{ should subtract DateTime::Smart and return DateTime::Duration instance} do
20
+ (@birth_after_a_year_before_a_day - @birth).should be_kind_of(DateTime::Duration)
21
+ end
22
+
23
+ it %{should subtract DateTime::Duration and return new object } do
24
+ ( @birth_after_a_year_before_a_day - @dd ).should == @birth
25
+ end
26
+
27
+ it %{should add with DateTime::Duration.new2} do
28
+ @birth.add(:days => 364).should == @birth_after_a_year_before_a_day
29
+ @birth.add(:months => 11, :days => 30).should == @birth_after_a_year_before_a_day
30
+ @birth.add(:years => 1).subtract(:days => 1).should == @birth_after_a_year_before_a_day
31
+ end
32
+ end
33
+
34
+ describe Date::Smart do
35
+ before do
36
+ @birth = Date::Smart.new(1984,12,26)
37
+ @birth_after_a_year_before_a_day = Date::Smart.new(1985,12,25)
38
+ @dd = DateTime::Duration.new(@birth, @birth_after_a_year_before_a_day)
39
+ end
40
+
41
+ it %{ should add Numeric and return new object } do
42
+ (@birth + 30).should == DateTime::Smart.new(1985, 1, 25)
43
+ end
44
+
45
+ it %{should add DateTime::Duration and return new object} do
46
+ ( @birth + @dd ).should == @birth_after_a_year_before_a_day
47
+ end
48
+
49
+ it %{ should subtract DateTime::Smart and return DateTime::Duration instance} do
50
+ (@birth_after_a_year_before_a_day - @birth).should be_kind_of(DateTime::Duration)
51
+ end
52
+
53
+ it %{should subtract DateTime::Duration and return new object } do
54
+ ( @birth_after_a_year_before_a_day - @dd ).should == @birth
55
+ end
56
+
57
+ it %{should add with DateTime::Duration.new2} do
58
+ @birth.add(:days => 364).should == @birth_after_a_year_before_a_day
59
+ @birth.add(:months => 11, :days => 30).should == @birth_after_a_year_before_a_day
60
+ @birth.add(:years => 1).subtract(:days => 1).should == @birth_after_a_year_before_a_day
61
+ end
62
+ end
@@ -0,0 +1,4 @@
1
+ require 'rubygems'
2
+ require 'spec'
3
+ $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + '/../lib/'))
4
+
metadata ADDED
@@ -0,0 +1,72 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.4
3
+ specification_version: 1
4
+ name: date_time-smart
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.0.1
7
+ date: 2007-12-29 00:00:00 +09:00
8
+ summary: wrapper of date_time using date_time-duration
9
+ require_paths:
10
+ - lib
11
+ email: walf443 at gmail.com
12
+ homepage: http://akasakarb.rubyforge.org
13
+ rubyforge_project: akasakarb
14
+ description: wrapper of date_time using date_time-duration
15
+ autorequire: ""
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: true
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ post_install_message:
29
+ authors:
30
+ - Keiji, Yoshimi
31
+ files:
32
+ - README
33
+ - ChangeLog
34
+ - Rakefile
35
+ - spec/date_time-smart_spec.rb
36
+ - spec/spec_helper.rb
37
+ - lib/date_time
38
+ - lib/date_time/smart.rb
39
+ test_files:
40
+ - spec/date_time-smart_spec.rb
41
+ rdoc_options:
42
+ - --title
43
+ - date_time-smart documentation
44
+ - --charset
45
+ - utf-8
46
+ - --opname
47
+ - index.html
48
+ - --line-numbers
49
+ - --main
50
+ - README
51
+ - --inline-source
52
+ - --exclude
53
+ - ^(examples|extras)/
54
+ extra_rdoc_files:
55
+ - README
56
+ - ChangeLog
57
+ executables: []
58
+
59
+ extensions: []
60
+
61
+ requirements: []
62
+
63
+ dependencies:
64
+ - !ruby/object:Gem::Dependency
65
+ name: date_time-duration
66
+ version_requirement:
67
+ version_requirements: !ruby/object:Gem::Version::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: 0.0.1
72
+ version: