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
|