timeunits 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/README ADDED
@@ -0,0 +1,40 @@
1
+ NAME
2
+
3
+ timeunits.rb
4
+
5
+ SYNOPSIS
6
+
7
+ adds methods to Numeric and Time classes to support time units and time
8
+ difference units.
9
+
10
+ EXAMPLE
11
+
12
+ harp:~ > cat a.rb
13
+ require "timeunits"
14
+ require "yaml"
15
+
16
+ now = Time::now
17
+
18
+ a = now
19
+ y "a" => a
20
+
21
+ b = now + 2.hours + 2.minutes
22
+ y "b" => b
23
+
24
+ d = b - a
25
+ %w( seconds minutes hours days ).each do |unit|
26
+ y "d.#{ unit }" => d.send(unit)
27
+ end
28
+
29
+ harp:~ > ruby a.rb
30
+ a: 2006-09-05 15:33:23.697319 -06:00
31
+ b: 2006-09-05 17:35:23.697319 -06:00
32
+ d.seconds: 7320.0
33
+ d.minutes: 122.0
34
+ d.hours: 2.03333333333333
35
+ d.days: 0.0847222222222222
36
+
37
+
38
+ DOCS
39
+
40
+ see lib/*
data/gemspec.rb ADDED
@@ -0,0 +1,23 @@
1
+ lib, version = File::basename(File::dirname(File::expand_path(__FILE__))).split %r/-/, 2
2
+
3
+ require 'rubygems'
4
+
5
+ Gem::Specification::new do |spec|
6
+ spec.name = lib
7
+ spec.version = version
8
+ spec.platform = Gem::Platform::RUBY
9
+ spec.summary = lib
10
+
11
+ spec.files = Dir::glob "**/**"
12
+ spec.executables = Dir::glob("bin/*").map{|exe| File::basename exe}
13
+
14
+ spec.require_path = "lib"
15
+ spec.autorequire = lib
16
+
17
+ spec.has_rdoc = File::exist? "doc"
18
+ spec.test_suite_file = "test/#{ lib }.rb" if File::directory? "test"
19
+
20
+ spec.author = "Ara T. Howard"
21
+ spec.email = "ara.t.howard@noaa.gov"
22
+ spec.homepage = "http://codeforpeople.com/lib/ruby/#{ lib }/"
23
+ end
data/install.rb ADDED
@@ -0,0 +1,206 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rbconfig'
3
+ require 'find'
4
+ require 'ftools'
5
+ require 'tempfile'
6
+ include Config
7
+
8
+ LIBDIR = "lib"
9
+ LIBDIR_MODE = 0644
10
+
11
+ BINDIR = "bin"
12
+ BINDIR_MODE = 0755
13
+
14
+
15
+ $srcdir = CONFIG["srcdir"]
16
+ $version = CONFIG["MAJOR"]+"."+CONFIG["MINOR"]
17
+ $libdir = File.join(CONFIG["libdir"], "ruby", $version)
18
+ $archdir = File.join($libdir, CONFIG["arch"])
19
+ $site_libdir = $:.find {|x| x =~ /site_ruby$/}
20
+ $bindir = CONFIG["bindir"] || CONFIG['BINDIR']
21
+ $ruby_install_name = CONFIG['ruby_install_name'] || CONFIG['RUBY_INSTALL_NAME'] || 'ruby'
22
+ $ruby_ext = CONFIG['EXEEXT'] || ''
23
+ $ruby = File.join($bindir, ($ruby_install_name + $ruby_ext))
24
+
25
+ if !$site_libdir
26
+ $site_libdir = File.join($libdir, "site_ruby")
27
+ elsif $site_libdir !~ %r/#{Regexp.quote($version)}/
28
+ $site_libdir = File.join($site_libdir, $version)
29
+ end
30
+
31
+ def install_rb(srcdir=nil, destdir=nil, mode=nil, bin=nil)
32
+ #{{{
33
+ path = []
34
+ dir = []
35
+ Find.find(srcdir) do |f|
36
+ next unless FileTest.file?(f)
37
+ next if (f = f[srcdir.length+1..-1]) == nil
38
+ next if (/CVS$/ =~ File.dirname(f))
39
+ next if f =~ %r/\.lnk/
40
+ path.push f
41
+ dir |= [File.dirname(f)]
42
+ end
43
+ for f in dir
44
+ next if f == "."
45
+ next if f == "CVS"
46
+ File::makedirs(File.join(destdir, f))
47
+ end
48
+ for f in path
49
+ next if (/\~$/ =~ f)
50
+ next if (/^\./ =~ File.basename(f))
51
+ unless bin
52
+ File::install(File.join(srcdir, f), File.join(destdir, f), mode, true)
53
+ else
54
+ from = File.join(srcdir, f)
55
+ to = File.join(destdir, f)
56
+ shebangify(from) do |sf|
57
+ $deferr.print from, " -> ", File::catname(from, to), "\n"
58
+ $deferr.printf "chmod %04o %s\n", mode, to
59
+ File::install(sf, to, mode, false)
60
+ end
61
+ end
62
+ end
63
+ #}}}
64
+ end
65
+ def shebangify f
66
+ #{{{
67
+ open(f) do |fd|
68
+ buf = fd.read 42
69
+ if buf =~ %r/^\s*#\s*!.*ruby/o
70
+ ftmp = Tempfile::new("#{ $$ }_#{ File::basename(f) }")
71
+ begin
72
+ fd.rewind
73
+ ftmp.puts "#!#{ $ruby }"
74
+ while((buf = fd.read(8192)))
75
+ ftmp.write buf
76
+ end
77
+ ftmp.close
78
+ yield ftmp.path
79
+ ensure
80
+ ftmp.close!
81
+ end
82
+ else
83
+ yield f
84
+ end
85
+ end
86
+ #}}}
87
+ end
88
+ def ARGV.switch
89
+ #{{{
90
+ return nil if self.empty?
91
+ arg = self.shift
92
+ return nil if arg == '--'
93
+ if arg =~ /^-(.)(.*)/
94
+ return arg if $1 == '-'
95
+ raise 'unknown switch "-"' if $2.index('-')
96
+ self.unshift "-#{$2}" if $2.size > 0
97
+ "-#{$1}"
98
+ else
99
+ self.unshift arg
100
+ nil
101
+ end
102
+ #}}}
103
+ end
104
+ def ARGV.req_arg
105
+ #{{{
106
+ self.shift || raise('missing argument')
107
+ #}}}
108
+ end
109
+ def linkify d, linked = []
110
+ #--{{{
111
+ if test ?d, d
112
+ versioned = Dir[ File::join(d, "*-[0-9].[0-9].[0-9].rb") ]
113
+ versioned.each do |v|
114
+ src, dst = v, v.gsub(%r/\-[\d\.]+\.rb$/, '.rb')
115
+ lnk = nil
116
+ begin
117
+ if test ?l, dst
118
+ lnk = "#{ dst }.lnk"
119
+ puts "#{ dst } -> #{ lnk }"
120
+ File::rename dst, lnk
121
+ end
122
+ unless test ?e, dst
123
+ puts "#{ src } -> #{ dst }"
124
+ File::copy src, dst
125
+ linked << dst
126
+ end
127
+ ensure
128
+ if lnk
129
+ at_exit do
130
+ puts "#{ lnk } -> #{ dst }"
131
+ File::rename lnk, dst
132
+ end
133
+ end
134
+ end
135
+ end
136
+ end
137
+ linked
138
+ #--}}}
139
+ end
140
+
141
+
142
+ #
143
+ # main program
144
+ #
145
+
146
+ libdir = $site_libdir
147
+ bindir = $bindir
148
+ no_linkify = false
149
+ linked = nil
150
+ help = false
151
+
152
+ usage = <<-usage
153
+ #{ File::basename $0 }
154
+ -d, --destdir <destdir>
155
+ -l, --libdir <libdir>
156
+ -b, --bindir <bindir>
157
+ -r, --ruby <ruby>
158
+ -n, --no_linkify
159
+ -s, --sudo
160
+ -h, --help
161
+ usage
162
+
163
+ begin
164
+ while switch = ARGV.switch
165
+ case switch
166
+ when '-d', '--destdir'
167
+ libdir = ARGV.req_arg
168
+ when '-l', '--libdir'
169
+ libdir = ARGV.req_arg
170
+ when '-b', '--bindir'
171
+ bindir = ARGV.req_arg
172
+ when '-r', '--ruby'
173
+ $ruby = ARGV.req_arg
174
+ when '-n', '--no_linkify'
175
+ no_linkify = true
176
+ when '-s', '--sudo'
177
+ sudo = 'sudo'
178
+ when '-h', '--help'
179
+ help = true
180
+ else
181
+ raise "unknown switch #{switch.dump}"
182
+ end
183
+ end
184
+ rescue
185
+ STDERR.puts $!.to_s
186
+ STDERR.puts usage
187
+ exit 1
188
+ end
189
+
190
+ if help
191
+ STDOUT.puts usage
192
+ exit
193
+ end
194
+
195
+ unless no_linkify
196
+ linked = linkify('lib') + linkify('bin')
197
+ end
198
+
199
+ system "#{ $ruby } extconf.rb && make && #{ sudo } make install" if test(?s, 'extconf.rb')
200
+
201
+ install_rb(LIBDIR, libdir, LIBDIR_MODE)
202
+ install_rb(BINDIR, bindir, BINDIR_MODE, bin=true)
203
+
204
+ if linked
205
+ linked.each{|path| File::rm_f path}
206
+ end
@@ -0,0 +1,61 @@
1
+ unless $__timeunits__
2
+ $__timeunits__ = File.expand_path __FILE__
3
+
4
+ class Time
5
+ module Units
6
+ VERSION = "0.0.0"
7
+
8
+ def __less__() "/" end
9
+ def __more__() "*" end
10
+ def microseconds() self.send(Float(__more__,(10 ** -6))) end
11
+ def milliseconds() self.send(Float(__more__,(10 ** -3))) end
12
+ def seconds() self end
13
+ def minutes() seconds.send(__more__,60) end
14
+ def hours() minutes.send(__more__,60) end
15
+ def days() hours.send(__more__,24) end
16
+ def weeks() days.send(__more__,7) end
17
+ def months() weeks.send(__more__,4) end
18
+ def years() months.send(__more__,12) end
19
+ def decades() years.send(__more__,10) end
20
+ def centuries() decades.send(__more__,10) end
21
+ instance_methods.select{|m| m !~ /__/}.each do |plural|
22
+ singular = plural.chop
23
+ alias_method singular, plural
24
+ end
25
+ end
26
+ module DiffUnits
27
+ include ::Time::Units
28
+ def __less__() "*" end
29
+ def __more__() "/" end
30
+ end
31
+ alias_method "__delta__", "-" unless respond_to? "__delta__"
32
+ def - other
33
+ ret = __delta__ other
34
+ ret.extend DiffUnits
35
+ ret
36
+ end
37
+ end
38
+ class Numeric
39
+ include ::Time::Units
40
+ end
41
+
42
+ end
43
+
44
+
45
+ if $0 == __FILE__
46
+ require "yaml"
47
+ require "time"
48
+
49
+ now = Time::now
50
+
51
+ a = now
52
+ y 'a' => a
53
+
54
+ b = now + 2.hours + 2.minutes
55
+ y 'b' => b
56
+
57
+ d = b - a
58
+ %w( seconds minutes hours days ).each do |unit|
59
+ y "d.#{ unit }" => d.send(unit)
60
+ end
61
+ end
data/lib/timeunits.rb ADDED
@@ -0,0 +1,61 @@
1
+ unless $__timeunits__
2
+ $__timeunits__ = File.expand_path __FILE__
3
+
4
+ class Time
5
+ module Units
6
+ VERSION = "0.0.0"
7
+
8
+ def __less__() "/" end
9
+ def __more__() "*" end
10
+ def microseconds() self.send(Float(__more__,(10 ** -6))) end
11
+ def milliseconds() self.send(Float(__more__,(10 ** -3))) end
12
+ def seconds() self end
13
+ def minutes() seconds.send(__more__,60) end
14
+ def hours() minutes.send(__more__,60) end
15
+ def days() hours.send(__more__,24) end
16
+ def weeks() days.send(__more__,7) end
17
+ def months() weeks.send(__more__,4) end
18
+ def years() months.send(__more__,12) end
19
+ def decades() years.send(__more__,10) end
20
+ def centuries() decades.send(__more__,10) end
21
+ instance_methods.select{|m| m !~ /__/}.each do |plural|
22
+ singular = plural.chop
23
+ alias_method singular, plural
24
+ end
25
+ end
26
+ module DiffUnits
27
+ include ::Time::Units
28
+ def __less__() "*" end
29
+ def __more__() "/" end
30
+ end
31
+ alias_method "__delta__", "-" unless respond_to? "__delta__"
32
+ def - other
33
+ ret = __delta__ other
34
+ ret.extend DiffUnits
35
+ ret
36
+ end
37
+ end
38
+ class Numeric
39
+ include ::Time::Units
40
+ end
41
+
42
+ end
43
+
44
+
45
+ if $0 == __FILE__
46
+ require "yaml"
47
+ require "time"
48
+
49
+ now = Time::now
50
+
51
+ a = now
52
+ y 'a' => a
53
+
54
+ b = now + 2.hours + 2.minutes
55
+ y 'b' => b
56
+
57
+ d = b - a
58
+ %w( seconds minutes hours days ).each do |unit|
59
+ y "d.#{ unit }" => d.send(unit)
60
+ end
61
+ end
data/sample/a.rb ADDED
@@ -0,0 +1,15 @@
1
+ require "timeunits"
2
+ require "yaml"
3
+
4
+ now = Time::now
5
+
6
+ a = now
7
+ y 'a' => a
8
+
9
+ b = now + 2.hours + 2.minutes
10
+ y 'b' => b
11
+
12
+ d = b - a
13
+ %w( seconds minutes hours days ).each do |unit|
14
+ y "d.#{ unit }" => d.send(unit)
15
+ end
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.8.11
3
+ specification_version: 1
4
+ name: timeunits
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.0.0
7
+ date: 2006-09-05 00:00:00.000000 -06:00
8
+ summary: timeunits
9
+ require_paths:
10
+ - lib
11
+ email: ara.t.howard@noaa.gov
12
+ homepage: http://codeforpeople.com/lib/ruby/timeunits/
13
+ rubyforge_project:
14
+ description:
15
+ autorequire: timeunits
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: false
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ -
22
+ - ">"
23
+ - !ruby/object:Gem::Version
24
+ version: 0.0.0
25
+ version:
26
+ platform: ruby
27
+ signing_key:
28
+ cert_chain:
29
+ authors:
30
+ - Ara T. Howard
31
+ files:
32
+ - lib
33
+ - install.rb
34
+ - gemspec.rb
35
+ - sample
36
+ - README
37
+ - lib/timeunits-0.0.0.rb
38
+ - lib/timeunits.rb
39
+ - sample/a.rb
40
+ test_files: []
41
+ rdoc_options: []
42
+ extra_rdoc_files: []
43
+ executables: []
44
+ extensions: []
45
+ requirements: []
46
+ dependencies: []