README.md

# ExDocDocset

Bundles `:ex_doc` documentation into a docset.

Docsets can be loaded into [Dash](https://kapeli.com/dash)(Mac OS) or
[Zeal](https://zealdocs.org/)(Win/Linux). Not yet tested with Zeal though.

## Usage

In `mix.exs` add the formatters config:

```elixir
def project do
  [
    app: :my_app,
    version: "0.1.0-dev",
    deps: deps(),

    # Docs
    docs: [
      formatters: ["html", "epub", ExDocDocset.Formatter.DocSet]
    ]
  ]
end
```

The formatter will then create a docset in your `./doc` folder.

## TODO 

- [ ] More automated tests
- [ ] Correct types in table of contents (mark macros correctly)
- [ ] Handle extra files
- [ ] Check all types
  - [ ] Index
    - [x] Module
    - [x] Type
    - [x] Function
    - [x] Macro
    - [x] Protocol
    - [x] Callback
    - [x] Exception
    - [ ] Guide
    - [ ] Section
  - [ ] table of contents
    - [x] Type
    - [x] Function
    - [ ] Macro
    - [x] Callback
    - [ ] Section
- [ ] Check in with the `ex_doc` team on how to make enough things public for the usecase:  
https://github.com/elixir-lang/ex_doc/issues/1548
- [ ] Dash uses a newer optimized index: Figure out what's that about
- [x] Hide layout only if `navigator.userAgent.includes('Dash/')`
  - [x] Check zeal for UA

## Installation

If [available in Hex](https://hex.pm/docs/publish), the package can be installed
by adding `ex_doc_docset` to your list of dependencies in `mix.exs`:

```elixir
def deps do
  [
    {:ex_doc_docset, github: "LostKobrakai/ex_doc_docset"}
  ]
end
```

Documentation can be generated with [ExDoc](https://github.com/elixir-lang/ex_doc)
and published on [HexDocs](https://hexdocs.pm). Once published, the docs can
be found at <https://hexdocs.pm/ex_doc_docset>.