lib/nenv/environment.rb in nenv-0.0.3 vs lib/nenv/environment.rb in nenv-0.1.0
- old
+ new
@@ -20,28 +20,39 @@
def initialize(namespace = nil)
@namespace = (namespace ? namespace.upcase : nil)
end
+ def self.create_method(meth, &block)
+ _create_env_method(self, meth, &block)
+ end
+
def create_method(meth, &block)
- fail(AlreadyExistsError, meth) if respond_to?(meth)
+ self.class._create_env_method(class << self; self; end, meth, &block)
+ end
- (class << self; self; end).send(:define_method, meth) do |*args|
- raw_value = args.first
+ private
+
+ def _sanitize(meth)
+ meth.to_s[/^([^=?]*)[=?]?$/, 1].upcase
+ end
+
+ def self._create_env_method(instance, meth, &block)
+ _fail_if_exists(instance, meth)
+
+ instance.send(:define_method, meth) do |*args|
env_name = [@namespace, _sanitize(meth)].compact.join('_')
- callback = block
if args.size == 1
- ENV[env_name] = Dumper.new.dump(raw_value, &callback)
+ raw_value = args.first
+ ENV[env_name] = Dumper.new.dump(raw_value, &block)
else
- Loader.new(meth).load(ENV[env_name], &callback)
+ Loader.new(meth).load(ENV[env_name], &block)
end
end
end
- private
-
- def _sanitize(meth)
- meth.to_s[/^([^=?]*)[=?]?$/, 1].upcase
+ def self._fail_if_exists(instance, meth)
+ fail(AlreadyExistsError, meth) if instance.instance_methods.include?(meth)
end
end
end