eulim 0.0.3 → 0.0.4

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
  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