Class: Transformer

Inherits:
Object
  • Object
show all
Defined in:
lib/Transformer.rb

Instance Method Summary collapse

Constructor Details

#initialize(context_name, roles, interactions, private_interactions, base_class, default_interaction) ⇒ Transformer

Returns a new instance of Transformer.



2
3
4
5
6
7
8
9
10
# File 'lib/Transformer.rb', line 2

def initialize(context_name, roles, interactions, private_interactions, base_class, default_interaction)
  @context_name = context_name
  @roles = roles
  @interactions = interactions
  @base_class = base_class
  @default_interaction = default_interaction
  @private_interactions = private_interactions
  @definitions = {}
end

Instance Method Details

#transform(file_path, with_contracts) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/Transformer.rb', line 12

def transform(file_path, with_contracts)
  code = (self_interactions_generated_source + self_roles_generated_source)
  if file_path then
    name = context_name.to_s
    complete = ((((("class " + name) + (@base_class ? (("<< " + @base_class.name)) : (""))) + "\n      ") + code.to_s) + "\n           end")
    File.open((((("./" + file_path.to_s) + "/") + name) + ".rb"), "w") do |f|
      f.write(complete)
    end
    complete
  else
    c = @base_class ? (Class.new(base_class)) : (Class.new)
    if with_contracts then
      c.class_eval("def self.assert_that(obj)\n  ContextAsserter.new(self.contracts,obj)\nend\ndef self.refute_that(obj)\n  ContextAsserter.new(self.contracts,obj,false)\nend\ndef self.contracts\n  @@contracts\nend\ndef self.contracts=(value)\n  @@contracts = value\nend")
      c.contracts = contracts
    end
    Kernel.const_set(context_name, c)
    begin
      temp = c.class_eval(code)
    rescue SyntaxError
      p(("error: " + code))
    end
    (temp or c)
  end
end