solunar 0.0.10 → 0.0.11
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.
- checksums.yaml +4 -4
- data/lib/solunar.rb +67 -52
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2f066032447311375e4901e1108397e9f8aa3947
|
4
|
+
data.tar.gz: f17b7a85aff92490c0ca424a07080dba9cd7e69a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2cbd6dafc7a45e4c65035d214f7895221f06b668473b06c1a005ff9fbe96f2784e6a07d7c7ba7798c7fe696445d3dcc954c3cdbcbcbd3bb344b5587fe1e4a0b
|
7
|
+
data.tar.gz: fcd5d2724403176670dedb3074ab3c8644eb6a5f72d4c73e59b4ad990d68906d8352112515a51d1ab5822b004cd1e5a00a9017f91f2810ded93f18b40a2f7d2b
|
data/lib/solunar.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
class Solunar
|
2
|
+
require 'time'
|
2
3
|
|
3
4
|
NAME = "solunar"
|
4
|
-
VERSION = '0.0.
|
5
|
+
VERSION = '0.0.11'
|
5
6
|
def version
|
6
|
-
"0.0.
|
7
|
+
"0.0.11"
|
7
8
|
end
|
8
9
|
|
9
10
|
def test
|
@@ -20,37 +21,78 @@ class Solunar
|
|
20
21
|
res.split(";").each do |line|
|
21
22
|
next unless line.split(",").length > 7
|
22
23
|
segments = line.split(",")
|
24
|
+
iso = "%Y-%m-%dT%H:%M%:z"
|
25
|
+
hmt = "%H:%M"
|
26
|
+
tz_minutes = segments[9].to_i
|
27
|
+
tz_offset = tz_offset_hours >= 0 ? "+" : "-"
|
28
|
+
tz_offset = tz_offset + "#{double_digit(tz_minutes/60)}:#{double_digit(tz_minutes%60)}"
|
29
|
+
date = segments[0].strip
|
23
30
|
day = Hash.new
|
24
31
|
sun = Hash.new
|
25
32
|
moon = Hash.new
|
26
33
|
major_feed_times = Array.new
|
27
34
|
minor_feed_times = Array.new
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
35
|
+
sun_rise = Time.parse(date+" "+segments[1].strip[0..-4]+tz_offset) unless segments[1].strip == "NONE"
|
36
|
+
sun[:rise] = sun_rise.strftime(hmt) unless sun_rise.nil?
|
37
|
+
sun[:rise_at] = sun_rise.strftime(iso) unless sun_rise.nil?
|
38
|
+
sun_set = Time.parse(date+" "+segments[3].strip[0..-4]+tz_offset) unless segments[3].strip == "NONE"
|
39
|
+
sun[:set] = sun_set.strftime(hmt) unless sun_set.nil?
|
40
|
+
sun[:set_at] = sun_set.strftime(iso) unless sun_set.nil?
|
41
|
+
sun_transit = Time.parse(date+" "+segments[2].strip[0..-4]+tz_offset) unless segments[2].strip == "NONE"
|
42
|
+
sun[:transit] = sun_transit.strftime(hmt) unless sun_transit.nil?
|
43
|
+
sun[:transit_at] = sun_transit.strftime(iso) unless sun_transit.nil?
|
44
|
+
moon_rise = Time.parse(date+" "+segments[5].strip[0..-4]+tz_offset) unless segments[5].strip == "NONE"
|
45
|
+
moon[:rise] = moon_rise.strftime(hmt) unless moon_rise.nil?
|
46
|
+
moon[:rise_at] = moon_rise.strftime(iso) unless moon_rise.nil?
|
47
|
+
moon_set = Time.parse(date+" "+segments[7].strip[0..-4]+tz_offset) unless segments[7].strip == "NONE"
|
48
|
+
moon[:set] = moon_set.strftime(hmt) unless moon_set.nil?
|
49
|
+
moon[:set_at] = moon_set.strftime(iso) unless moon_set.nil?
|
50
|
+
moon_transit = Time.parse(date+" "+segments[6].strip[0..-4]+tz_offset) unless segments[6].strip == "NONE"
|
51
|
+
moon[:transit] = moon_transit.strftime(hmt) unless moon_transit.nil?
|
52
|
+
moon[:transit_at] = moon_transit.strftime(iso) unless moon_transit.nil?
|
53
|
+
day_under_foot = Time.parse(date+" "+segments[8].strip[0..-4]+tz_offset) unless segments[8].strip == "NONE"
|
54
|
+
day[:under_foot] = day_under_foot.strftime(hmt) unless day_under_foot.nil?
|
55
|
+
day[:under_foot_at] = day_under_foot.strftime(iso) unless day_under_foot.nil?
|
56
|
+
unless moon_rise.nil?
|
57
|
+
minor_feed_times << {
|
58
|
+
start: (moon_rise-45*60).strftime(hmt),
|
59
|
+
start_at: (moon_rise-45*60).strftime(iso),
|
60
|
+
stop: (moon_rise+45*60).strftime(hmt),
|
61
|
+
stop_at: (moon_rise+45*60).strftime(iso)
|
62
|
+
}
|
37
63
|
end
|
38
|
-
unless
|
39
|
-
|
64
|
+
unless moon_set.nil?
|
65
|
+
minor_feed_times << {
|
66
|
+
start: (moon_set-45*60).strftime(hmt),
|
67
|
+
start_at: (moon_set-45*60).strftime(iso),
|
68
|
+
stop: (moon_set+45*60).strftime(hmt),
|
69
|
+
stop_at: (moon_set+45*60).strftime(iso)
|
70
|
+
}
|
40
71
|
end
|
41
|
-
unless
|
72
|
+
unless moon_rise.nil? || moon_set.nil? || moon_rise < moon_set
|
42
73
|
minor_feed_times.rotate!
|
43
74
|
end
|
44
|
-
unless
|
45
|
-
major_feed_times << {
|
75
|
+
unless moon_transit.nil?
|
76
|
+
major_feed_times << {
|
77
|
+
start: (moon_transit-90*60).strftime(hmt),
|
78
|
+
start_at: (moon_transit-90*60).strftime(iso),
|
79
|
+
stop: (moon_transit+90*60).strftime(hmt),
|
80
|
+
stop_at: (moon_transit+90*60).strftime(iso)
|
81
|
+
}
|
46
82
|
end
|
47
|
-
unless
|
48
|
-
major_feed_times << {
|
83
|
+
unless day_under_foot.nil?
|
84
|
+
major_feed_times << {
|
85
|
+
start: (day_under_foot-90*60).strftime(hmt),
|
86
|
+
start_at: (day_under_foot-90*60).strftime(iso),
|
87
|
+
stop: (day_under_foot+90*60).strftime(hmt),
|
88
|
+
stop_at: (day_under_foot+90*60).strftime(iso)
|
89
|
+
}
|
49
90
|
end
|
50
|
-
unless
|
91
|
+
unless moon_transit.nil? || day_under_foot.nil? || moon_transit < day_under_foot
|
51
92
|
major_feed_times.rotate!
|
52
93
|
end
|
53
|
-
day[:date] =
|
94
|
+
day[:date] = date
|
95
|
+
day[:timestamp] = Time.parse(date+" 00:00:00"+tz_offset).strftime(iso)
|
54
96
|
day[:moon_illumination] = segments[12].strip
|
55
97
|
day[:moon_phase] = segments[10].strip
|
56
98
|
day[:moon] = moon
|
@@ -62,41 +104,14 @@ class Solunar
|
|
62
104
|
forecast
|
63
105
|
end
|
64
106
|
|
65
|
-
def
|
66
|
-
|
67
|
-
|
68
|
-
hour += num
|
69
|
-
hour += 24 if hour < 0
|
70
|
-
hour -= 24 if hour > 23
|
71
|
-
if hour > 9
|
72
|
-
return "#{hour.to_s}:#{segs[1]}"
|
73
|
-
else
|
74
|
-
return "0#{hour.to_s}:#{segs[1]}"
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
def add_minutes(str,num)
|
79
|
-
segs = str.split(":")
|
80
|
-
hour = segs[0].to_i
|
81
|
-
minutes = segs[1].to_i
|
82
|
-
minutes += num
|
83
|
-
while(minutes > 59)
|
84
|
-
minutes -= 60
|
85
|
-
hour += 1
|
86
|
-
end
|
87
|
-
while(minutes < 0)
|
88
|
-
minutes += 60
|
89
|
-
hour -= 1
|
90
|
-
end
|
91
|
-
minutes = "0".to_s + minutes.to_s if minutes < 10
|
92
|
-
hour += 24 if hour < 0
|
93
|
-
hour -= 24 if hour > 23
|
94
|
-
if hour > 9
|
95
|
-
return "#{hour.to_s}:#{minutes.to_s}"
|
107
|
+
def double_digit(num)
|
108
|
+
if num > 9 || num < -9
|
109
|
+
return num.to_s
|
96
110
|
else
|
97
|
-
return "0#{
|
111
|
+
return "0#{num.abs.to_s}"
|
98
112
|
end
|
99
113
|
end
|
100
114
|
|
101
115
|
end
|
116
|
+
|
102
117
|
require 'solunar/solunar'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solunar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- "\"Sullivan"
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2017-01-04 00:00:00.000000000 Z
|
14
14
|
dependencies: []
|
15
15
|
description: A gem that wraps the C code from Rick Dawson that computes the sun and
|
16
16
|
moon times based on date and coordinates. Takes a series of arguments, and returns
|
@@ -78,7 +78,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
78
78
|
version: '0'
|
79
79
|
requirements: []
|
80
80
|
rubyforge_project:
|
81
|
-
rubygems_version: 2.
|
81
|
+
rubygems_version: 2.5.2
|
82
82
|
signing_key:
|
83
83
|
specification_version: 4
|
84
84
|
summary: Solunar Forecasting Gem
|