def setup
      return Squire::Settings.new unless @source

      parser = Squire::Parser.of(@type)

      hash = parser.parse(source).with_indifferent_access

      if base_namespace
        hash.except(base_namespace).each do |key, values|
          # favours value from namespace over value from defaults
          hash[key] = hash[base_namespace].deep_merge(values) { |_, default, value| value.nil? ? default : value }
        end
      end

      Squire::Settings.from_hash(hash)
    end
def setup
      return Squire::Settings.new unless @source

      parser = Squire::Parser.of(@type)

      hash = parser.parse(source).with_indifferent_access

      if base_namespace
        hash.except(base_namespace).each do |key, values|
          # favours value from namespace over value from defaults
          hash[key] = hash[base_namespace].deep_merge(values) { |_, default, value| value.nil? ? default : value }
        end
      end

      Squire::Settings.from_hash(hash)
    end
Sets up the configuration based on +namespace+ and +source+.
 If +base_namespace+ provided, merges it's values with other namespaces for handling
 nested overriding of values.

 Favours values from +namespace+ over values from +base_namespace+.