Sha256: 1e4385b113e8794c99dad4fe0b62574f7dca5d159f87b4abcf02ddb398d8a50f

Contents?: true

Size: 475 Bytes

Versions: 1

Compression:

Stored size: 475 Bytes

Contents

require 'chemistry/element/atom'

module Chemistry
  module Element
    extend self

    def define(name, &definition)
      if block_given?
        create_element_class(name).instance_eval &definition
      else
        raise ArgumentError, "`element` must be given a block"
      end
    end

    private

    def create_element_class(name)
      element_class = Class.new(Chemistry::Element::Atom)
      Chemistry::Element.const_set(name, element_class)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
chemistry-element-1.0.0 lib/chemistry/element.rb