class CoinTools::BaseStruct
Public Class Methods
make(*fields)
click to toggle source
# File lib/cointools/base_struct.rb, line 3 def self.make(*fields) struct = Class.new(self) fields.each do |f| raise ArgumentError.new("Invalid field name: #{f}") unless f.to_s =~ /[a-z][a-z_]*/ end struct.class_eval <<-CODE def initialize(#{fields.map { |f| "#{f}:" }.join(', ')}) #{fields.map { |f| "@#{f} = #{f}" }.join("\n")} end attr_reader #{fields.map { |f| ":#{f}" }.join(', ')} CODE struct end