Merge: Model filters: extract filters from ModelVisitor
authorJean Privat <jean@pryen.org>
Mon, 13 Nov 2017 16:03:20 +0000 (11:03 -0500)
committerJean Privat <jean@pryen.org>
Mon, 13 Nov 2017 16:03:20 +0000 (11:03 -0500)
A list of filters that can be applied on a MEntity

By default ModelFilter accepts all mentity.

~~~nit
var filter = new ModelFilter
assert filter.accept_mentity(my_mentity) == true
~~~

To quickly configure the filters, options can be passed to the constructor:
~~~nit
var filter = new ModelFilter(
        min_visibility = protected_visibility,
accept_fictive = false,
accept_test = false,
accept_redef = false,
accept_extern = false,
accept_attribute = false,
accept_empty_doc = false
)
~~~

With this, one can use temporary filters with the model visitors and views:

~~~nit
var default_filter = new ModelFilter(private_visibility)
var view = new ModelView(view, default_filter)
# ...
if view.accept_mentity(mentity) then
   # ...
end
# ...
var custom_filter = new ModelFilter(public_visibility)
if view.accept_mentity(mentity, custom_filter) then
   # ...
end
~~~

Pull-Request: #2567
Reviewed-by: Jean Privat <jean@pryen.org>


Trivial merge