Class: OutputBuilder

Inherits:
Object
  • Object
show all
Includes:
CustomFileUtils
Defined in:
lib/output_builder.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from CustomFileUtils

#create_empty_file, #write_file

Constructor Details

#initialize(topology_provider, directory_concrete_builders, output_directory) ⇒ OutputBuilder

Returns a new instance of OutputBuilder.



9
10
11
12
13
14
15
# File 'lib/output_builder.rb', line 9

def initialize(topology_provider, directory_concrete_builders, output_directory)
    validate_params topology_provider, directory_concrete_builders, output_directory

    @topology_provider = topology_provider
    @directory_concrete_builders = directory_concrete_builders
    @output_directory = output_directory
end

Instance Attribute Details

#directory_concrete_buildersObject (readonly)

Returns the value of attribute directory_concrete_builders.



5
6
7
# File 'lib/output_builder.rb', line 5

def directory_concrete_builders
  @directory_concrete_builders
end

#output_directoryObject (readonly)

Returns the value of attribute output_directory.



5
6
7
# File 'lib/output_builder.rb', line 5

def output_directory
  @output_directory
end

#topology_providerObject (readonly)

Returns the value of attribute topology_provider.



5
6
7
# File 'lib/output_builder.rb', line 5

def topology_provider
  @topology_provider
end

Instance Method Details

#build_outputObject



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/output_builder.rb', line 17

def build_output
    Dir["#{@directory_concrete_builders}/*.rb"].each { |file| 
        if file[0] == '/' then
            require "#{file}" 
        else
            require "./#{file}" 
        end
    }
    self.class.send(:include,OutputConcreteBuilder)
    validate_output_concrete_builder

    initialize_concrete_builder @topology_provider, @directory_concrete_builders, @output_directory

    build_output_content
end

#validate_output_concrete_builderObject



33
34
35
36
37
# File 'lib/output_builder.rb', line 33

def validate_output_concrete_builder
    [:initialize_concrete_builder, :build_output_content].each do |method|
        raise ArgumentError, "It was expected to load an OutputConcreteBuilder module from #{@directory_concrete_builders}/builders/output_files_format that implements the method #{method}, but the one provided does not has this method implemented" unless self.respond_to? method
    end
end

#validate_params(topology_provider, directory_concrete_builders, output_directory) ⇒ Object

Raises:

  • (ArgumentError)


39
40
41
42
43
44
# File 'lib/output_builder.rb', line 39

def validate_params(topology_provider, directory_concrete_builders, output_directory)
    raise ArgumentError, 'The topology provider given cannot be nil' unless topology_provider
    raise ArgumentError, 'The template directory given cannot be nil' unless directory_concrete_builders
    raise ArgumentError, "It was expected to find builders files in directory #{directory_concrete_builders}, but nothing was found." if Dir["#{directory_concrete_builders}/*.rb"].size == 0
    raise ArgumentError, 'The output directory given cannot be nil' unless output_directory    
end