little-elementor 0.0.2 → 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: 2a62029b9780fd72d2023ea87dde8392f41e6cd6f16edecc605b23c8f4fc1ce8
4
- data.tar.gz: 8c504f98f876945a2d683d8e0b3dcfae5edfe2f39f7cc563b2f6e449de6afd22
3
+ metadata.gz: fd6993f5ac888ce30210412297e17679f56d83b2739378fd4d335e987236970f
4
+ data.tar.gz: a10194c173ad81aed5fdca992e7b17df8d5dda5c0fb56a3f0a2cdcbd99385bee
5
5
  SHA512:
6
- metadata.gz: 2cfbbb4a3017353228049284a14efb518d97fd8244ee11a5820893da42e14db474b28d70fe4f9a34f368dbd7e758f0d17f387ae027236c2bb78c0fa726b01830
7
- data.tar.gz: 22ec9ad679fd427d0fbc60f560589cf876f32cb037fe24fd1045a5e102e09a93fee5c002a2f8df47c05edfe29f47b015f4e3f7b693ca1cbf348467cf57627d34
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
@@ -6,14 +6,20 @@ module LittleElementor
6
6
  include LittleElementor::Helpers
7
7
 
8
8
  attr_reader :period, :atomic_number, :group, :charge, :is_nobel_gas, :symbol, :name
9
- def initialize(atomic_number, charge = 0)
10
- @atomic_number = atomic_number + charge
11
- @is_nobel_gas = [2, 10, 18, 36, 54, 86, 118].include?(@atomic_number)
12
- @name = LittleElementor::Helpers::ELEMENTS[@atomic_number-1][:name]
9
+ def initialize(opts)
10
+ opts = opts.has_key?(:charge) ? opts : opts.merge({:charge => 0})
11
+ @charge = opts[:charge]
12
+ if opts.has_key?(:atomic_number)
13
+ @atomic_number = opts[:atomic_number] + @charge
14
+ @symbol = LittleElementor::Helpers::ELEMENTS[@atomic_number-1][:sym]
15
+ elsif opts.has_key?(:symbol)
16
+ @atomic_number = LittleElementor::Helpers::ELEMENTS.find_index{|i| i[:sym] == opts[:symbol]} + 1
17
+ @symbol = opts[:symbol]
18
+ end
19
+ @group = @atomic_number == 2 ? 18 : get_group()
20
+ @is_nobel_gas = @group == 18
21
+ @name = get_name()
13
22
  @period = electron_configuration.map(&:n).max
14
- @charge = charge
15
- @group = get_group()
16
- @symbol = LittleElementor::Helpers::ELEMENTS[@atomic_number-1][:sym]
17
23
  end
18
24
 
19
25
  def electron_configuration(sorted: true)
@@ -21,7 +27,20 @@ module LittleElementor
21
27
  end
22
28
 
23
29
  def to_s
24
- "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}"
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 ", "}"
25
44
  end
26
45
  end
27
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.0.2
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: []