class RgGen::Core::InputBase::FeatureFactory

Attributes

value_converter[R]

Public Class Methods

convert_value(&block) click to toggle source
# File lib/rggen/core/input_base/feature_factory.rb, line 8
def convert_value(&block)
  @value_converter = block
end
default_value(&block) click to toggle source
# File lib/rggen/core/input_base/feature_factory.rb, line 14
def default_value(&block)
  @default_value = block if block_given?
  @default_value
end

Public Instance Methods

active_feature_factory?() click to toggle source
# File lib/rggen/core/input_base/feature_factory.rb, line 28
def active_feature_factory?
  !passive_feature_factory?
end
create(component, *args) click to toggle source
# File lib/rggen/core/input_base/feature_factory.rb, line 20
def create(component, *args)
  input_value = preprocess(args.last)
  create_feature(component, *args[0..-2], input_value) do |feature|
    build_feature(feature, input_value)
    feature.verify(:feature)
  end
end
passive_feature_factory?() click to toggle source
# File lib/rggen/core/input_base/feature_factory.rb, line 32
def passive_feature_factory?
  @target_features.nil? && @target_feature.passive_feature?
end

Private Instance Methods

build?(feature, input_value) click to toggle source
# File lib/rggen/core/input_base/feature_factory.rb, line 68
def build?(feature, input_value)
  active_feature_factory? &&
    input_value.available? &&
    !ignore_empty_value?(feature, input_value)
end
build_feature(feature, input_value) click to toggle source
# File lib/rggen/core/input_base/feature_factory.rb, line 64
def build_feature(feature, input_value)
  build?(feature, input_value) && feature.build(input_value)
end
convert(value, position) click to toggle source
# File lib/rggen/core/input_base/feature_factory.rb, line 59
def convert(value, position)
  block = self.class.value_converter
  block && instance_exec(value, position, &block)
end
convert_value(input_value) click to toggle source
# File lib/rggen/core/input_base/feature_factory.rb, line 44
def convert_value(input_value)
  new_value =
    if input_value.empty_value?
      evaluate_defalt_value(input_value.position)
    else
      convert(input_value.value, input_value.position)
    end
  new_value && InputValue.new(new_value, input_value.position)
end
evaluate_defalt_value(position) click to toggle source
# File lib/rggen/core/input_base/feature_factory.rb, line 54
def evaluate_defalt_value(position)
  block = self.class.default_value
  block && instance_exec(position, &block)
end
ignore_empty_value?(feature, input_value) click to toggle source
# File lib/rggen/core/input_base/feature_factory.rb, line 74
def ignore_empty_value?(feature, input_value)
  feature.ignore_empty_value? && input_value.empty_value?
end
preprocess(input_value) click to toggle source
# File lib/rggen/core/input_base/feature_factory.rb, line 38
def preprocess(input_value)
  converted_value =
    active_feature_factory? && convert_value(input_value)
  converted_value || input_value
end