def source(source = nil, options = {})
      return @source unless source

      @source = source
      @parser = options[:parser]
      @type   = options[:type]

      @type ||= source.is_a?(Hash) ? :hash : File.extname(@source)[1..-1].to_sym
    end
def source(source = nil, options = {})
      return @source unless source

      @source = source
      @parser = options[:parser]
      @type   = options[:type]

      @type ||= source.is_a?(Hash) ? :hash : File.extname(@source)[1..-1].to_sym
    end
Sets +source+ for the configuration
 If called without parameters, returns +source+.

 Possible options:
 * <tt>:type</tt> - type of +source+ (optional, based on file extension)
 * <tt>:parser</tt> - parse of input +source+ (optional, based on +:type+)