Module: DirectoryLoader

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

Overview

Load input data from one directory

Class Method Summary collapse

Class Method Details

.check_dir(dirname) ⇒ Object

Check directory

Parameters:

  • dirname (String)

    Directory name



21
22
23
24
25
26
27
# File 'lib/asker/loader/directory_loader.rb', line 21

def self.check_dir(dirname)
  return if Dir.exist? dirname

  msg = Rainbow("[ERROR] #{dirname} directory dosn't exist!").color(:red)
  puts msg
  raise msg
end

.load(dirname) ⇒ Object

Load input data from directory

Parameters:

  • dirname (String)

    Directory name



10
11
12
13
14
15
16
# File 'lib/asker/loader/directory_loader.rb', line 10

def self.load(dirname)
  DirectoryLoader.check_dir(dirname)
  files = (Dir.new(dirname).entries - ['.', '..']).sort
  # Accept only HAML or XML files
  accepted = files.select { |f| %w[.xml .haml].include? File.extname(f) }
  DirectoryLoader.load_files(accepted, dirname)
end

.load_file(filepath, last = false) ⇒ Object

Load one input file

Parameters:

  • filepath (String)

    Path to input file

  • last (Boolean) (defaults to: false)

    True if it is the last filename



48
49
50
# File 'lib/asker/loader/directory_loader.rb', line 48

def self.load_file(filepath, last = false)
  FileLoader.load(filepath)
end

.load_files(filenames, dirname) ⇒ Object

Load accepted files from dirname directory

Parameters:

  • filenames (Array)

    File name list

  • dirname (String)

    Base directory



33
34
35
36
37
38
39
40
41
42
# File 'lib/asker/loader/directory_loader.rb', line 33

def self.load_files(filenames, dirname)
  output = { concepts: [], codes: [] }
  filenames.each do |filename|
    filepath = File.join(dirname, filename)
    data = DirectoryLoader.load_file(filepath, filename == filenames.last)
    output[:concepts] += data[:concepts]
    output[:codes] += data[:codes]
  end
  output
end