Sha256: 7bcb865fecb52e4b24d7d6de57dfcc14313a35b335d132ecb6a2b3602426f4f0
Contents?: true
Size: 1.08 KB
Versions: 6
Compression:
Stored size: 1.08 KB
Contents
module Danica module DSL def self.register_operator(method, clazz=nil) register(method, clazz, 'Danica::Operator') end def self.register_wrapper(method, clazz=nil) register(method, clazz, 'Danica::Wrapper') end def self.register(method, clazz=nil, base=nil) define_method method do |*args| clazz = [base.to_s, method.to_s.camelize].compact.join('::').constantize unless clazz clazz = [base, clazz.to_s].compact.join('::').constantize unless clazz.is_a? Class clazz.new(*args) end end def function(*variables, &block) Function.build(*variables, &block).new end end %i( addition multiplication division sin cos power squared_root exponential ).each do |method| DSL.register_operator(method) end %i(number group negative plus_minus variable constant).each do |method| DSL.register_wrapper(method) end DSL.register_wrapper :num, :Number DSL.register_operator :sum, :Addition DSL.register_operator :product, :Multiplication DSL.register_operator :sqrt, :SquaredRoot end
Version data entries
6 entries across 6 versions & 1 rubygems
Version | Path |
---|---|
danica-2.6.1 | lib/danica/dsl.rb |
danica-2.6.0 | lib/danica/dsl.rb |
danica-2.5.1 | lib/danica/dsl.rb |
danica-2.5.0 | lib/danica/dsl.rb |
danica-2.4.4 | lib/danica/dsl.rb |
danica-2.4.3 | lib/danica/dsl.rb |