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 +4 -4
- data/README.md +5 -2
- data/lib/eulim/chemistry/compound.rb +16 -0
- data/lib/eulim/chemistry/element.rb +41 -21
- data/lib/eulim/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1ea827962631e7dcd4f4d78d2e278be6d27f01a3
|
4
|
+
data.tar.gz: dfdd95057622a0251ca8b1c5d40e6b350320863e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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',
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
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
|
-
|
21
|
-
|
22
|
-
|
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
|
-
|
30
|
-
|
31
|
-
|
49
|
+
def self.get_by_symbol(symbol)
|
50
|
+
new(self.all.select { |element| element[:symbol] === symbol }.first)
|
51
|
+
end
|
32
52
|
|
33
|
-
|
34
|
-
|
35
|
-
|
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