Module: Usabl::Methodspace::ClassMethods

Defined in:
lib/usabl/methodspace.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#dirObject

Returns the value of attribute dir.



12
13
14
# File 'lib/usabl/methodspace.rb', line 12

def dir
  @dir
end

Instance Method Details

#[](name) ⇒ Object



22
23
24
# File 'lib/usabl/methodspace.rb', line 22

def [](name)
  refinements[name]
end

#class!Object



14
15
16
# File 'lib/usabl/methodspace.rb', line 14

def class!
  @class = true
end

#class?Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/usabl/methodspace.rb', line 18

def class?
  !!@class
end

#define(target, name, options = {}, &block) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/usabl/methodspace.rb', line 34

def define(target, name, options = {}, &block)
  if options[:class]
    return singleton_class.define(target.singleton_class, name, options.merge(class: false), &block)
  end
  ext = extensions[name] = ::Module.new do
    define_method name, &block
  end
  refinements[name] = ::Module.new do
    refine target do
      include ext
    end
  end
end

#extensionsObject



30
31
32
# File 'lib/usabl/methodspace.rb', line 30

def extensions
  @extensions ||= Set.new(self)
end

#load(key) ⇒ Object



48
49
50
# File 'lib/usabl/methodspace.rb', line 48

def load(key)
  require "#{dir}/#{class? ? '.' : '#'}#{key}"
end

#refinementsObject



26
27
28
# File 'lib/usabl/methodspace.rb', line 26

def refinements
  @refinements ||= Set.new(self)
end