Class: YARD::Verifier
- Inherits:
-
Object
- Object
- YARD::Verifier
- Defined in:
- lib/yard/verifier.rb
Overview
Similar to a Proc, but runs a set of Ruby expressions using a small DSL to make tag lookups easier.
The syntax is as follows:
-
All syntax is Ruby compatible
-
object
(o
for short) exist to access the object being verified -
@TAGNAME is translated into object.tag(‘TAGNAME’)
-
@@TAGNAME is translated into object.tags(‘TAGNAME’)
-
object
can be omitted as target for method calls (it is implied)
Instance Attribute Summary collapse
-
#expressions ⇒ Array<String>
A list of all expressions the verifier checks for.
Instance Method Summary collapse
-
#add_expressions(*expressions) ⇒ void
Adds a set of expressions and recompiles the verifier.
-
#call(object) ⇒ Boolean
Tests the expressions on the object.
-
#initialize(*expressions) ⇒ Verifier
constructor
Creates a verifier from a set of expressions.
-
#method_missing(sym, *args, &block) ⇒ Object
Passes any method calls to the object from the #call.
-
#run(list) ⇒ Array<CodeObjects::Base>
Runs a list of objects against the verifier and returns the subset of verified objects.
Constructor Details
#initialize(*expressions) ⇒ Verifier
Creates a verifier from a set of expressions
48 49 50 51 |
# File 'lib/yard/verifier.rb', line 48 def initialize(*expressions) @expressions = [] add_expressions(*expressions) end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(sym, *args, &block) ⇒ Object
Passes any method calls to the object from the #call
63 64 65 66 67 68 69 |
# File 'lib/yard/verifier.rb', line 63 def method_missing(sym, *args, &block) if object.respond_to?(sym) object.send(sym, *args, &block) else super end end |
Instance Attribute Details
Instance Method Details
#add_expressions(*expressions) ⇒ void
This method returns an undefined value.
Adds a set of expressions and recompiles the verifier
58 59 60 |
# File 'lib/yard/verifier.rb', line 58 def add_expressions(*expressions) self.expressions += expressions.flatten end |
#call(object) ⇒ Boolean
If the object is a CodeObjects::Proxy the result will always be true.
Tests the expressions on the object.
76 77 78 79 80 81 82 83 |
# File 'lib/yard/verifier.rb', line 76 def call(object) return true if object.is_a?(CodeObjects::Proxy) modify_nilclass @object = object retval = __execute ? true : false unmodify_nilclass retval end |
#run(list) ⇒ Array<CodeObjects::Base>
Runs a list of objects against the verifier and returns the subset of verified objects.
91 92 93 |
# File 'lib/yard/verifier.rb', line 91 def run(list) list.reject {|item| call(item).is_a?(FalseClass) } end |