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