class Cauldron::DynamicOperator
Attributes
failed_uses[RW]
indexes[R]
Public Class Methods
new(information, sexp_methods)
click to toggle source
# File lib/cauldron/dynamic_operator.rb, line 10 def initialize(information, sexp_methods) @information, @sexp_methods = information, sexp_methods @failed_uses = [] @closed = false end
Public Instance Methods
close()
click to toggle source
# File lib/cauldron/dynamic_operator.rb, line 25 def close @closed = true end
context_realizable?(context)
click to toggle source
# File lib/cauldron/dynamic_operator.rb, line 36 def context_realizable?(context) vars = context.keys.select {|x| x.match(/var\d/) } var_names = vars.collect(&:to_s) a = %Q{ def function(var0) #{Sorcerer.source(to_sexp(Cauldron::Scope.new(var_names), []), indent: true)} end } o = Object.new o.instance_eval(a) begin o.function(vars.collect {|x| context[x] }) rescue NoMethodError => e return false rescue StandardError => e puts e end return true end
extend_actualized_composite(x, container, examples, point)
click to toggle source
# File lib/cauldron/dynamic_operator.rb, line 29 def extend_actualized_composite(x, container, examples, point) cloned_container = container.clone_solution cloned_container.add_statement_at(x, point) cloned_container Cauldron::ActualizedComposite.new(cloned_container, examples) end
indexes=(value)
click to toggle source
# File lib/cauldron/dynamic_operator.rb, line 20 def indexes=(value) raise StandardError.new('') if @closed @indexes = value end
rip(composite,examples)
click to toggle source
# File lib/cauldron/dynamic_operator.rb, line 79 def rip(composite,examples) Ripper::SexpBuilder.new( %Q{ def function(var0) #{composite.to_ruby(examples.scope)} end }).parse end
rip2()
click to toggle source
# File lib/cauldron/dynamic_operator.rb, line 71 def rip2 %Q{ def function(var0) #{Sorcerer.source(to_sexp(Cauldron::Scope.new(['var0'])), indent: true)} end } end
uses_constants?()
click to toggle source
# File lib/cauldron/dynamic_operator.rb, line 16 def uses_constants? @information[:constants] end
write_to_file(filename)
click to toggle source
# File lib/cauldron/dynamic_operator.rb, line 61 def write_to_file(filename) FileUtils.mkdir_p File.join('tmp') File.open( File.join('tmp',filename), 'w+') do |file| file << "class DynamicOperator"+"\n" file << Sorcerer.source(@sexp_methods, indent: true) file << "\n" file << "end" end end