class Eulim::Chemistry::Element
This class has functionality for elements Ex: symbol, atomic mass, atomic number
Constants
- ATTRS
- ELEMENTS
Data taken from 'www.science.co.il/elements/'
Attributes
atomic_mass[RW]
atomic_number[RW]
name[RW]
symbol[RW]
Private Class Methods
get_element_by_attribute(attribute, value)
click to toggle source
# File lib/eulim/chemistry/element.rb, line 36 def self.get_element_by_attribute(attribute, value) ELEMENTS.each do |element| # elements value of attribute == value give by user return element if element.instance_variable_get(('@' + attribute).intern) == value end raise(NameError, 'element not found') end
method_missing(m, *args)
click to toggle source
# File lib/eulim/chemistry/element.rb, line 26 def self.method_missing(m, *args) attribute = m.to_s.split('get_by_').last valid_method? m, attribute raise 'please give argument' if args.empty? args[0] = attribute == 'name' ? args[0].capitalize : args[0] element_data = get_element_by_attribute attribute, args[0] raise 'Element not found' unless element_data element_data end
new(arg)
click to toggle source
# File lib/eulim/chemistry/element.rb, line 15 def initialize(arg) @name = arg[1] @symbol = arg[0] @atomic_number = arg[2].to_i @atomic_mass = Unitwise(arg[3].to_f, 'u') end
valid_method?(m, attribute)
click to toggle source
Calls superclass method
# File lib/eulim/chemistry/element.rb, line 45 def self.valid_method?(m, attribute) super unless m.to_s.start_with?('get_by_') raise(NameError, 'Invalid attribute') unless ATTRS.include? attribute end