geoeras 0.0.1

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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/geoeras.rb +195 -0
  3. metadata +45 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3f748ebd610fb97be5d60f907a41718a02c5e354
4
+ data.tar.gz: 38f31eac70ed7e5b5db1eff13d0a642ec6e517b1
5
+ SHA512:
6
+ metadata.gz: f4aa1fb2346f563d7e1181aa04e34985059afa6e9b815c56f4e085ebf8177fae832dc51106a1fc173331716675b6ced9916754fa247e714c301f3ca26ed3eaf9
7
+ data.tar.gz: d29128ae719a6816c8742fb347909ea376046df931a4562790376d3fc2f2863ef55eb4f746f2839db5dbc69979bddea0d2d67e60c6044f905ba0c92d082a7774
data/lib/geoeras.rb ADDED
@@ -0,0 +1,195 @@
1
+ class Date
2
+ GEOLOGIC_TIME_PERIODS = [
3
+ {name:"Archean",lvl: 1,lag: 2500,eag: 4000},
4
+ {name:"Proterozoic",lvl: 1,lag: 541,eag: 2500},
5
+ {name:"Phanerozoic",lvl: 1,lag: 0,eag: 541},
6
+ {name:"Eoarchean",lvl: 2,lag: 3600,eag: 4000},
7
+ {name:"Paleoarchean",lvl: 2,lag: 3200,eag: 3600},
8
+ {name:"Mesoarchean",lvl: 2,lag: 2800,eag: 3200},
9
+ {name:"Neoarchean",lvl: 2,lag: 2500,eag: 2800},
10
+ {name:"Paleoproterozoic",lvl: 2,lag: 1600,eag: 2500},
11
+ {name:"Mesoproterozoic",lvl: 2,lag: 1000,eag: 1600},
12
+ {name:"Neoproterozoic",lvl: 2,lag: 541,eag: 1000},
13
+ {name:"Paleozoic",lvl: 2,lag: 252.2,eag: 541},
14
+ {name:"Mesozoic",lvl: 2,lag: 66,eag: 252.2},
15
+ {name:"Cenozoic",lvl: 2,lag: 0,eag: 66},
16
+ {name:"Siderian",lvl: 3,lag: 2300,eag: 2500},
17
+ {name:"Rhyacian",lvl: 3,lag: 2050,eag: 2300},
18
+ {name:"Orosirian",lvl: 3,lag: 1800,eag: 2050},
19
+ {name:"Statherian",lvl: 3,lag: 1600,eag: 1800},
20
+ {name:"Calymmian",lvl: 3,lag: 1400,eag: 1600},
21
+ {name:"Ectasian",lvl: 3,lag: 1200,eag: 1400},
22
+ {name:"Stenian",lvl: 3,lag: 1000,eag: 1200},
23
+ {name:"Tonian",lvl: 3,lag: 850,eag: 1000},
24
+ {name:"Cryogenian",lvl: 3,lag: 635,eag: 850},
25
+ {name:"Ediacaran",lvl: 3,lag: 541,eag: 635},
26
+ {name:"Cambrian",lvl: 3,lag: 485.4,eag: 541},
27
+ {name:"Ordovician",lvl: 3,lag: 443.4,eag: 485.4},
28
+ {name:"Silurian",lvl: 3,lag: 419.2,eag: 443.4},
29
+ {name:"Devonian",lvl: 3,lag: 358.9,eag: 419.2},
30
+ {name:"Carboniferous",lvl: 3,lag: 298.9,eag: 358.9},
31
+ {name:"Permian",lvl: 3,lag: 252.2,eag: 298.9},
32
+ {name:"Triassic",lvl: 3,lag: 201.3,eag: 252.2},
33
+ {name:"Jurassic",lvl: 3,lag: 145,eag: 201.3},
34
+ {name:"Cretaceous",lvl: 3,lag: 66,eag: 145},
35
+ {name:"Paleogene",lvl: 3,lag: 23.03,eag: 66},
36
+ {name:"Neogene",lvl: 3,lag: 2.588,eag: 23.03},
37
+ {name:"Quaternary",lvl: 3,lag: 0,eag: 2.588},
38
+ {name:"Terreneuvian",lvl: 4,lag: 521,eag: 541},
39
+ {name:"Series 2",lvl: 4,lag: 509,eag: 521},
40
+ {name:"Series 3",lvl: 4,lag: 497,eag: 509},
41
+ {name:"Furongian",lvl: 4,lag: 485.4,eag: 497},
42
+ {name:"Early Ordovician",lvl: 4,lag: 470,eag: 485.4},
43
+ {name:"Middle Ordovician",lvl: 4,lag: 458.4,eag: 470},
44
+ {name:"Late Ordovician",lvl: 4,lag: 443.4,eag: 458.4},
45
+ {name:"Llandovery",lvl: 4,lag: 433.4,eag: 443.4},
46
+ {name:"Wenlock",lvl: 4,lag: 427.4,eag: 433.4},
47
+ {name:"Ludlow",lvl: 4,lag: 423,eag: 427.4},
48
+ {name:"Pridoli",lvl: 4,lag: 419.2,eag: 423},
49
+ {name:"Early Devonian",lvl: 4,lag: 393.3,eag: 419.2},
50
+ {name:"Middle Devonian",lvl: 4,lag: 382.7,eag: 393.3},
51
+ {name:"Late Devonian",lvl: 4,lag: 358.9,eag: 382.7},
52
+ {name:"Mississippian",lvl: 4,lag: 323.2,eag: 358.9},
53
+ {name:"Pennsylvanian",lvl: 4,lag: 298.9,eag: 323.2},
54
+ {name:"Cisuralian",lvl: 4,lag: 272.3,eag: 298.9},
55
+ {name:"Guadalupian",lvl: 4,lag: 259.9,eag: 272.3},
56
+ {name:"Lopingian",lvl: 4,lag: 252.2,eag: 259.9},
57
+ {name:"Early Triassic",lvl: 4,lag: 247.2,eag: 252.2},
58
+ {name:"Middle Triassic",lvl: 4,lag: 237,eag: 247.2},
59
+ {name:"Late Triassic",lvl: 4,lag: 201.3,eag: 237},
60
+ {name:"Early Jurassic",lvl: 4,lag: 174.1,eag: 201.3},
61
+ {name:"Middle Jurassic",lvl: 4,lag: 163.5,eag: 174.1},
62
+ {name:"Late Jurassic",lvl: 4,lag: 145,eag: 163.5},
63
+ {name:"Early Cretaceous",lvl: 4,lag: 100.5,eag: 145},
64
+ {name:"Late Cretaceous",lvl: 4,lag: 66,eag: 100.5},
65
+ {name:"Paleocene",lvl: 4,lag: 56,eag: 66},
66
+ {name:"Eocene",lvl: 4,lag: 33.9,eag: 56},
67
+ {name:"Oligocene",lvl: 4,lag: 23.03,eag: 33.9},
68
+ {name:"Miocene",lvl: 4,lag: 5.333,eag: 23.03},
69
+ {name:"Pliocene",lvl: 4,lag: 2.588,eag: 5.333},
70
+ {name:"Pleistocene",lvl: 4,lag: 0.0117,eag: 2.588},
71
+ {name:"Holocene",lvl: 4,lag: 0,eag: 0.0117},
72
+ {name:"Fortunian",lvl: 5,lag: 529,eag: 541},
73
+ {name:"Stage 2",lvl: 5,lag: 521,eag: 529},
74
+ {name:"Stage 3",lvl: 5,lag: 514,eag: 521},
75
+ {name:"Stage 4",lvl: 5,lag: 509,eag: 514},
76
+ {name:"Stage 5",lvl: 5,lag: 504.5,eag: 509},
77
+ {name:"Drumian",lvl: 5,lag: 500.5,eag: 504.5},
78
+ {name:"Guzhangian",lvl: 5,lag: 497,eag: 500.5},
79
+ {name:"Paibian",lvl: 5,lag: 494,eag: 497},
80
+ {name:"Jiangshanian",lvl: 5,lag: 489.5,eag: 494},
81
+ {name:"Stage 10",lvl: 5,lag: 485.4,eag: 489.5},
82
+ {name:"Tremadocian",lvl: 5,lag: 477.7,eag: 485.4},
83
+ {name:"Floian",lvl: 5,lag: 470,eag: 477.7},
84
+ {name:"Dapingian",lvl: 5,lag: 467.3,eag: 470},
85
+ {name:"Darriwilian",lvl: 5,lag: 458.4,eag: 467.3},
86
+ {name:"Sandbian",lvl: 5,lag: 453,eag: 458.4},
87
+ {name:"Katian",lvl: 5,lag: 445.2,eag: 453},
88
+ {name:"Hirnantian",lvl: 5,lag: 443.4,eag: 445.2},
89
+ {name:"Rhuddanian",lvl: 5,lag: 440.8,eag: 443.4},
90
+ {name:"Aeronian",lvl: 5,lag: 438.5,eag: 440.8},
91
+ {name:"Telychian",lvl: 5,lag: 433.4,eag: 438.5},
92
+ {name:"Sheinwoodian",lvl: 5,lag: 430.5,eag: 433.4},
93
+ {name:"Homerian",lvl: 5,lag: 427.4,eag: 430.5},
94
+ {name:"Gorstian",lvl: 5,lag: 425.6,eag: 427.4},
95
+ {name:"Ludfordian",lvl: 5,lag: 423,eag: 425.6},
96
+ {name:"Pridoli",lvl: 5,lag: 419.2,eag: 423},
97
+ {name:"Lochkovian",lvl: 5,lag: 410.8,eag: 419.2},
98
+ {name:"Pragian",lvl: 5,lag: 407.6,eag: 410.8},
99
+ {name:"Emsian",lvl: 5,lag: 393.3,eag: 407.6},
100
+ {name:"Eifelian",lvl: 5,lag: 387.7,eag: 393.3},
101
+ {name:"Givetian",lvl: 5,lag: 382.7,eag: 387.7},
102
+ {name:"Frasnian",lvl: 5,lag: 372.2,eag: 382.7},
103
+ {name:"Famennian",lvl: 5,lag: 358.9,eag: 372.2},
104
+ {name:"Tournaisian",lvl: 5,lag: 346.7,eag: 358.9},
105
+ {name:"Visean",lvl: 5,lag: 330.9,eag: 346.7},
106
+ {name:"Serpukhovian",lvl: 5,lag: 323.2,eag: 330.9},
107
+ {name:"Bashkirian",lvl: 5,lag: 315.2,eag: 323.2},
108
+ {name:"Moscovian",lvl: 5,lag: 307,eag: 315.2},
109
+ {name:"Kasimovian",lvl: 5,lag: 303.7,eag: 307},
110
+ {name:"Gzhelian",lvl: 5,lag: 298.9,eag: 303.7},
111
+ {name:"Asselian",lvl: 5,lag: 295.5,eag: 298.9},
112
+ {name:"Sakmarian",lvl: 5,lag: 290.1,eag: 295.5},
113
+ {name:"Artinskian",lvl: 5,lag: 279.3,eag: 290.1},
114
+ {name:"Kungurian",lvl: 5,lag: 272.3,eag: 279.3},
115
+ {name:"Roadian",lvl: 5,lag: 268.8,eag: 272.3},
116
+ {name:"Wordian",lvl: 5,lag: 265.1,eag: 268.8},
117
+ {name:"Capitanian",lvl: 5,lag: 259.9,eag: 265.1},
118
+ {name:"Wuchiapingian",lvl: 5,lag: 254.2,eag: 259.9},
119
+ {name:"Changhsingian",lvl: 5,lag: 252.2,eag: 254.2},
120
+ {name:"Induan",lvl: 5,lag: 251.2,eag: 252.2},
121
+ {name:"Olenekian",lvl: 5,lag: 247.2,eag: 251.2},
122
+ {name:"Anisian",lvl: 5,lag: 242,eag: 247.2},
123
+ {name:"Ladinian",lvl: 5,lag: 237,eag: 242},
124
+ {name:"Carnian",lvl: 5,lag: 228,eag: 237},
125
+ {name:"Norian",lvl: 5,lag: 208.5,eag: 228},
126
+ {name:"Rhaetian",lvl: 5,lag: 201.3,eag: 208.5},
127
+ {name:"Hettangian",lvl: 5,lag: 199.3,eag: 201.3},
128
+ {name:"Sinemurian",lvl: 5,lag: 190.8,eag: 199.3},
129
+ {name:"Pliensbachian",lvl: 5,lag: 182.7,eag: 190.8},
130
+ {name:"Toarcian",lvl: 5,lag: 174.1,eag: 182.7},
131
+ {name:"Aalenian",lvl: 5,lag: 170.3,eag: 174.1},
132
+ {name:"Bajocian",lvl: 5,lag: 168.3,eag: 170.3},
133
+ {name:"Bathonian",lvl: 5,lag: 166.1,eag: 168.3},
134
+ {name:"Callovian",lvl: 5,lag: 163.5,eag: 166.1},
135
+ {name:"Oxfordian",lvl: 5,lag: 157.3,eag: 163.5},
136
+ {name:"Kimmeridgian",lvl: 5,lag: 152.1,eag: 157.3},
137
+ {name:"Tithonian",lvl: 5,lag: 145,eag: 152.1},
138
+ {name:"Berriasian",lvl: 5,lag: 139.8,eag: 145},
139
+ {name:"Valanginian",lvl: 5,lag: 132.9,eag: 139.8},
140
+ {name:"Hauterivian",lvl: 5,lag: 129.4,eag: 132.9},
141
+ {name:"Barremian",lvl: 5,lag: 125,eag: 129.4},
142
+ {name:"Aptian",lvl: 5,lag: 113,eag: 125},
143
+ {name:"Albian",lvl: 5,lag: 100.5,eag: 113},
144
+ {name:"Cenomanian",lvl: 5,lag: 93.9,eag: 100.5},
145
+ {name:"Turonian",lvl: 5,lag: 89.8,eag: 93.9},
146
+ {name:"Coniacian",lvl: 5,lag: 86.3,eag: 89.8},
147
+ {name:"Santonian",lvl: 5,lag: 83.6,eag: 86.3},
148
+ {name:"Campanian",lvl: 5,lag: 72.1,eag: 83.6},
149
+ {name:"Maastrichtian",lvl: 5,lag: 66,eag: 72.1},
150
+ {name:"Danian",lvl: 5,lag: 61.6,eag: 66},
151
+ {name:"Selandian",lvl: 5,lag: 59.2,eag: 61.6},
152
+ {name:"Thanetian",lvl: 5,lag: 56,eag: 59.2},
153
+ {name:"Ypresian",lvl: 5,lag: 47.8,eag: 56},
154
+ {name:"Lutetian",lvl: 5,lag: 41.3,eag: 47.8},
155
+ {name:"Bartonian",lvl: 5,lag: 38,eag: 41.3},
156
+ {name:"Priabonian",lvl: 5,lag: 33.9,eag: 38},
157
+ {name:"Rupelian",lvl: 5,lag: 28.1,eag: 33.9},
158
+ {name:"Chattian",lvl: 5,lag: 23.03,eag: 28.1},
159
+ {name:"Aquitanian",lvl: 5,lag: 20.44,eag: 23.03},
160
+ {name:"Burdigalian",lvl: 5,lag: 15.97,eag: 20.44},
161
+ {name:"Langhian",lvl: 5,lag: 13.82,eag: 15.97},
162
+ {name:"Serravallian",lvl: 5,lag: 11.62,eag: 13.82},
163
+ {name:"Tortonian",lvl: 5,lag: 7.246,eag: 11.62},
164
+ {name:"Messinian",lvl: 5,lag: 5.333,eag: 7.246},
165
+ {name:"Zanclean",lvl: 5,lag: 3.6,eag: 5.333},
166
+ {name:"Piacenzian",lvl: 5,lag: 2.588,eag: 3.6},
167
+ {name:"Gelasian",lvl: 5,lag: 1.806,eag: 2.588},
168
+ {name:"Calabrian",lvl: 5,lag: 0.781,eag: 1.806},
169
+ {name:"Middle Pleistocene",lvl: 5,lag: 0.126,eag: 0.781},
170
+ {name:"Late Pleistocene",lvl: 5,lag: 0.0117,eag: 0.126},
171
+ {name:"Holocene",lvl: 5,lag: 0,eag: 0.0117}
172
+ ]
173
+
174
+ def self.geologic_present
175
+ Date.new(1950,1,1)
176
+ end
177
+
178
+ def self.million_years_ago(years)
179
+ Date.geologic_present - (years*365*1000000).to_i
180
+ end
181
+
182
+ def in_geologic_time_range?(million_years_start, million_years_end)
183
+ time_period_start = Date.million_years_ago(million_years_start)
184
+ time_period_end = million_years_end == 0 ? Date.today : Date.million_years_ago(million_years_end)
185
+ (time_period_start..time_period_end).cover?(self)
186
+ end
187
+
188
+ def after_dinosaurs?
189
+ self > Date.million_years_ago(65)
190
+ end
191
+
192
+ GEOLOGIC_TIME_PERIODS.each do |time_period|
193
+ define_method("in_#{time_period[:name].downcase.tr(' ', '_')}?") { in_geologic_time_range?(time_period[:eag], time_period[:lag]) }
194
+ end
195
+ end
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: geoeras
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Martin Artnik
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-06-18 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A gem that adds geologic time related methods to Date
14
+ email: artoartnik@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/geoeras.rb
20
+ homepage: http://rubygems.org/gems/geoeras
21
+ licenses:
22
+ - MIT
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.0.6
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: Geologic Eras
44
+ test_files: []
45
+ has_rdoc: