Hey, I’m now planning EDT (Elixir Documentation Tool) - a documentation tool for all Elixir projects.
Planned features:
-
Language support - I will define API and 2-3 implementations for it by default:
a) Elixir support
b) JavaScript support (probably based onjsdoc
)
c) maybe also CoffeeScript support
Maybe also support forNIF
s anderlang
code?
Imagine that your project that uses (for example):rustler
, someerlang
code, lots ofJavaScript
code and of course lots ofElixir
code will now be documented in one clear page with same look! -
Grouping support - Each language implementation should provide also implementation for grouping code. For example
ex_doc
now groups Elixir modules into:
a) Exceptions
b) Protocols
c) Tasks
d) Rest - normal modules
I’m planning to implement much more + add ability to define your own module types in case you are writing your own macros that defines custom modules.
Maybe Elixir core team will decide to support one unique attribute that selects specified module type like:@module_type :protocol
or:@module_type {:core, :protocol}
(auto generated when creating protocol). -
Sub-grouping support - Each group (in Elixir module type) should provide implementation for grouping it’s contents. Currently in
ex_doc
are separated:
a) Callbacks
b) Functions
c) Types
Similarly to 2nd point - I will also add ability to define your own. For exampleExApi
will sort implemented features (in implementation module) by it’s implementation status (i.e.:supported
,:not_supported
and:not_implemented
). -
ExDoc
features like ability to choose markdown tool and themes or define extra pages. -
Support for i18n - by default all documentation must be written in base language (probably all projects will write documentation in English language). I will write an small
Phoenix
-based local server with (probably) SQLite database to add translation for documentation. Tool will not generate documentation parsing source files - it will parse source files and saves all data into database in order to translate it in future. Then on that site you will be able to generate and preview your documentation. -
Developer mode - I will add ability to document private functions and I will add simple switcher that shows/hides documentation for them. By default in developer mode documentation will show CONTRIBUTING.md file and README.md file in normal mode.
-
Save your settings - imagine that you only need to switch theme one time and then only click save your settings and choose for all projects!
-
Other enhancements:
a) use latest Ecmascript and HTML5 api - for example I could generate one big file with simple HTML templates
b) new sidebar - I have my own version of sidebar somewhere on my hard drive. Let me surprise you.
c) more and more settings
and much, much more -
Your ideas - of course I’m always open to your ideas!
I will probably start work on this after 1.0.0
release of ExApi
. These projects will complement each other. EDT
will defines apis using ExApi
library as this will be great example of this library usage. Also ExApi
will use EDT
to generate special documentation.
What do you think about it?