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)
commit1b1706eed1a31f4d1c3ef48e184e50ec2e0f7741
treea222c08c3197c7b15477c9cc838c733db4806038
parent0b7ebf95b2e6023631ac19a658b146b9e3f77c0e
parent99b2059e1d46f947c49f63fcc5db720d4a7e0188
Merge: Model filters: extract filters from ModelVisitor

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>