Sha256: a6d7f088e1187988b21f4d827fbbda043858dd527347036a67156ff91a7d4f96

Contents?: true

Size: 1.32 KB

Versions: 9

Compression:

Stored size: 1.32 KB

Contents

require_relative "directory_loader"
require_relative "../ai/concept_ai"
require_relative "../ai/code/code_ai_factory"
require_relative "../ai/problem/problem_ai"
require_relative "../data/world"

class InputLoader
  ##
  # Load input data from every input directory
  # @param inputdirs (Array)
  def call(inputdirs, internet = true)
    data = {
      world: nil,
      concepts: [], codes: [], problems: [],
      concepts_ai: [], codes_ai: []
    }
    inputdirs.each do |dirname|
      loaded = DirectoryLoader.call(dirname)
      data[:concepts] += loaded[:concepts]
      data[:codes] += loaded[:codes]
      data[:problems] += loaded[:problems]
    end
    create_questions(data, internet)
  end

  private

  def create_questions(data, internet)
    # Create World data. Calculate concept neighbours
    # TODO: Calculate code and problem neighbours
    data[:world] = World.new(data[:concepts], internet)

    # Create ConceptAI data (ConceptAI = concept + questions)
    data[:concepts].each do |concept|
      data[:concepts_ai] << ConceptAI.new(concept, data[:world])
    end

    # Create CodeAI data (CodeAI = code + questions)
    data[:codes].each do |code|
      data[:codes_ai] << CodeAIFactory.get(code)
    end

    # Fill problem with questions
    data[:problems].each { |problem| ProblemAI.new.call(problem) }

    data
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
asker-tool-2.9.4 lib/asker/loader/input_loader.rb
asker-tool-2.9.3 lib/asker/loader/input_loader.rb
asker-tool-2.9.2 lib/asker/loader/input_loader.rb
asker-tool-2.9.1 lib/asker/loader/input_loader.rb
asker-tool-2.9.0 lib/asker/loader/input_loader.rb
asker-tool-2.8.0 lib/asker/loader/input_loader.rb
asker-tool-2.7.2 lib/asker/loader/input_loader.rb
asker-tool-2.7.1 lib/asker/loader/input_loader.rb
asker-tool-2.7.0 lib/asker/loader/input_loader.rb