little-elementor 0.1.1 → 0.1.5

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 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: []