docute
docute copied to clipboard
embed code fragments from external sources
I would like to import fenced code from GitHub repo files similar to https://docsify.js.org/#/embed-files?id=embedded-code-fragments
Is this on the roadmap?
IssueHunt Summary
Sponsors (Total: $100.00)
-
issuehunt ($100.00)
Become a sponsor now!
Or submit a pull request to get the deposits!
Tips
- Checkout the Issuehunt explorer to discover more funded issues.
- Need some help from other developers? Add your repositories on IssueHunt to raise funds.
Yeah but probably using a different syntax, like:
<!-- embed foo.js as code block -->
#embed(/foo.js code language="js")
<!-- result: -->
```js
// content in foo.js
```
A fragment:
#embed(/foo.md fragment)
<!-- result: -->
something to embed
Where foo.md
looks like:
# title
<!-- docute-embed-start -->
something to embed
<!-- docute-embed-end -->
Sounds great! A couple more things :stuck_out_tongue: is it possible to add support for:
- these files to be externally loaded?
- adding arbitrary fencing?
For instance:
<!-- embed example.js as code block -->
#embed(
https://raw.githubusercontent.com/someuser/somerepo/code/example.js
type=code
language="js"
fence="some-demo"
)
<!-- .../example.js -->
...
/// [some-demo-start]
...
/// [some-demo-end]
...
<!-- result -->
// some content from example.js within the /// [some-demo]
and then
<!-- import content from other .md file -->
#embed(
https://raw.githubusercontent.com/someuser/somerepo/example.md
type=fragment
fence="some-fragment"
)
<!-- .../exmaple.md -->
...
<!-- some-fragment-start -->
something to embed
<!-- some-fragment-end -->
...
Being able to define the fence allows multiple partials from a single file to be imported.
Externally loading code decouples the need for it to live alongside the documentation, say in an examples repo.
The api.processMarkdown(fn)
API now can return a Promise:

You can probably implement it as a plugin using this API:
const embedPlugin = () => {
return {
name: 'embed',
extend(api) {
api.processMarkdown(async markdown => {
return modifiedMarkdown
})
}
}
}
new Docute({
plugins: [embedPlugin()]
})
Sweet, I'll give this a go soon! Cheers!
@issuehunt has funded $100.00 to this issue.
- Submit pull request via IssueHunt to receive this reward.
- Want to contribute? Chip in to this issue via IssueHunt.
- Checkout the IssueHunt Issue Explorer to see more funded issues.
- Need help from developers? Add your repository on IssueHunt to raise funds.
Can i take this?
@janat08 Feel free. I got caught up with life!
@egoist please merge, its been half a year