lib/appsent/config_value.rb in appsent-0.0.3 vs lib/appsent/config_value.rb in appsent-0.0.4
- old
+ new
@@ -8,13 +8,36 @@
VALUE_WRONG_TYPE_MSG = "wrong type,should be %s"
FULL_ERROR_MESSAGE = "%s: %s # %s%s%s"
WRONG_CHILD_OPTIONS_MSG = "wrong nested parameters"
# data => it's an actual data of parameter
- def initialize parameter, data_type, data, description, example, &block
- @parameter, @data_type, @data, @description, @example = (parameter and parameter.to_sym), data_type, data, description, example
+ def initialize parameter, data, *opts, &block
+ @parameter, @data = (parameter and parameter.to_sym), data
+ if opts.size==1
+ opts = opts.first
+ begin
+ %w( type desc example ).each do |deprecated_key|
+ warn("AppSent DEPRECATION WARNING: :#{deprecated_key} is deprecated and will be removed in a future major release, go to online documentation and see how to define config values") if opts.has_key?(deprecated_key.to_sym)
+ end
+
+ @data_type, @description, @example = opts[:type], opts[:desc], opts[:example]
+ rescue NoMethodError# opts is a [String]
+ @data_type = opts
+ end
+ else
+ @data_type = opts.delete_at(0)
+ description_and_example = opts.delete_at(0)
+ case description_and_example
+ when String
+ @description = description_and_example
+ when Hash
+ @description = description_and_example.keys.first
+ @example = description_and_example.values.first
+ end
+ end
+
@data_type ||= Hash
raise WRONG_DATA_TYPE_PASSED_MSG unless @data_type.is_a?(Class)
raise "params #{@data_type} and block given" if block_given? and not [Array,Hash].include?(@data_type)
@block = block
@@ -81,16 +104,15 @@
end
end
private
- def method_missing option, opts={}
+ def method_missing option, *opts, &block
self.child_options << self.class.new(
option.to_s,
- opts[:type],
data[option.to_sym],
- opts[:desc],
- opts[:example]
+ *opts,
+ &block
)
self.child_options.last.nesting+=(self.nesting+1)
end
end
end