lib/ruby-conf.rb in ruby-conf-2.5.3 vs lib/ruby-conf.rb in ruby-conf-2.6.0

- old
+ new

@@ -5,10 +5,14 @@ require 'find' require 'digest/md5' module RubyConf + def self.puts(logger = $stdout, *obj) logger.puts(*obj) if logger.respond_to?(:puts) end + def self.err(*objs) self.puts($stderr, *objs) end + def self.out(*objs) self.puts($stdout, *objs) end + class Loader < BasicObject EXTENTIONS = %w{rbc rbcnf rbconf rbconfig rubyconf rubyconfig ruby-conf ruby-config} @@conf = @@path = @@mtime = @@md5 = nil @@ -19,16 +23,16 @@ def __rc_set_conf(conf = nil) @@conf, @@path, @@mtime, @@md5 = conf, nil, nil, nil end def __rc_load(path) __rc_set_conf if load(path) && @@conf @@path, @@mtime, @@md5 = path, File.mtime(path).to_i, Digest::MD5.hexdigest(File.read(path)) - puts "[ruby-conf] Auto-Loaded config at path: #{path}" + RubyConf.out "[ruby-conf] Auto-Loaded config at path: #{path}" end end def method_missing(name, *args, &block) if @@mtime && @@mtime != File.mtime(@@path).to_i && @@md5 != Digest::MD5.hexdigest(File.read(@@path)) - puts "[ruby-conf] Detected change in config file, reloading..." + RubyConf.err "[ruby-conf] Detected change in config file, reloading..." __rc_load(@@path) end if @@conf.nil? Find.find('.') do |path| @@ -39,10 +43,11 @@ end end @@conf.__send__(name, *args, &block) end def to_s() @@conf.to_s end + def to_str() @@conf.to_str end def inspect() @@conf.inspect end end end module Magic @@ -173,30 +178,54 @@ def __rc_build_string(depth = 0) str = "" str += "[#{@__rc_name || "CONFIG"}]\n" unless @__rc_parent str += "\n" @__rc_attributes.keys.map{|k| k.to_s }.sort.each do |key| - value = self[key] + value = begin + self[key] + rescue => e + "[UNRESOLVED]" + end + str += " " * depth str += "#{key}:" str += value.is_a?(Config) ? value.__rc_build_string(depth+1) : " #{value}\n" - str += "\n" unless depth > 0 +# str += "\n" unless depth > 0 end str end + def __rc_build_inspect() + istr = "" + istr += "[#{@__rc_name || "CONFIG"}] " unless @__rc_parent + istr += @__rc_attributes.keys.map{|k| k.to_s }.sort.map{ |key| + str = "" + value = begin + self[key] + rescue => e + "[UNRESOLVED:#{e}]" + end + str += "#{key}: " + str += value.is_a?(Config) ? "{ #{value.__rc_build_inspect} }" : value.inspect + str + }.join(", ") + istr + end + def to_s() __rc_build_string end def to_str() to_s end - - def __rc_build_inspect() "#{"[#{@__rc_name || "CONFIG"}] " unless @__rc_parent}#{@__rc_attributes.keys.map {|k| k.to_s }.sort.map { |key| "#{key}: #{self[key].is_a?(Config) ? "{ #{self[key].__rc_build_inspect} }" : self[key].inspect}" }.join(", ")}" end def inspect() __rc_build_inspect end end @@__rc_configs = {} class << self def clear() Loader::__rc_set_conf @@__rc_configs.clear end + + def to_s() @@__rc_configs.to_s end + def to_str() @@__rc_configs.to_str end + def inspect() @@__rc_configs.inspect end def [](name) @@__rc_configs[name.to_sym] end def method_missing(name, *args) @@__rc_configs[name.to_sym] end def respond_to?(name) @@__rc_configs.key?(name.to_sym) end