Method: CoinSync::Config#filtered_sources

Defined in:
lib/coinsync/config.rb

#filtered_sources(selected, except = nil) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/coinsync/config.rb', line 38

def filtered_sources(selected, except = nil)
  included = if selected.nil? || selected.empty?
    sources.values
  else
    selected = [selected] unless selected.is_a?(Array)

    selected.map do |key|
      sources[key] or raise "Source not found in the config file: '#{key}'"
    end
  end

  if except
    except = [except] unless except.is_a?(Array)
    included -= except.map { |key| sources[key] }
  end

  Hash[included.map { |source| [source.key, source] }]
end