## 3.2 Including and Excluding Functors

`--relative`

  > `--relative` (default), `--norelative`

  All functors that are referred to by relative urls are included. Import urls in the resulting functor remain relative.

`--include`

  > `--include=``URL``,`...`,``URL`

  Include all functors whose url matches one of the comma separated url prefixes.

`--exclude`

  > `--exclude=``URL``,`...`,``URL`

  Exclude all functors whose url matches one of the comma separated url prefixes.

`--rewrite`

  > `--rewrite=``RULE``,`...`,``RULE`

  When the functors are gathered that make up the linked functor, all import URLs are resolved with respect to the importing functor. This means that all file urls become absolute, and as such make up the import of the output functor.

  This is often not desirable. In the common case that the imported functors lie in the same directory or in subdirectories as the root functor, the `--relative` option can be used, in which case the import urls remain relative.

  The `--rewrite` option generalizes this principle: It allows to specify a list of rules of the form `` `FROM``=``TO`, meaning: If a url has prefix `FROM`, then replace it by `TO`. The first matching rule is applied.

Note that multiple `--include` and `--exclude` directives can be given on the commandline. They have cummulative effect, with the policy that later directives take precedence over earlier ones. For example:

> `ozl --include=/foo/ --exclude=/foo/bar/ ...`

causes all imports from files below directory `/foo` to be included except those under directory `/foo/bar`. We can further refine this policy by introducing an exception to the last exclusion pattern and request inclusion of modules imported from below directory `/foo/bar/baz`:

> `ozl --include=/foo/ --exclude=/foo/bar/ --include=/foo/bar/baz/ ...`