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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7dabaebca285282620b052892fbb1435d6de16d6194f65aa6225845c5d9240e4
4
- data.tar.gz: b617b8e9b80ffe830b8f1008b2227468d08520c831e5f4ec4226b8e956a99137
3
+ metadata.gz: fd6993f5ac888ce30210412297e17679f56d83b2739378fd4d335e987236970f
4
+ data.tar.gz: a10194c173ad81aed5fdca992e7b17df8d5dda5c0fb56a3f0a2cdcbd99385bee
5
5
  SHA512:
6
- metadata.gz: 5e104511c4d8a7f520b8a6b1fe5c11204aadc7586712f7c71a6cb18c4659ad9b5eacf791fa23a910e0122f18c0063a5ba9ed488a3997e52ba247c48a21a0e295
7
- data.tar.gz: 95b40a624316f4f40e2c00036764bd42b38fab86fcafbd44b10f8c4641a41d859471b5d49b7de1e65af115cd9ec37815beae59cc4fbeb14833b15158554d05cb
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: "Cs"},
27
+ {name: "scandium", sym: "Sc"},
27
28
  {name: "titanium", sym: "Ti"},
28
- {name: "vanadium", sym: "Va"},
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
@@ -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, :fake_atomic_number
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
- @fake_atomic_number = opts[:atomic_number]
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 = LittleElementor::Helpers::ELEMENTS[@atomic_number-1][: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
- "Symbol: #{@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}\nfake_atomic_number: #{@fake_atomic_number}"
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.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: 2020-09-17 00:00:00.000000000 Z
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.1.2
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: []