lib/daijobu/namespace_proxy.rb in sander6-daijobu-0.2.0 vs lib/daijobu/namespace_proxy.rb in sander6-daijobu-0.2.1
- old
+ new
@@ -1,32 +1,44 @@
module Daijobu
class NamespaceProxy
@@default_separator = ':'
+
+ # Getter for the default separator. Default is ':'
def self.default_separator
@@default_separator
end
+ # Setter for the default separator. I use ':', but a lot of people like '/'.
def self.default_separator=(separator)
@@default_separator = separator
end
-
+
+ # NamespaceProxy.new takes an owner (a Daijobu::Client), a namespace, and a separator (defaults
+ # to @@default_separator).
+ # NamespaceProxy objects are typically created using Daijobu::Client#method_missing, so you're
+ # rarely going to instantiate one of these on your own.
def initialize(owner, namespace, separator = @@default_separator)
@owner = owner
@namespace = namespace.to_s
@separator = separator
end
-
+
+ # Sends #[] back to the owner, prepending the key given with the namespace and separator.
def [](key)
@owner["#{@namespace}#{@separator}#{key}"]
end
-
+
+ # Sends #[]= back to the owner, prepending the key given with the namespace and separator.
def []=(key, value)
@owner["#{@namespace}#{@separator}#{key}"] = value
end
-
+
+ # Any missing method is assumed to be yet another namespace.
def method_missing(namespace, *args)
separator = args.shift || @@default_separator
- Daijobu::NamespaceProxy.new(@owner, "#{@namespace}#{@separator}#{namespace}", separator)
+ @namespace = "#{@namespace}#{@separator}#{namespace}"
+ @separator = separator
+ self
end
end
end
\ No newline at end of file