Class: Sbuilder::StepGeneratorValueDomain

Inherits:
StepGeneratorValueRoot show all
Defined in:
lib/sbuilder/extension_loader_step_generator.rb

Overview


Class pointing to Parameter_Dom

Instance Attribute Summary collapse

Attributes inherited from StepGeneratorValueRoot

#parameter, #parameter_path

Attributes included from StepGeneratorValue

#validIndex

Construct & configure collapse

Implement set of valid values for StepGeneratorValue collapse

Methods inherited from StepGeneratorValueRoot

#isArray, #parameterName, #parameter_path_to_me

Methods included from StepGeneratorValue

#currentValue, #nextValue, #validValue, #validValueCount, #validValues

Constructor Details

#initialize(parameter, action, action_value, parameter_path, fixedValue) ⇒ StepGeneratorValueDomain

values

true if domValue accepted

Parameters:

  • parameter (Sbuilder::Parameter)

    for which to generate

  • action (lambda(i,domValue,action_value ))

    returns

  • action_value (object)

    defined in ‘validators’ -array

  • parameter_path (String:Array)

    leading to this param



769
770
771
772
773
774
775
# File 'lib/sbuilder/extension_loader_step_generator.rb', line 769

def initialize( parameter, action, action_value, parameter_path, fixedValue )
  super( parameter, parameter_path )
  self.validIndex = 0
  self.action = action
  self.action_value = action_value
  self.fixedValue = fixedValue
end

Instance Attribute Details

#actionObject



747
748
749
# File 'lib/sbuilder/extension_loader_step_generator.rb', line 747

def action
  @action
end

#action_valueObject



750
751
752
# File 'lib/sbuilder/extension_loader_step_generator.rb', line 750

def action_value
  @action_value
end

#fixedValueObject

a fixed value



754
755
756
# File 'lib/sbuilder/extension_loader_step_generator.rb', line 754

def fixedValue
  @fixedValue
end

Instance Method Details

#validValuesSetString:Array

Generate array of domain values from resolved domain for ‘@parameter’. Use @action -lambda to screen domain values which should be included to ‘validValues’.

Returns:

  • (String:Array)

    valid domain values



789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
# File 'lib/sbuilder/extension_loader_step_generator.rb', line 789

def validValuesSet
  Sbuilder::StepGenerator.logger.info "#{__method__}, parameter=#{parameter.name}, isArray=#{isArray}"

  # return String:Array
  vals = [] 
  if fixedValue
    # at this time use 'action_value' to access parameter value,
    # may chg later? to smtg better
    val = parameterValue( action_value ) if action_value
    # include to 'vals' if 'action' says yes
    vals << val if action.call( action_value, val, action_value )
  else

    # not fixed value - need access domain range & filter using actions

    # normally 0..cardinality, for integer ranges smthg 1..3
    range = retriveParameterRange
    Sbuilder::StepGenerator.logger.debug "#{__method__}: range=#{range}, first=#{range.first}, last=#{range.last}"

    # not using fixedValue, guard againts ridicilous range
    Sbuilder::StepGenerator.maxSet( range.last - range.first, parameter, 10000 )
    # (0..parameterMaxIndex).to_a.map { |i|
    
    vals = range.to_a.map { |i|
      # access domain element for range index
      {
        :i=>i,
        :v=>parameterValue( i )
      }
    }.select { |iv_hash|
      # use action to select what is actually needed
      action.call( iv_hash[:i], iv_hash[:v], action_value )
    }.map { |iv_hash|
      # take value
      iv_hash[:v]
    }
  end
  return vals
  
end

#validValuesSetCardinalityInteger

Count number of elements in set after domain elements has been filtered. If ‘@action’ chooses fixed value, i.e. when ‘fixedValue’ == true, return 1

Returns:

  • (Integer)

    lenght of underlying set, or 1 when fixedValue



866
867
868
869
# File 'lib/sbuilder/extension_loader_step_generator.rb', line 866

def validValuesSetCardinality
  fixedValue ? 1 : validValuesSet.length
  # validValuesSet.length
end