eulim 0.0.3 → 0.0.4

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
  SHA1:
3
- metadata.gz: b4c93f6d124334882a8b854f16a0072775b075f8
4
- data.tar.gz: 2430c0f001a93bfefe3442fddde021e02bab24ac
3
+ metadata.gz: 1ea827962631e7dcd4f4d78d2e278be6d27f01a3
4
+ data.tar.gz: dfdd95057622a0251ca8b1c5d40e6b350320863e
5
5
  SHA512:
6
- metadata.gz: 9c864577887b868fb4c919330588f1b1a1b3ace121bdc48d40a060816b9020fd468033e75be3e51c4fd7d93edd2bacb3af18c2fa65b518dc972e6cd31f9ae868
7
- data.tar.gz: c42497dae9058882b776ff487d8858bdfca91579d3a83e2ed4bc37358f91c17417c7665c873927b09fc42b4190d50e700f5e20f0ec118a11f320b56830e3e338
6
+ metadata.gz: e1fac3fc7398f2e20ca878ecc27c277028ce7848002ce2711d4d69bfe681fe18afe4db022b86404552cf889600e6e69e4acc6f110ddc901d682334ec414e778d
7
+ data.tar.gz: e400918e1b58366a95683a4a2efcebec15829e1a4884310dbdf2d2538995621d0ec27e266bae66feab9b4910abf5eff3d06a208f4260997be99d5cbd51234ab1
data/README.md CHANGED
@@ -31,9 +31,11 @@ Or install it yourself as:
31
31
 
32
32
  #### Element
33
33
 
34
- * H, He, Li, Be, B, C, N, O, F, Ne, Na, Mg
34
+ * H, He, Li, Be, B, C, N, O, F, Ne, Na, Mg, Al, Si, P, S, Cl, Ar, K , Ca, Sc, Ti, V, Cr, Mn, Fe, Co, Ni
35
35
  * symbol, name, atomic_number, atomic_mass
36
36
 
37
+ #### Compound
38
+
37
39
  ## Usage
38
40
 
39
41
  $ Eulim::Chemistry::Element.get_by_symbol("H")
@@ -42,7 +44,8 @@ Or install it yourself as:
42
44
  $ Eulim::Chemistry::Element.get_by_atomic_number(12)
43
45
  => #<Eulim::Chemistry::Element:0x0055ac58c146e8 @symbol="Mg", @name="Magnesium", @atomic_number=12, @atomic_mass=24.305>
44
46
 
45
-
47
+ $ Eulim::Chemistry::Compound.constituent_elements("CaCO3")
48
+ => [#<Eulim::Chemistry::Element:0x0055c971365598 @symbol="Ca", @name="Calcium", @atomic_number=20, @atomic_mass=40.078>, #<Eulim::Chemistry::Element:0x0055c9713652c8 @symbol="C", @name="Carbon", @atomic_number=6, @atomic_mass=12.0107>, #<Eulim::Chemistry::Element:0x0055c971365048 @symbol="O", @name="Oxygen", @atomic_number=8, @atomic_mass=15.9996>]
46
49
  ## Development
47
50
 
48
51
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -0,0 +1,16 @@
1
+ module Eulim::Chemistry
2
+ class Compound
3
+ def initialize(arg)
4
+ @formula = arg
5
+ end
6
+
7
+ def constituent_elements
8
+ elements = []
9
+ @formula.split(/(?=[A-Z])/).each do |element_symbol|
10
+ elements << Element.get_by_symbol(element_symbol.gsub(/(\W|\d)/, ""))
11
+ end
12
+ elements
13
+ end
14
+
15
+ end
16
+ end
@@ -2,37 +2,57 @@ module Eulim::Chemistry
2
2
  class Element
3
3
 
4
4
  @@elements = [
5
- { symbol:'H', name: 'Hydrogen', atomic_number: 1, atomic_mass: 1.0079 },
6
- { symbol:'He', name: 'Helium', atomic_number: 2, atomic_mass: 4.002602 },
7
- { symbol:'Li', name: 'Lithium', atomic_number: 3, atomic_mass: 6.941 },
8
- { symbol:'Be', name: 'Beryllium', atomic_number: 4, atomic_mass: 9.012182 },
9
- { symbol:'B', name: 'Boron', atomic_number: 5, atomic_mass: 10.811 },
10
- { symbol:'C', name: 'Carbon', atomic_number: 6, atomic_mass: 12.0107 },
11
- { symbol:'N', name: 'Nitrogen', atomic_number: 7, atomic_mass: 14.0067 },
12
- { symbol:'O', name: 'Oxygen', atomic_number: 8, atomic_mass: 15.9996 },
13
- { symbol:'F', name: 'Fluorine', atomic_number: 9, atomic_mass: 18.9984 },
14
- { symbol:'Ne', name: 'Neon', atomic_number: 10, atomic_mass: 20.1797 },
15
- { symbol:'Na', name: 'Sodium', atomic_number: 11, atomic_mass: 22.9897 },
16
- { symbol:'Mg', name: 'Magnesium', atomic_number: 12, atomic_mass: 24.305 }
5
+ { symbol:'H', name: 'Hydrogen', atomic_number: 1, atomic_mass: 1.0079 },
6
+ { symbol:'He', name: 'Helium', atomic_number: 2, atomic_mass: 4.002602 },
7
+ { symbol:'Li', name: 'Lithium', atomic_number: 3, atomic_mass: 6.941 },
8
+ { symbol:'Be', name: 'Beryllium', atomic_number: 4, atomic_mass: 9.012182 },
9
+ { symbol:'B', name: 'Boron', atomic_number: 5, atomic_mass: 10.811 },
10
+ { symbol:'C', name: 'Carbon', atomic_number: 6, atomic_mass: 12.0107 },
11
+ { symbol:'N', name: 'Nitrogen', atomic_number: 7, atomic_mass: 14.0067 },
12
+ { symbol:'O', name: 'Oxygen', atomic_number: 8, atomic_mass: 15.9996 },
13
+ { symbol:'F', name: 'Fluorine', atomic_number: 9, atomic_mass: 18.9984 },
14
+ { symbol:'Ne', name: 'Neon', atomic_number: 10, atomic_mass: 20.1797 },
15
+ { symbol:'Na', name: 'Sodium', atomic_number: 11, atomic_mass: 22.9897 },
16
+ { symbol:'Mg', name: 'Magnesium', atomic_number: 12, atomic_mass: 24.305 },
17
+ { symbol:'Al', name: 'Aluminium', atomic_number: 13, atomic_mass: 26.9815 },
18
+ { symbol:'Si', name: 'Silicon', atomic_number: 14, atomic_mass: 28.0855 },
19
+ { symbol:'P', name: 'Phosphorus', atomic_number: 15, atomic_mass: 30.9738 },
20
+ { symbol:'S', name: 'Sulfur', atomic_number: 16, atomic_mass: 32.065 },
21
+ { symbol:'Cl', name: 'Chlorine', atomic_number: 17, atomic_mass: 35.453 },
22
+ { symbol:'Ar', name: 'Argon', atomic_number: 18, atomic_mass: 39.948 },
23
+ { symbol:'K', name: 'Potassium', atomic_number: 19, atomic_mass: 39.0983 },
24
+ { symbol:'Ca', name: 'Calcium', atomic_number: 20, atomic_mass: 40.078 },
25
+ { symbol:'Sc', name: 'Scandium', atomic_number: 21, atomic_mass: 44.9559 },
26
+ { symbol:'Ti', name: 'Titanium', atomic_number: 22, atomic_mass: 47.867 },
27
+ { symbol:'V', name: 'Vanadium', atomic_number: 23, atomic_mass: 50.9415 },
28
+ { symbol:'Cr', name: 'Chromium', atomic_number: 24, atomic_mass: 51.9961 },
29
+ { symbol:'Mn', name: 'Manganese', atomic_number: 25, atomic_mass: 54.938 },
30
+ { symbol:'Fe', name: 'Iron', atomic_number: 26, atomic_mass: 55.845 },
31
+ { symbol:'Co', name: 'Cobalt', atomic_number: 27, atomic_mass: 58.9332 },
32
+ { symbol:'Ni', name: 'Nickel', atomic_number: 28, atomic_mass: 58.6934 }
17
33
  ]
18
34
 
19
35
  def initialize args
20
- args.each do |k,v|
21
- instance_variable_set("@#{k}", v) unless v.nil?
22
- end
36
+ if args
37
+ args.each do |k,v|
38
+ instance_variable_set("@#{k}", v) unless v.nil?
39
+ end
40
+ else
41
+ nil
42
+ end
23
43
  end
24
44
 
25
45
  def self.all
26
46
  @@elements
27
47
  end
28
48
 
29
- def self.get_by_symbol(symbol)
30
- new(self.all.select { |element| element[:symbol] === symbol }.first)
31
- end
49
+ def self.get_by_symbol(symbol)
50
+ new(self.all.select { |element| element[:symbol] === symbol }.first)
51
+ end
32
52
 
33
- def self.get_by_atomic_number(z)
34
- new(self.all.select { |element| element[:atomic_number] === z }.first)
35
- end
53
+ def self.get_by_atomic_number(z)
54
+ new(self.all.select { |element| element[:atomic_number] === z }.first)
55
+ end
36
56
 
37
57
  end
38
58
  end
data/lib/eulim/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Eulim
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eulim
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Syed Fazil Basheer