Class: CBF::Parsers::AeolusV1

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

Class Method Summary collapse

Class Method Details

.parse(input_data, options) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/parsers/aeolus_v1.rb', line 11

def parse(input_data, options)
  begin
    doc = Nokogiri::XML(input_data) { |config| config.strict.nonet }
  rescue Nokogiri::XML::SyntaxError
    raise SyntaxError
  end
  validate!(doc)

  assemblies = (doc / 'assemblies/assembly').map { |a| parse_assembly(a, options)}
  assembly_params = (doc / 'assemblies/assembly').map { |a| parse_assembly_parameters(a, options) }.flatten
  resource_params = (doc / 'parameters/parameter').map { |el| parse_parameter(el) }
  {
    :name => doc.root.attr('name'),
    :description => (doc % 'description').text,
    :resources => assemblies,
    :services => (doc / 'services/service').map { |el| parse_service(el) },
    :parameters => assembly_params + resource_params,
    :files => (doc / '//executable|//files/file').map { |el| parse_file(el, resource_params) },
    :outputs => (doc / 'assembly//return').map { |el| parse_return(el) },
  }
end