Class: Control

Inherits:
Reflection show all
Defined in:
lib/control.rb

Instance Attribute Summary

Attributes inherited from Reflection

#status

Instance Method Summary collapse

Methods inherited from Reflection

#initialize, #randomize, #serialize

Constructor Details

This class inherits a constructor from Reflection

Instance Method Details

#reflect(*args) ⇒ Object

Reflect on a method.

Create a shadow action.

Parameters:

  • *args (Dynamic)

    The method’s arguments.



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/control.rb', line 32

def reflect(*args)

  # Get trained rule sets.
  input_rule_sets = @aggregator.get_input_rule_sets(@klass, @method)
  output_rule_set = @aggregator.get_output_rule_set(@klass, @method)

  # Fail when no trained rule sets.
  if input_rule_sets.nil?
    @status = :fail
  end

  # When arguments exist.
  unless args.size == 0

    # Validate arguments against trained rule sets.
    unless input_rule_sets.nil?
      unless @aggregator.test_inputs(args, input_rule_sets)
        @status = :fail
      end
    end

    # Create metadata for each argument.
    # TODO: Create metadata for other inputs such as instance variables.
    @inputs = MetaBuilder.create_many(args)

  end

  # Action method with real arguments.
  begin

    # Run reflection.
    output = @clone.send(@method, *args)
    @output = MetaBuilder.create(output)

    # Validate output with aggregated control rule sets.
    unless output_rule_set.nil?
      unless @aggregator.test_output(output, output_rule_set)
        @status = :fail
      end
    end

  # When a system error occurs.
  rescue StandardError => message

    @status = :error
    @message = message

  end

end