class Zenlish::Feature::FeatureDef

Attributes

default[R]

@return [FeatureValue] the default value for the feature.

domain[R]

@return [FeatureDomain] the set of potential values the feature can take

name[R]

@return [String] the name of the feature

Public Class Methods

new(aName, aDomain, aDefault = nil) click to toggle source

@param aName [String] the name of the feature @param aDomain [FeatureDomain] @param aDefault [FeatureValue, NilClass]

# File lib/zenlish/feature/feature_def.rb, line 22
def initialize(aName, aDomain, aDefault = nil)
  @name = validated_name(aName)
  @domain = aDomain
  @default = validated_default(domain, aDefault)
end

Private Instance Methods

validated_default(aDomain, aDefault) click to toggle source
# File lib/zenlish/feature/feature_def.rb, line 36
def validated_default(aDomain, aDefault)
  if aDefault
    @default = aDefault
  elsif aDomain.is_a?(BooleanDomain)
    @default = nil
  elsif aDomain.is_a?(EnumerationDomain)
    if aDomain.enum.size == 1
      val = FeatureValue.new(aDomain.enum[0])
      @default = val
    else
      @default = nil
    end
  end
end
validated_name(aName) click to toggle source
# File lib/zenlish/feature/feature_def.rb, line 30
def validated_name(aName)
  raise StandardError, 'feature name cannot be empty.' if aName.empty?

  aName.dup
end