diff --git a/lib/mutations/command.rb b/lib/mutations/command.rb index c03cbbf..a019423 100644 --- a/lib/mutations/command.rb +++ b/lib/mutations/command.rb @@ -51,6 +51,10 @@ def input_filters end end + def input_descriptions + input_filters.input_descriptions if input_filters.respond_to?(:input_descriptions) + end + end # Instance methods diff --git a/lib/mutations/hash_filter.rb b/lib/mutations/hash_filter.rb index 8d19f0e..820654d 100644 --- a/lib/mutations/hash_filter.rb +++ b/lib/mutations/hash_filter.rb @@ -5,6 +5,10 @@ def self.register_additional_filter(type_class, type_name) name = args[0] options = args[1] || {} + if described = current_input_description + @input_descriptions[name.to_sym] = described + end + @current_inputs[name.to_sym] = type_class.new(options, &block) end end @@ -16,10 +20,13 @@ def self.register_additional_filter(type_class, type_name) attr_accessor :optional_inputs attr_accessor :required_inputs + attr_accessor :input_descriptions, :input_description + def initialize(opts = {}, &block) super(opts) @optional_inputs = {} + @input_descriptions = {} @required_inputs = {} @current_inputs = @required_inputs @@ -39,6 +46,16 @@ def dup dupped end + def desc input_description + @input_description = input_description + end + + def current_input_description + val = @input_description && @input_description.dup + @input_description = nil + val + end + def required(&block) @current_inputs = @required_inputs instance_eval &block