Minimally integrate per-page HTML content into each "index.html" file #1383
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Bug/issue #, if applicable: rdar://163326857
Summary
This is the 1st (of probably 2) integration slices of #1366
This PR adds a new
HTMLRendererthat can render articles and symbols intoHTMLRenderer/RenderedPageInfo.In order to access information about resolved pages, resolved assets, etc. it uses a private
ContextLinkProviderthat conforms to theLinkProviderprotocol in DocCHTML.This PR also adds a new
HTMLContentConsumerprotocol and a concreteFileWritingHTMLContentConsumerimplementation that embeds the per-page HTML content inside of the<noscript>tag of the index.html file that DocC would normally make an exact copy of for each page.The main integration of these new types happen in the
ConvertActionConsumer. If it is passed anHTMLContentConsumerit will create aHTMLRendererfor eachDocumentationNodethat it processes. This means that the output is both a JSON file with content and and HTML file with content.Notably missing from this PR is:
Dependencies
None.
Testing
Nothing in particular for this PR. It intentionally lacks the CLI feature flag that would allow this to be used in
docc convert. See #1366 for how it eventually does get used.Checklist
Make sure you check off the following items. If they cannot be completed, provide a reason.
./bin/testscript and it succeeded