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 +40 -0
- data/gemspec.rb +23 -0
- data/install.rb +206 -0
- data/lib/timeunits-0.0.0.rb +61 -0
- data/lib/timeunits.rb +61 -0
- data/sample/a.rb +15 -0
- metadata +46 -0
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
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: []
|