lib/yard/verifier.rb in yard-0.5.6 vs lib/yard/verifier.rb in yard-0.5.7

- old
+ new

@@ -29,18 +29,35 @@ # @example Specifying multiple expressions # Verifier.new('@return', '@param', '@yield') # # Equivalent to: # Verifier.new('@return && @param && @yield') class Verifier + # @return [Array<String>] a list of all expressions the verifier checks for + attr_reader :expressions + + def expressions=(value) + @expressions = value + create_method_from_expressions + end + # Creates a verifier from a set of expressions # # @param [Array<String>] expressions a list of Ruby expressions to # parse. def initialize(*expressions) - create_method_from_expressions(expressions.flatten) + @expressions = [] + add_expressions(*expressions) end + # Adds a set of expressions and recompiles the verifier + # + # @param [Array<String>] expressions a list of expressions + # @return [void] + def add_expressions(*expressions) + self.expressions += expressions.flatten + end + # Passes any method calls to the object from the {#call} def method_missing(sym, *args, &block) if object.respond_to?(sym) object.send(sym, *args, &block) else @@ -85,11 +102,11 @@ end # Creates the +__execute+ method by evaluating the expressions # as Ruby code # @return [void] - def create_method_from_expressions(exprs) - expr = exprs.flatten.map {|e| "(#{parse_expression(e)})" }.join(" && ") + def create_method_from_expressions + expr = expressions.map {|e| "(#{parse_expression(e)})" }.join(" && ") instance_eval(<<-eof, __FILE__, __LINE__ + 1) def __execute; #{expr}; end eof end \ No newline at end of file