Module: Familia::Base::ClassMethods

Defined in:
lib/familia/base.rb

Overview

Familia::Base::ClassMethods

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#feature_definitionsObject (readonly)

Returns the value of attribute feature_definitions.



31
32
33
# File 'lib/familia/base.rb', line 31

def feature_definitions
  @feature_definitions
end

#features_availableObject (readonly)

Returns the value of attribute features_available.



31
32
33
# File 'lib/familia/base.rb', line 31

def features_available
  @features_available
end

Instance Method Details

#add_feature(klass, feature_name, depends_on: [], field_group: nil) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/familia/base.rb', line 33

def add_feature(klass, feature_name, depends_on: [], field_group: nil)
  @features_available ||= {}
  Familia.trace :ADD_FEATURE, klass, feature_name if Familia.debug?

  # Create field definition object
  feature_def = FeatureDefinition.new(
    name: feature_name,
    depends_on: depends_on,
    field_group: field_group
  )

  # Track field definitions after defining field methods
  @feature_definitions ||= {}
  @feature_definitions[feature_name] = feature_def

  features_available[feature_name] = klass
end

#find_feature(feature_name) ⇒ Object

Find a feature by name, traversing this class's ancestry chain



52
53
54
# File 'lib/familia/base.rb', line 52

def find_feature(feature_name)
  Familia::Base.find_feature(feature_name, self)
end