module Alki::Dsl::ClassHelpers

Public Instance Methods

add_accessor(name,type: :accessor,subclass: nil) click to toggle source
# File lib/alki/dsl/class_helpers.rb, line 64
def add_accessor(name,type: :accessor,subclass: nil)
  (class_builder(subclass)["attr_#{type}s".to_sym]||=[]) << name
end
add_class_method(name,context: nil,private: false,subclass: nil,&blk) click to toggle source
# File lib/alki/dsl/class_helpers.rb, line 41
def add_class_method (name,context: nil,private: false,subclass: nil,&blk)
  class_builder(subclass)[:class_methods] ||= {}
  class_builder(subclass)[:class_methods][name.to_sym] = {
    body: blk,
    context: context,
    private: private
  }
end
add_delegator(name,accessor,method=name,subclass: nil) click to toggle source
# File lib/alki/dsl/class_helpers.rb, line 68
def add_delegator(name,accessor,method=name,subclass: nil)
  (class_builder(subclass)[:delegators]||={})[name] = {
    accessor: accessor,
    method: method
  }
end
add_initialize_param(name,opts={},&default) click to toggle source
# File lib/alki/dsl/class_helpers.rb, line 50
def add_initialize_param(name,opts={},&default)
  name = name.to_sym
  param = default ? [name,default] : name
  (class_builder(opts[:subclass])[:initialize_params]||=[]) << param
end
add_instance_class_proxy(type, name,subclass: nil) click to toggle source
# File lib/alki/dsl/class_helpers.rb, line 56
def add_instance_class_proxy(type, name,subclass: nil)
  (class_builder(subclass)[:instance_class]||={})[name.to_sym] = {type: type}
end
add_method(name,context:nil,private: false,subclass: nil, &blk) click to toggle source
# File lib/alki/dsl/class_helpers.rb, line 32
def add_method(name,context:nil,private: false,subclass: nil, &blk)
  class_builder(subclass)[:instance_methods] ||= {}
  class_builder(subclass)[:instance_methods][name.to_sym] = {
    body: blk,
    context: context,
    private: private
  }
end
add_module(mod,subclass: nil) click to toggle source
# File lib/alki/dsl/class_helpers.rb, line 60
def add_module(mod,subclass: nil)
  (class_builder(subclass)[:modules]||=[]) << mod
end
class_builder(subclass = nil) click to toggle source
# File lib/alki/dsl/class_helpers.rb, line 4
def class_builder(subclass = nil)
  unless @ctx[:class_builder]
    @ctx[:class_builder] = {}
    %i(module name prefix).each do |attr|
      @ctx[:class_builder][attr] = @ctx[attr] if @ctx[attr]
    end
  end
  if subclass
    scs = @ctx[:class_builder][:secondary_classes] ||= []
    cb = scs.find { |sc| sc[:subclass] == subclass }
    unless cb
      cb = { subclass: subclass }
      scs << cb
    end
    cb
  else
    @ctx[:class_builder]
  end
end
create_as_module(subclass: nil) click to toggle source
# File lib/alki/dsl/class_helpers.rb, line 24
def create_as_module(subclass: nil)
  class_builder(subclass)[:type] = :module
end
set_super_class(klass,subclass: nil) click to toggle source
# File lib/alki/dsl/class_helpers.rb, line 28
def set_super_class(klass,subclass: nil)
  class_builder(subclass)[:super_class] = klass
end