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