Sha256: c323a71500038ea80556fa031795a79eae066bff11d6e4fe95b89fe401b15b25

Contents?: true

Size: 1.11 KB

Versions: 3

Compression:

Stored size: 1.11 KB

Contents

# encoding: utf-8
module Filegen
  # Build data sources
  class DataSourceBuilder
    private

    attr_reader :params

    public

    # @!attribute [r] sources
    #   Return the sources generated
    attr_reader :sources

    # Create the data source builder
    #
    # @param [OpenStruct] params
    #   the params instance which contains all parameter of the commandline utility
    def initialize(params)
      @params = params

      validate_data_sources

      @sources = []
      chosen_data_sources.each do |o|
        @sources << known_data_source_builders[o]
      end
    end

    private

    def chosen_data_sources
      params.data_sources
    end

    def known_data_source_builders
      params.data_source_builders
    end

    def allowed_data_sources
      known_data_source_builders.keys
    end

    def validate_data_sources
      invalid_data_sources = chosen_data_sources - allowed_data_sources
      fail Exceptions::DataSourcesAreInvalid, "Unknown data source#{invalid_data_sources.size > 1 ? 's' : ''} \"#{invalid_data_sources.join(', ')}\" found." unless invalid_data_sources.empty?
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
filegen-0.3.0 lib/filegen/data_source_builder.rb
filegen-0.2.3 lib/filegen/data_source_builder.rb
filegen-0.2.2 lib/filegen/data_source_builder.rb