Sha256: 9ab311a840ac8a6bf6c26802c115884cc41810a8cff33db78a675b69d9d2fea0
Contents?: true
Size: 1.09 KB
Versions: 5
Compression:
Stored size: 1.09 KB
Contents
require "config_hound/error" require "config_hound/parser" require "open-uri" require "uri" module ConfigHound LoadError = Class.new(ConfigHound::Error) # Represents a source of configuration data. # class Resource class << self def [](arg) return arg if arg.is_a?(Resource) new(uri_for(arg)) end private(:new) private def uri_for(arg) case arg when URI arg when %r{^\w+:/} URI(arg) when %r{^/} URI("file:#{arg}") else URI("file:#{File.expand_path(arg)}") end end end def to_s uri.to_s end def resolve(path) Resource[uri + path] end def read open(uri.scheme == "file" ? uri.path : uri.to_s) do |io| io.read end rescue Errno::ENOENT raise LoadError, "can't load: #{uri}" end def format File.extname(uri.to_s)[1..-1] end def load Parser.parse(read, format) end private def initialize(uri) @uri = uri end attr_reader :uri end end
Version data entries
5 entries across 5 versions & 1 rubygems