Module: CodeLoader

Defined in:
lib/asker/loader/code_loader.rb

Overview

Read XML info about Code input data

Class Method Summary collapse

Class Method Details

.load(xmldata, filepath) ⇒ Object

Load XML data about Code object

Parameters:

  • xmldata (XML Object)
  • filepath (String)

Returns:

  • Code object



15
16
17
18
19
20
# File 'lib/asker/loader/code_loader.rb', line 15

def self.load(xmldata, filepath)
  data = read_codedata_from_xml(xmldata, File.basename(filepath))
  code = Code.new(File.dirname(filepath), data[:path], data[:type])
  code.features << data[:features]
  code
end

.read_codedata_from_xml(xmldata, filename) ⇒ Object

Read Code data from XML content

Parameters:

  • xmldata (XML Object)
  • filename (String)

    File name that contains data

Returns:

  • Code object



27
28
29
30
31
32
33
34
35
# File 'lib/asker/loader/code_loader.rb', line 27

def self.read_codedata_from_xml(xmldata, filename)
  data = { path: '?', type: '?', features: [] }
  xmldata.elements.each do |i|
    data[:path] = i.text if i.name == 'path'
    data[:type] = i.text.to_sym if i.name == 'type'
    data[:features] << read_features(i, filename) if i.name == 'features'
  end
  data
end

.read_features(xmldata, filename) ⇒ Object

Read features data from XML input

Parameters:

  • xmldata (XML object)

Returns:

  • Array with features (Strings)



41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/asker/loader/code_loader.rb', line 41

def self.read_features(xmldata, filename)
  features = []
  xmldata.elements.each do |i|
    if i.name == 'row'
      features << i.text
    else
      msg = Rainbow("[ERROR] features/#{i.name} from #{filename}").color(:red)
      Logger.verbose msg
    end
  end
  features
end