night-time 0.0.1 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README +23 -7
- data/Rakefile +1 -51
- data/lib/night-time/calculate.rb +45 -0
- data/lib/night-time/jst.rb +145 -0
- data/lib/night-time/version.rb +3 -0
- data/lib/night-time.rb +5 -34
- data/night-time.gemspec +22 -0
- data/spec/jst_spec.rb +78 -0
- data/spec/night_time_spec.rb +32 -0
- data/spec/spec_helper.rb +2 -1
- metadata +46 -18
- data/spec/time_spec.rb +0 -28
data/README
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
NAME
|
2
|
-
|
2
|
+
NightTime behaves like Time but it also supports out of ranged values
|
3
3
|
|
4
4
|
SYNOPSIS
|
5
5
|
Native "mktime" method is too strict.
|
@@ -7,25 +7,41 @@ SYNOPSIS
|
|
7
7
|
Time.mktime(2010, 1, 10, 26, 40)
|
8
8
|
=> ArgumentError: argument out of range
|
9
9
|
|
10
|
+
Time.mktime(2010, 2, 32)
|
11
|
+
=> ArgumentError: argument out of range
|
12
|
+
|
10
13
|
We the midnight workers want flexible one.
|
11
14
|
|
12
15
|
require 'night-time'
|
13
|
-
|
16
|
+
NightTime.mktime(2010, 1, 10, 26, 40)
|
14
17
|
=> Mon Jan 11 02:40:00 +0900 2010
|
15
18
|
|
16
|
-
|
19
|
+
NightTime.parse('2010-01-10 26:40')
|
17
20
|
=> Mon Jan 11 02:40:00 +0900 2010
|
18
21
|
|
22
|
+
NightTime.mktime(2010, 2, 32)
|
23
|
+
=> Thu Mar 04 00:00:00 +0900 2010
|
24
|
+
|
19
25
|
w00t!
|
20
26
|
|
21
27
|
DESCRIPTION
|
22
|
-
|
28
|
+
* NightTime.mktime(*args)
|
29
|
+
* NightTime.parse(text)
|
30
|
+
* NightTime::Jst.parse(text)
|
31
|
+
|
32
|
+
JST
|
33
|
+
NightTime::Jst can extract time from Japanese texts.
|
23
34
|
|
24
|
-
|
35
|
+
jst = NightTime::Jst.new("テレビ7月8日(土)24:30~25:00")
|
36
|
+
jst.parse
|
37
|
+
=> [nil,7,8,24,30,nil]
|
25
38
|
|
26
|
-
|
39
|
+
jst.time
|
40
|
+
=> Mon Jul 09 00:30:00 +0900 2012
|
27
41
|
|
28
|
-
|
42
|
+
CHANGES
|
43
|
+
* 1.0.0: independent from Time object
|
44
|
+
|
29
45
|
|
30
46
|
HOMEPAGE
|
31
47
|
http://github.com/maiha/night-time
|
data/Rakefile
CHANGED
@@ -1,51 +1 @@
|
|
1
|
-
require
|
2
|
-
require 'rake/gempackagetask'
|
3
|
-
|
4
|
-
GEM_NAME = "night-time"
|
5
|
-
AUTHOR = "maiha"
|
6
|
-
EMAIL = "maiha@wota.jp"
|
7
|
-
HOMEPAGE = "http://github.com/maiha/night-time"
|
8
|
-
SUMMARY = "An extension to Time class that supports out of ranged values"
|
9
|
-
GEM_VERSION = "0.0.1"
|
10
|
-
|
11
|
-
spec = Gem::Specification.new do |s|
|
12
|
-
s.rubyforge_project = 'asakusarb'
|
13
|
-
s.executables = []
|
14
|
-
s.name = GEM_NAME
|
15
|
-
s.version = GEM_VERSION
|
16
|
-
s.platform = Gem::Platform::RUBY
|
17
|
-
s.has_rdoc = true
|
18
|
-
s.extra_rdoc_files = ["README", "MIT-LICENSE"]
|
19
|
-
s.summary = SUMMARY
|
20
|
-
s.description = s.summary
|
21
|
-
s.author = AUTHOR
|
22
|
-
s.email = EMAIL
|
23
|
-
s.homepage = HOMEPAGE
|
24
|
-
s.require_path = 'lib'
|
25
|
-
s.files = %w(MIT-LICENSE README Rakefile) + Dir.glob("{lib,spec}/**/*")
|
26
|
-
end
|
27
|
-
|
28
|
-
Rake::GemPackageTask.new(spec) do |pkg|
|
29
|
-
pkg.gem_spec = spec
|
30
|
-
end
|
31
|
-
|
32
|
-
desc "Install the gem"
|
33
|
-
task :install do
|
34
|
-
Merb::RakeHelper.install(GEM_NAME, :version => GEM_VERSION)
|
35
|
-
end
|
36
|
-
|
37
|
-
desc "Uninstall the gem"
|
38
|
-
task :uninstall do
|
39
|
-
Merb::RakeHelper.uninstall(GEM_NAME, :version => GEM_VERSION)
|
40
|
-
end
|
41
|
-
|
42
|
-
desc "Create a gemspec file"
|
43
|
-
task :gemspec do
|
44
|
-
File.open("#{GEM_NAME}.gemspec", "w") do |file|
|
45
|
-
file.puts spec.to_ruby
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
require 'spec/rake/spectask'
|
50
|
-
desc 'Default: run spec examples'
|
51
|
-
task :default => 'spec'
|
1
|
+
require "bundler/gem_tasks"
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'parsedate'
|
2
|
+
|
3
|
+
module NightTime
|
4
|
+
module Calculate
|
5
|
+
def mod_midnight(hour, min, sec)
|
6
|
+
extra = 0
|
7
|
+
|
8
|
+
squeeze = lambda{|val, max, unit, extra|
|
9
|
+
num, new_val = val.divmod(max)
|
10
|
+
[new_val, extra + max*num*unit]
|
11
|
+
}
|
12
|
+
sec , extra = squeeze.call(sec.to_i , 60, 1 , extra)
|
13
|
+
min , extra = squeeze.call(min.to_i , 60, 60 , extra)
|
14
|
+
hour, extra = squeeze.call(hour.to_i, 24, 60*60, extra)
|
15
|
+
|
16
|
+
return [hour, min, sec, extra]
|
17
|
+
end
|
18
|
+
|
19
|
+
def mktime(*args)
|
20
|
+
year, mon, day, hour, min, sec, usec = args
|
21
|
+
extra = 0
|
22
|
+
if hour.to_i >= 24 or min.to_i >= 60 or sec.to_i > 60
|
23
|
+
hour, min, sec, extra = mod_midnight(hour, min, sec)
|
24
|
+
end
|
25
|
+
|
26
|
+
begin
|
27
|
+
Time.mktime(year, mon, day, hour, min, sec, usec) + extra
|
28
|
+
rescue ArgumentError
|
29
|
+
if day < 28
|
30
|
+
raise
|
31
|
+
else
|
32
|
+
extra += (day - 28) * 86400
|
33
|
+
day = 28
|
34
|
+
Time.mktime(year, mon, day, hour, min, sec, usec) + extra
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def parse(text)
|
40
|
+
mktime(*ParseDate.parsedate(text)[0,7])
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
extend Calculate
|
45
|
+
end
|
@@ -0,0 +1,145 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'nkf'
|
3
|
+
|
4
|
+
module NightTime
|
5
|
+
class Jst
|
6
|
+
def self.parse(text, now = nil)
|
7
|
+
new(text).time(now)
|
8
|
+
end
|
9
|
+
|
10
|
+
class Build < RuntimeError
|
11
|
+
attr_accessor :year,:month,:day,:hour,:min,:sec
|
12
|
+
def date?; month and day; end
|
13
|
+
def time?; hour and min; end
|
14
|
+
def full?; date? and time?; end
|
15
|
+
def to_array; [year, month, day, hour, min, sec]; end
|
16
|
+
def to_time; NightTime.mktime(year, month, day, hour||0, min||0, sec||0); end
|
17
|
+
def inspect; "<Build: %s>" % [year,month,day,hour,min,sec].inspect; end
|
18
|
+
end
|
19
|
+
|
20
|
+
def initialize(text)
|
21
|
+
@text = NKF.nkf('-Wwxm0Z0', text).gsub(/\s+/m,' ').strip
|
22
|
+
@build = Build.new
|
23
|
+
end
|
24
|
+
|
25
|
+
def parsedate
|
26
|
+
build!
|
27
|
+
@build.to_array
|
28
|
+
end
|
29
|
+
|
30
|
+
def parse
|
31
|
+
parsedate
|
32
|
+
end
|
33
|
+
|
34
|
+
def time(now = nil)
|
35
|
+
unless now
|
36
|
+
now = Time.now
|
37
|
+
now = Time.mktime(now.year, now.month, now.day)
|
38
|
+
end
|
39
|
+
|
40
|
+
build!
|
41
|
+
b = @build.dup
|
42
|
+
b.year ||= now.year
|
43
|
+
b.month ||= now.month
|
44
|
+
b.day ||= now.day
|
45
|
+
b.hour ||= now.hour
|
46
|
+
b.min ||= now.min
|
47
|
+
b.sec ||= now.sec
|
48
|
+
return b.to_time
|
49
|
+
end
|
50
|
+
|
51
|
+
def parse!
|
52
|
+
build!
|
53
|
+
|
54
|
+
if @build.full?
|
55
|
+
return @build.to_time
|
56
|
+
elsif @build.date?
|
57
|
+
build = @build.dup
|
58
|
+
build.year ||= Time.now.year
|
59
|
+
return build.to_time
|
60
|
+
else
|
61
|
+
return nil
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
private
|
66
|
+
def build!
|
67
|
+
catch(:completed) {
|
68
|
+
parse_nengappi
|
69
|
+
parse_gappi
|
70
|
+
parse_iso8601
|
71
|
+
parse_jifunbyou
|
72
|
+
parse_jifun
|
73
|
+
parse_month_slash_day
|
74
|
+
parse_hour_colon_min
|
75
|
+
}
|
76
|
+
end
|
77
|
+
|
78
|
+
def parse_nengappi
|
79
|
+
@text.scan(/(\d{4})\s*年\s*(\d{1,2})\s*月\s*(\d{1,2})\s*日/) {
|
80
|
+
@build.year ||= $1.to_i
|
81
|
+
@build.month ||= $2.to_i
|
82
|
+
@build.day ||= $3.to_i
|
83
|
+
return validate!
|
84
|
+
}
|
85
|
+
end
|
86
|
+
|
87
|
+
def parse_gappi
|
88
|
+
@text.scan(/(\d{1,2})\s*月\s*(\d{1,2})\s*日/) {
|
89
|
+
@build.month ||= $1.to_i
|
90
|
+
@build.day ||= $2.to_i
|
91
|
+
return validate!
|
92
|
+
}
|
93
|
+
end
|
94
|
+
|
95
|
+
def parse_iso8601
|
96
|
+
@text.scan(/(\d{4})[-\/](\d{1,2})[-\/](\d{1,2})/) {
|
97
|
+
@build.year ||= $1.to_i
|
98
|
+
@build.month ||= $2.to_i
|
99
|
+
@build.day ||= $3.to_i
|
100
|
+
return validate!
|
101
|
+
}
|
102
|
+
end
|
103
|
+
|
104
|
+
def parse_month_slash_day
|
105
|
+
@text.scan(/(\d{1,2})\/(\d{1,2})/) {
|
106
|
+
@build.month ||= $1.to_i
|
107
|
+
@build.day ||= $2.to_i
|
108
|
+
return validate!
|
109
|
+
}
|
110
|
+
end
|
111
|
+
|
112
|
+
def parse_jifunbyou
|
113
|
+
@text.scan(/(夜)?\s*(\d{1,2})\s*時\s*(\d{1,2})\s*分\s*(\d{1,2})秒/) {
|
114
|
+
hour_margin = ($1 and $2.to_i < 5) ? 24 : 0
|
115
|
+
@build.hour ||= hour_margin + $2.to_i
|
116
|
+
@build.min ||= $3.to_i
|
117
|
+
@build.sec ||= $4.to_i
|
118
|
+
return validate!
|
119
|
+
}
|
120
|
+
end
|
121
|
+
|
122
|
+
def parse_jifun
|
123
|
+
@text.scan(/(夜)?\s*(\d{1,2})\s*時\s*(\d{1,2})\s*分/) {
|
124
|
+
hour_margin = ($1 and $2.to_i < 5) ? 24 : 0
|
125
|
+
@build.hour ||= hour_margin + $2.to_i
|
126
|
+
@build.min ||= $3.to_i
|
127
|
+
return validate!
|
128
|
+
}
|
129
|
+
end
|
130
|
+
|
131
|
+
def parse_hour_colon_min
|
132
|
+
@text.scan(/(夜)?\s*(\d{1,2}):(\d{1,2})/) {
|
133
|
+
hour_margin = ($1 and $2.to_i < 5) ? 24 : 0
|
134
|
+
@build.hour ||= hour_margin + $2.to_i
|
135
|
+
@build.min ||= $3.to_i
|
136
|
+
return validate!
|
137
|
+
}
|
138
|
+
end
|
139
|
+
|
140
|
+
def validate!
|
141
|
+
throw(:completed) if @build.full?
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
data/lib/night-time.rb
CHANGED
@@ -1,37 +1,8 @@
|
|
1
|
-
require
|
1
|
+
require "night-time/version"
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
extra = 0
|
7
|
-
|
8
|
-
squeeze = lambda{|val, max, unit, extra|
|
9
|
-
num, new_val = val.divmod(max)
|
10
|
-
[new_val, extra + max*num*unit]
|
11
|
-
}
|
12
|
-
sec , extra = squeeze.call(sec.to_i , 60, 1 , extra)
|
13
|
-
min , extra = squeeze.call(min.to_i , 60, 60 , extra)
|
14
|
-
hour, extra = squeeze.call(hour.to_i, 24, 60*60, extra)
|
15
|
-
|
16
|
-
return [hour, min, sec, extra]
|
17
|
-
end
|
18
|
-
|
19
|
-
|
20
|
-
alias mktime_without_night_time mktime
|
3
|
+
module NightTime
|
4
|
+
autoload :Jst, "night-time/jst"
|
5
|
+
end
|
21
6
|
|
22
|
-
|
23
|
-
year, mon, day, hour, min, sec, usec = args
|
24
|
-
extra = 0
|
25
|
-
if hour.to_i >= 24 or min.to_i >= 60 or sec.to_i > 60
|
26
|
-
hour, min, sec, extra = mod_midnight(hour, min, sec)
|
27
|
-
end
|
28
|
-
mktime_without_night_time(year, mon, day, hour, min, sec, usec) + extra
|
29
|
-
end
|
7
|
+
require File.join(File.dirname(__FILE__), "night-time/calculate")
|
30
8
|
|
31
|
-
unless respond_to?(:parse)
|
32
|
-
def parse(text)
|
33
|
-
Time.mktime(*ParseDate.parsedate(text)[0,7])
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
data/night-time.gemspec
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "night-time/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "night-time"
|
7
|
+
s.version = NightTime::VERSION
|
8
|
+
s.authors = ["maiha"]
|
9
|
+
s.email = ["maiha@wota.jp"]
|
10
|
+
s.homepage = "https://github.com/maiha/night-time"
|
11
|
+
s.summary = %q{NightTime behaves like Time but it also supports out of ranged values}
|
12
|
+
s.description = %q{NightTime behaves like Time but it also supports out of ranged values}
|
13
|
+
|
14
|
+
s.rubyforge_project = "night-time"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
s.add_development_dependency "rspec"
|
22
|
+
end
|
data/spec/jst_spec.rb
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), 'spec_helper.rb')
|
4
|
+
|
5
|
+
describe NightTime::Jst do
|
6
|
+
describe ".parse" do
|
7
|
+
it "should return a time object" do
|
8
|
+
NightTime::Jst.parse("2012/7/3 11:30").should == Time.mktime(2012,7,3,11,30)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe NightTime::Jst do
|
14
|
+
let(:year ) { Time.now.year }
|
15
|
+
let(:month) { Time.now.month }
|
16
|
+
let(:day ) { Time.now.day }
|
17
|
+
subject { NightTime::Jst.new(text) }
|
18
|
+
|
19
|
+
context "(YYYY-MM-DD)" do
|
20
|
+
let(:text ) { "1994-04-12" }
|
21
|
+
its(:parse) { should == [1994,4,12,nil,nil,nil] }
|
22
|
+
its(:time ) { should == Time.mktime(1994,4,12) }
|
23
|
+
end
|
24
|
+
|
25
|
+
context "(XXXX/X/X)" do
|
26
|
+
let(:text ) { "2012/7/3" }
|
27
|
+
its(:parse) { should == [2012,7,3,nil,nil,nil] }
|
28
|
+
its(:time ) { should == Time.mktime(2012,7,3) }
|
29
|
+
end
|
30
|
+
|
31
|
+
context "(XX月XX日)[半角]" do
|
32
|
+
let(:text ) { "テレビ7月8日(土)24:30~25:00" }
|
33
|
+
its(:parse) { should == [nil,7,8,24,30,nil] }
|
34
|
+
its(:time ) { should == Time.mktime(year,7,9,0,30) }
|
35
|
+
end
|
36
|
+
|
37
|
+
context "(XX月XX日)[全角]" do
|
38
|
+
let(:text ) { "テレビ 7月8日(土)24:30~25:00" }
|
39
|
+
its(:parse) { should == [nil,7,8,24,30,nil] }
|
40
|
+
its(:time ) { should == Time.mktime(year,7,9,0,30) }
|
41
|
+
end
|
42
|
+
|
43
|
+
context "(XX年XX月XX日XX時XX分)" do
|
44
|
+
let(:text ) { "日テレ 2012年7月8日(日)12時45分~13時55分(1)水中を走る車" }
|
45
|
+
its(:parse) { should == [2012,7,8,12,45,nil] }
|
46
|
+
its(:time ) { should == Time.mktime(2012,7,8,12,45) }
|
47
|
+
end
|
48
|
+
|
49
|
+
context "(XX年XX月XX日26時XX分)" do
|
50
|
+
let(:text ) { "TBSチャンネルHD 2012年7月6日(金) 26時55分~27時25分" }
|
51
|
+
its(:parse) { should == [2012,7,6,26,55,nil] }
|
52
|
+
its(:time ) { should == Time.mktime(2012,7,7,2,55) }
|
53
|
+
end
|
54
|
+
|
55
|
+
context "(X月X日X時夜XX分XX秒)" do
|
56
|
+
let(:text ) { "【#65】7月2日(月)深夜3時33分22秒~【#66】7月3日(火)" }
|
57
|
+
its(:parse) { should == [nil, 7, 2, 27, 33, 22] }
|
58
|
+
its(:time ) { should == Time.mktime(year,7,3,3,33,22) }
|
59
|
+
end
|
60
|
+
|
61
|
+
context "(XX年XX月XX日XX:XX)" do
|
62
|
+
let(:text ) { "日テレ7月9日(月)19:00~20:54MC" }
|
63
|
+
its(:parse) { should == [nil, 7, 9, 19, 0, nil] }
|
64
|
+
its(:time ) { should == Time.mktime(year,7,9,19) }
|
65
|
+
end
|
66
|
+
|
67
|
+
context "(XX年XX月XX日 夜XX:XX)" do
|
68
|
+
let(:text ) { "XXX7/14(土)夜0:15-1:45 NHK" }
|
69
|
+
its(:parse) { should == [nil, 7, 14, 24, 15, nil] }
|
70
|
+
its(:time ) { should == Time.mktime(year,7,15,0,15) }
|
71
|
+
end
|
72
|
+
|
73
|
+
context "(XX:XX)" do
|
74
|
+
let(:text ) { "隔週木曜23:30-24:00" }
|
75
|
+
its(:parse) { should == [nil, nil, nil, 23, 30, nil] }
|
76
|
+
its(:time ) { should == Time.mktime(year,month,day,23,30) }
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
|
2
|
+
require File.join(File.dirname(__FILE__), 'spec_helper.rb')
|
3
|
+
|
4
|
+
describe NightTime do
|
5
|
+
describe ".mktime" do
|
6
|
+
it "should treat late night time" do
|
7
|
+
NightTime.mktime(2010,1,10,26,40).should == Time.mktime(2010,1,11,2,40)
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should treat date overflow" do
|
11
|
+
NightTime.mktime(2010,2,33).should == Time.mktime(2010,3,5)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should treat valid time too" do
|
15
|
+
NightTime.mktime(2010,1,10, 2,40).should == Time.mktime(2010,1,10,2,40)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should provide .parse" do
|
20
|
+
NightTime.should respond_to(:parse)
|
21
|
+
end
|
22
|
+
|
23
|
+
describe ".parse" do
|
24
|
+
it "should parse late night time" do
|
25
|
+
NightTime.parse('2010-01-10 26:40').should == Time.mktime(2010,1,11,2,40)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should treat valid time too" do
|
29
|
+
NightTime.parse('2010-01-10 02:40').should == Time.mktime(2010,1,10,2,40)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: night-time
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 21
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 1.0.1
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- maiha
|
@@ -9,28 +15,44 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date:
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
+
date: 2012-07-03 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: rspec
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
version: "0"
|
32
|
+
type: :development
|
33
|
+
version_requirements: *id001
|
34
|
+
description: NightTime behaves like Time but it also supports out of ranged values
|
35
|
+
email:
|
36
|
+
- maiha@wota.jp
|
18
37
|
executables: []
|
19
38
|
|
20
39
|
extensions: []
|
21
40
|
|
22
|
-
extra_rdoc_files:
|
23
|
-
|
24
|
-
- MIT-LICENSE
|
41
|
+
extra_rdoc_files: []
|
42
|
+
|
25
43
|
files:
|
26
44
|
- MIT-LICENSE
|
27
45
|
- README
|
28
46
|
- Rakefile
|
29
47
|
- lib/night-time.rb
|
30
|
-
-
|
48
|
+
- lib/night-time/calculate.rb
|
49
|
+
- lib/night-time/jst.rb
|
50
|
+
- lib/night-time/version.rb
|
51
|
+
- night-time.gemspec
|
52
|
+
- spec/jst_spec.rb
|
53
|
+
- spec/night_time_spec.rb
|
31
54
|
- spec/spec_helper.rb
|
32
|
-
|
33
|
-
homepage: http://github.com/maiha/night-time
|
55
|
+
homepage: https://github.com/maiha/night-time
|
34
56
|
licenses: []
|
35
57
|
|
36
58
|
post_install_message:
|
@@ -39,23 +61,29 @@ rdoc_options: []
|
|
39
61
|
require_paths:
|
40
62
|
- lib
|
41
63
|
required_ruby_version: !ruby/object:Gem::Requirement
|
64
|
+
none: false
|
42
65
|
requirements:
|
43
66
|
- - ">="
|
44
67
|
- !ruby/object:Gem::Version
|
68
|
+
hash: 3
|
69
|
+
segments:
|
70
|
+
- 0
|
45
71
|
version: "0"
|
46
|
-
version:
|
47
72
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
48
74
|
requirements:
|
49
75
|
- - ">="
|
50
76
|
- !ruby/object:Gem::Version
|
77
|
+
hash: 3
|
78
|
+
segments:
|
79
|
+
- 0
|
51
80
|
version: "0"
|
52
|
-
version:
|
53
81
|
requirements: []
|
54
82
|
|
55
|
-
rubyforge_project:
|
56
|
-
rubygems_version: 1.
|
83
|
+
rubyforge_project: night-time
|
84
|
+
rubygems_version: 1.8.15
|
57
85
|
signing_key:
|
58
86
|
specification_version: 3
|
59
|
-
summary:
|
87
|
+
summary: NightTime behaves like Time but it also supports out of ranged values
|
60
88
|
test_files: []
|
61
89
|
|
data/spec/time_spec.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
|
2
|
-
require File.join(File.dirname(__FILE__), 'spec_helper.rb')
|
3
|
-
|
4
|
-
describe Time do
|
5
|
-
describe ".mktime" do
|
6
|
-
it "should treat late night time" do
|
7
|
-
Time.mktime(2010,1,10,26,40).should == Time.mktime(2010,1,11,2,40)
|
8
|
-
end
|
9
|
-
|
10
|
-
it "should treat valid time too" do
|
11
|
-
Time.mktime(2010,1,10, 2,40).should == Time.mktime(2010,1,10,2,40)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
it "should provide .parse" do
|
16
|
-
Time.should respond_to(:parse)
|
17
|
-
end
|
18
|
-
|
19
|
-
describe ".parse" do
|
20
|
-
it "should parse late night time" do
|
21
|
-
Time.parse('2010-01-10 26:40').should == Time.mktime(2010,1,11,2,40)
|
22
|
-
end
|
23
|
-
|
24
|
-
it "should treat valid time too" do
|
25
|
-
Time.parse('2010-01-10 02:40').should == Time.mktime(2010,1,10,2,40)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|