solunar 0.0.2
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 +7 -0
- data/ext/solunar/DST_Files/Test.txt +11 -0
- data/ext/solunar/DST_Files/USA.txt +11 -0
- data/ext/solunar/Data_Files/Test.bin +0 -0
- data/ext/solunar/Data_Files/USA.bin +0 -0
- data/ext/solunar/Source_Files/Moon.txt +4019 -0
- data/ext/solunar/Source_Files/Phase.TXT +545 -0
- data/ext/solunar/Source_Files/Sun.txt +3729 -0
- data/ext/solunar/Source_Files/ilum_2016.txt +31 -0
- data/ext/solunar/Source_Files/ilum_2017.txt +31 -0
- data/ext/solunar/Source_Files/ilum_2018.txt +32 -0
- data/ext/solunar/Source_Files/ilum_2019.txt +31 -0
- data/ext/solunar/Source_Files/ilum_2020.txt +31 -0
- data/ext/solunar/Source_Files/ilum_2021.txt +31 -0
- data/ext/solunar/Source_Files/ilum_2022.txt +31 -0
- data/ext/solunar/Source_Files/ilum_2023.txt +31 -0
- data/ext/solunar/Source_Files/ilum_2024.txt +31 -0
- data/ext/solunar/Source_Files/ilum_2025.txt +31 -0
- data/ext/solunar/Source_Files/ilum_2026.txt +32 -0
- data/ext/solunar/astrocon.h +61 -0
- data/ext/solunar/extconf.rb +14 -0
- data/ext/solunar/solunar.c +1959 -0
- data/lib/solunar.rb +79 -0
- metadata +71 -0
data/lib/solunar.rb
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
class Solunar
|
2
|
+
|
3
|
+
VERSION = '0.0.1'
|
4
|
+
def version
|
5
|
+
"0.0.1"
|
6
|
+
end
|
7
|
+
|
8
|
+
def test
|
9
|
+
get_data("2017-05-01",200,29.2108,-81.0228,-5,1,0)
|
10
|
+
end
|
11
|
+
|
12
|
+
def get_data(date,count,lat,lon,tz_offset_hours,dst_offset_hours,military_time)
|
13
|
+
forecast = Array.new
|
14
|
+
res = generate(date,count,lat,lon,(tz_offset_hours*-60.0).to_i,(dst_offset_hours*60.0).to_i,military_time)
|
15
|
+
#Most data comes from the "generate" function, which lives in solunar.c
|
16
|
+
#Major feed times are currently defined as two hours starting at the moon underfoot and moon transit
|
17
|
+
#Minor feed times are one hour after moon rise and moon set
|
18
|
+
res.split(";").each do |line|
|
19
|
+
puts line
|
20
|
+
segments = line.split(",")
|
21
|
+
day = Hash.new
|
22
|
+
sun = Hash.new
|
23
|
+
moon = Hash.new
|
24
|
+
major_feed_times = Array.new
|
25
|
+
minor_feed_times = Array.new
|
26
|
+
sun[:rise] = segments[1].strip unless segments[1].strip == "NONE"
|
27
|
+
sun[:set] = segments[3].strip unless segments[3].strip == "NONE"
|
28
|
+
sun[:transit] = segments[2].strip unless segments[2].strip == "NONE"
|
29
|
+
moon[:rise] = segments[5].strip unless segments[5].strip == "NONE"
|
30
|
+
moon[:set] = segments[7].strip unless segments[7].strip == "NONE"
|
31
|
+
moon[:transit] = segments[6].strip unless segments[6].strip == "NONE"
|
32
|
+
day[:under_foot] = segments[4].strip unless segments[4].strip == "NONE"
|
33
|
+
unless moon[:rise].nil?
|
34
|
+
minor_feed_times << { start: moon[:rise], stop: add_hours(moon[:rise],1) }
|
35
|
+
end
|
36
|
+
unless moon[:set].nil?
|
37
|
+
minor_feed_times << { start: moon[:set], stop: add_hours(moon[:set],1) }
|
38
|
+
end
|
39
|
+
unless moon[:rise].nil? || moon[:set].nil? || moon[:rise].split(":").first.to_i < moon[:set].split(":").first.to_i
|
40
|
+
minor_feed_times.rotate!
|
41
|
+
end
|
42
|
+
unless moon[:transit].nil?
|
43
|
+
major_feed_times << { start: moon[:transit], stop: add_hours(moon[:transit],2) }
|
44
|
+
end
|
45
|
+
unless day[:under_foot].nil?
|
46
|
+
major_feed_times << { start: day[:under_foot], stop: add_hours(day[:under_foot],2) }
|
47
|
+
end
|
48
|
+
unless moon[:transit].nil? || day[:under_foot].nil? || moon[:transit].split(":").first.to_i < day[:under_foot].split(":").first.to_i
|
49
|
+
major_feed_times.rotate!
|
50
|
+
end
|
51
|
+
day[:date] = segments[0].strip
|
52
|
+
day[:days_since_new] = "Unknown"
|
53
|
+
day[:dayscale] = "Unknown"
|
54
|
+
day[:moon_illumination] = segments[12].strip
|
55
|
+
day[:moon_phase] = segments[10].strip
|
56
|
+
day[:moon] = moon
|
57
|
+
day[:sun] = sun
|
58
|
+
day[:major_feed_times] = major_feed_times
|
59
|
+
day[:minor_feed_times] = minor_feed_times
|
60
|
+
forecast<<day
|
61
|
+
end
|
62
|
+
forecast
|
63
|
+
end
|
64
|
+
|
65
|
+
def add_hours(str,num)
|
66
|
+
segs = str.split(":")
|
67
|
+
hour = segs[0].to_i
|
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]}:#{segs[2]}"
|
73
|
+
else
|
74
|
+
return "0#{hour.to_s}:#{segs[1]}:#{segs[2]}"
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
require 'solunar/solunar'
|
metadata
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: solunar
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- "\"Sullivan,"
|
8
|
+
- Nathan","Dawson,
|
9
|
+
- Rick"
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2016-10-24 00:00:00.000000000 Z
|
14
|
+
dependencies: []
|
15
|
+
description: A gem that wraps the C code from Rick Dawson that computes the sun and
|
16
|
+
moon times based on date and coordinates. Takes a series of arguments, and returns
|
17
|
+
a JSON of the hunting/fishing solunar forecast. While designed for hunting and fishing
|
18
|
+
applications, this may be useful to other apps that need solar or lunar data.
|
19
|
+
email: nathan@knockdownoutdoors.com
|
20
|
+
executables: []
|
21
|
+
extensions:
|
22
|
+
- ext/solunar/extconf.rb
|
23
|
+
extra_rdoc_files: []
|
24
|
+
files:
|
25
|
+
- ext/solunar/DST_Files/Test.txt
|
26
|
+
- ext/solunar/DST_Files/USA.txt
|
27
|
+
- ext/solunar/Data_Files/Test.bin
|
28
|
+
- ext/solunar/Data_Files/USA.bin
|
29
|
+
- ext/solunar/Source_Files/Moon.txt
|
30
|
+
- ext/solunar/Source_Files/Phase.TXT
|
31
|
+
- ext/solunar/Source_Files/Sun.txt
|
32
|
+
- ext/solunar/Source_Files/ilum_2016.txt
|
33
|
+
- ext/solunar/Source_Files/ilum_2017.txt
|
34
|
+
- ext/solunar/Source_Files/ilum_2018.txt
|
35
|
+
- ext/solunar/Source_Files/ilum_2019.txt
|
36
|
+
- ext/solunar/Source_Files/ilum_2020.txt
|
37
|
+
- ext/solunar/Source_Files/ilum_2021.txt
|
38
|
+
- ext/solunar/Source_Files/ilum_2022.txt
|
39
|
+
- ext/solunar/Source_Files/ilum_2023.txt
|
40
|
+
- ext/solunar/Source_Files/ilum_2024.txt
|
41
|
+
- ext/solunar/Source_Files/ilum_2025.txt
|
42
|
+
- ext/solunar/Source_Files/ilum_2026.txt
|
43
|
+
- ext/solunar/astrocon.h
|
44
|
+
- ext/solunar/extconf.rb
|
45
|
+
- ext/solunar/solunar.c
|
46
|
+
- lib/solunar.rb
|
47
|
+
homepage: https://github.com/KnockdownOutdoors/solunar
|
48
|
+
licenses:
|
49
|
+
- MIT
|
50
|
+
metadata: {}
|
51
|
+
post_install_message:
|
52
|
+
rdoc_options: []
|
53
|
+
require_paths:
|
54
|
+
- lib
|
55
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0'
|
60
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '0'
|
65
|
+
requirements: []
|
66
|
+
rubyforge_project:
|
67
|
+
rubygems_version: 2.4.3
|
68
|
+
signing_key:
|
69
|
+
specification_version: 4
|
70
|
+
summary: Solunar Forecasting Gem
|
71
|
+
test_files: []
|