little-elementor 0.1.1 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/little-elementor/helpers.rb +19 -3
- data/lib/little_elementor.rb +17 -6
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fd6993f5ac888ce30210412297e17679f56d83b2739378fd4d335e987236970f
|
4
|
+
data.tar.gz: a10194c173ad81aed5fdca992e7b17df8d5dda5c0fb56a3f0a2cdcbd99385bee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 047ab0fe594e365546eb2d4977e44f17ba9a8a777ec575c65a69219b800c3265a8e3288896100788fee2083135242d9652ae7ab818c78d346fbf73fee7b34403
|
7
|
+
data.tar.gz: d36bd4caaa51604d8e85593b25d544ee787e6cbe9cab1515cdcf7de76ed5b6306b08ab1a0d3a031beb6f362a408901dc990a3a45c6d88e2adae9a5772de04996
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module LittleElementor
|
2
2
|
module Helpers
|
3
3
|
|
4
|
+
PERIODS = [2, 8, 8, 18, 18, 18, 18]
|
4
5
|
L = ["S", "P", "D", "F", "G", "H", "I", "J"]
|
5
6
|
ELEMENTS = [
|
6
7
|
{name: "hydrogen", sym: "H"},
|
@@ -23,9 +24,9 @@ module LittleElementor
|
|
23
24
|
{name: "argon", sym: "Ar"},
|
24
25
|
{name: "potassium", sym: "K"},
|
25
26
|
{name: "calcium", sym: "Ca"},
|
26
|
-
{name: "scandium", sym: "
|
27
|
+
{name: "scandium", sym: "Sc"},
|
27
28
|
{name: "titanium", sym: "Ti"},
|
28
|
-
{name: "vanadium", sym: "
|
29
|
+
{name: "vanadium", sym: "V"},
|
29
30
|
{name: "chromium", sym: "Cr"},
|
30
31
|
{name: "manganese", sym: "Mn"},
|
31
32
|
{name: "iron", sym: "Fe"},
|
@@ -135,6 +136,10 @@ module LittleElementor
|
|
135
136
|
end
|
136
137
|
end
|
137
138
|
end
|
139
|
+
|
140
|
+
def get_name()
|
141
|
+
LittleElementor::Helpers::ELEMENTS[@atomic_number-1][:name]
|
142
|
+
end
|
138
143
|
|
139
144
|
def get_e_c(sorted)
|
140
145
|
i = 0
|
@@ -151,7 +156,18 @@ module LittleElementor
|
|
151
156
|
arr << LittleElementor::Orbital.new(orbital.n, orbital.l, els)
|
152
157
|
i+=els
|
153
158
|
end
|
154
|
-
return sorted ? arr.sort_by{|o| o.n} : arr
|
159
|
+
return sorted ? arr.sort_by{|o| [o.n, o.l]} : arr
|
160
|
+
end
|
161
|
+
|
162
|
+
def get_c_e_c()
|
163
|
+
if @period == 1
|
164
|
+
[nil, electron_configuration]
|
165
|
+
else
|
166
|
+
i = LittleElementor::Helpers::PERIODS[0..@period-2].sum
|
167
|
+
nobel_gas = LittleElementor::Element.new(atomic_number: i)
|
168
|
+
c_e_c = electron_configuration.slice(nobel_gas.electron_configuration.length, electron_configuration.length-1).map(&:to_s)
|
169
|
+
[nobel_gas, c_e_c]
|
170
|
+
end
|
155
171
|
end
|
156
172
|
end
|
157
173
|
end
|
data/lib/little_elementor.rb
CHANGED
@@ -5,22 +5,20 @@ module LittleElementor
|
|
5
5
|
class Element
|
6
6
|
include LittleElementor::Helpers
|
7
7
|
|
8
|
-
attr_reader :period, :atomic_number, :group, :charge, :is_nobel_gas, :symbol, :name
|
8
|
+
attr_reader :period, :atomic_number, :group, :charge, :is_nobel_gas, :symbol, :name
|
9
9
|
def initialize(opts)
|
10
10
|
opts = opts.has_key?(:charge) ? opts : opts.merge({:charge => 0})
|
11
11
|
@charge = opts[:charge]
|
12
12
|
if opts.has_key?(:atomic_number)
|
13
|
-
@
|
14
|
-
@atomic_number = @fake_atomic_number + @charge
|
13
|
+
@atomic_number = opts[:atomic_number] + @charge
|
15
14
|
@symbol = LittleElementor::Helpers::ELEMENTS[@atomic_number-1][:sym]
|
16
15
|
elsif opts.has_key?(:symbol)
|
17
16
|
@atomic_number = LittleElementor::Helpers::ELEMENTS.find_index{|i| i[:sym] == opts[:symbol]} + 1
|
18
|
-
@fake_atomic_number = @atomic_number + @charge
|
19
17
|
@symbol = opts[:symbol]
|
20
18
|
end
|
21
19
|
@group = @atomic_number == 2 ? 18 : get_group()
|
22
20
|
@is_nobel_gas = @group == 18
|
23
|
-
@name =
|
21
|
+
@name = get_name()
|
24
22
|
@period = electron_configuration.map(&:n).max
|
25
23
|
end
|
26
24
|
|
@@ -29,7 +27,20 @@ module LittleElementor
|
|
29
27
|
end
|
30
28
|
|
31
29
|
def to_s
|
32
|
-
"
|
30
|
+
"Compressed Electron Configuration: #{human_friendly_c_e_c}\nSymbol: #{@symbol}\nis a noble gas?: #{@is_nobel_gas}\ncharge: #{@charge}\nname: #{@name}\natomic_number #{@atomic_number}\nsorted electron configuration: #{electron_configuration.map(&:to_s)}\nelectron configuration: #{electron_configuration(sorted: false).map(&:to_s)}\nperiod: #{@period}\ngroup: #{@group}"
|
31
|
+
end
|
32
|
+
|
33
|
+
def compressed_electron_configuration
|
34
|
+
if @compressed_electron_configuration
|
35
|
+
@compressed_electron_configuration
|
36
|
+
else
|
37
|
+
@compressed_electron_configuration = get_c_e_c()
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def human_friendly_c_e_c
|
42
|
+
sym = @period == 1 ? "" : "[#{compressed_electron_configuration[0].symbol}] "
|
43
|
+
"#{sym}#{compressed_electron_configuration[1].map(&:to_s).join ", "}"
|
33
44
|
end
|
34
45
|
end
|
35
46
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: little-elementor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kourosh Alinaghi
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-08-03 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A little library that gives you minimal information about an element.
|
14
14
|
email: kouroshalinaghi@gmail.com
|
@@ -23,7 +23,7 @@ homepage: https://github.com/kouroshalinaghi/little-elementor
|
|
23
23
|
licenses:
|
24
24
|
- MIT
|
25
25
|
metadata: {}
|
26
|
-
post_install_message:
|
26
|
+
post_install_message:
|
27
27
|
rdoc_options: []
|
28
28
|
require_paths:
|
29
29
|
- lib
|
@@ -38,8 +38,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
38
38
|
- !ruby/object:Gem::Version
|
39
39
|
version: '0'
|
40
40
|
requirements: []
|
41
|
-
rubygems_version: 3.
|
42
|
-
signing_key:
|
41
|
+
rubygems_version: 3.2.3
|
42
|
+
signing_key:
|
43
43
|
specification_version: 4
|
44
44
|
summary: A Little Elementor!
|
45
45
|
test_files: []
|