Sha256: b48b3c9eba757fa6a757f8ac0be3a4adab2eb33ef7ef5c4cdc6b8039bd847236

Contents?: true

Size: 1.15 KB

Versions: 8

Compression:

Stored size: 1.15 KB

Contents

# frozen_string_literal: true

module Journal
  class Section
    attr_accessor :key, :title, :questions, :answers

    ##
    ## Initializes the given section.
    ##
    ## @param      section  [Hash] The section as defined in
    ##                      configuration
    ##
    ## @return     [Section] the configured section
    ##
    def initialize(section)
      @key = section['key']
      @title = section['title']
      @questions = section['questions'].map { |question| Question.new(question) }
      @answers = {}
      ask_questions
    end

    ##
    ## Ask the questions detailed in the 'questions' section of the configuration
    ##
    ## @return [Hash] the question responses
    ##
    def ask_questions
      @questions.each do |question|
        if question.key =~ /\./
          res = @answers
          keys = question.key.split(/\./)
          keys.each_with_index do |key, i|
            next if i == keys.count - 1

            res[key] = {} unless res.key?(key)
            res = res[key]
          end

          res[keys.last] = question.ask
        else
          @answers[question.key] = question.ask
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
journal-cli-1.0.17 lib/journal-cli/section.rb
journal-cli-1.0.16 lib/journal-cli/section.rb
journal-cli-1.0.15 lib/journal-cli/section.rb
journal-cli-1.0.14 lib/journal-cli/section.rb
journal-cli-1.0.13 lib/journal-cli/section.rb
journal-cli-1.0.12 lib/journal-cli/section.rb
journal-cli-1.0.11 lib/journal-cli/section.rb
journal-cli-1.0.10 lib/journal-cli/section.rb