timeunits 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []