the first form in the file isn't "defproject".
Instead of reading just the first line, parse-project-form will loop
through the full file, stopping when defproject is found and then
parse it as it always has.
The new option is available at the command line with "-e" or "--exclude". It can also be part of the project.clj file via the ":exclude" keyword.
I was requiring this feature because I often have local testing files which I don't want to be included in the documentation.
The new option is quite simple: it simply filter out the files that have been identified by the option out of the "sources" var before it is being used by multidoc! or uberdoc!
* Find all processable files in one pass to preserve order.
* Added .cljx to the set of processable file extensions.
* Use set as predicate instead of regex. Maybe down the road this set
could be configured by users in their project.clj files?
The var itself was being written out, not its contents. On top of that,
the var holds a fn, and not HTML. This patch invokes the fn where
appropriate (i.e. in `uberdoc-html`).
In the excitement of getting something working and polished, I
overlooked the fact that "#" is indeed part of Markdown syntax, and that
there is little to distinguish `;; #Directive` from `;; # Title`.
"@" is visually distinctive, and is not currently part of Markdown.
This change adds so-called 'directives' to our comments. A directive is
a comment line whose only contents are a hash, followed by the directive
name, e.g.
```
;; #DirectiveName
```
Directives are not included in the `*comments*` vector in any case.
The two directives implemented here are "#MargDisable" and
"#MargEnable". The former, when encountered, causes comments read by
`read-comment` to be ignored. The latter re-enables it.
The rationale for this change is to accommodate e.g. license-header
boilerplate without polluting the generated docs.