TODO
- [x] script for doc'ing the dart sdk
- [x] script for doc'ing flutter
- [x] support generating package:flutter
- [x] cleaner API for generation
- [ ] support generating the flutter SDK
- [ ] libraries should have a section for symbols exported from other libs
- [ ] classes should have a section for symbols inherited from parent classes
- [ ] use pragmas to control dartdoc specific imports
- [ ] support front-matter for markdown files?
- [ ] switch over to reading the dart sdk libraries declaratively
Model elements
- [x] item (documentable, backed by an element)
- [x] items
- [x] group and group ordering
Testing
- [x] tests for LinkedCodeRenderer
- [x] tests for markdown signature feature
- [ ] tests for workspace code
- [ ] tests for api code
- [ ] tests for DartFormat
source code => api => generation? source code => workspace? we don't need to test at the html level; is the api model well-formed? can we separately convert from api to html correctly?
Language features
- [ ] tests for language features
Html output
- [x] clean
- [x] small
- [ ] smaller css
- [ ] version the css (from Infima)
Page layout and nav
- [x] dart script
- [x] full SPA
- [x] convert the left-nav to runtime generated
- [x] manage the scroll during page transitions
- [x] simplify wrappers around DOM
- [ ] ensure items in the left nav scroll into focus on page changes
- [ ] ensure we don't reload a page when navigating within the same page
- [ ] update outline view selection on page scroll
Search
- [x] simple, comprehensive
Server
- [x] have a server mode; allow preview of docs, and refreshing will pick up file changes and re-generate
- [x] test --serve; we can ping localhost and get expected pages
Generation
- [x] no args
- [x] cli just supports documenting packages
- [x] more sophisticated use cases (dart sdk, flutter) should use the package as a library
- [x] fast
- [ ] configuration via a yaml file
Fixes
- [x] have a method to convert from an element to a valid in-page ID
- [x] rename the resources directory to prevent namespace conflicts
- [ ] fix issues with top-level vars vs. getters vs setters in the model
- [ ] make sure a field is documented as a field and not as a getter and setter
Completeness
- [ ] indicate which API members are exports from other libraries
- [ ] correctly determine where to document elements for Flutter (for things exported from multiple libraries)
- [ ] determine the export chain length (e.g. symbol A is exported from B, C, defined in D)
- [ ] support for dartdoc categories
- [ ] support for resolving qualified (foo.Bar) dartdoc references
- [ ] support for flutter phantom references
- [ ] support for dartdoc macros (
{@template foo-bar} / {@macro foo-bar})
Other
- [x] generate a markdown file representing the package's public API