Skip to content

Commit 7291a06

Browse files
committed
- Implemented aenniw's fix docsifyjs#866
1 parent 724ac02 commit 7291a06

File tree

1 file changed

+28
-9
lines changed

1 file changed

+28
-9
lines changed

src/core/render/embed.js

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@ import { get } from '../fetch/ajax'
22
import { merge } from '../util/core'
33
import stripIndent from 'strip-indent'
44

5+
const INCLUDE_COMPONENT = '__include__'
56
const cached = {}
67

78
function walkFetchEmbed({ embedTokens, compile, fetch }, cb) {
89
let token
910
let step = 0
10-
let count = 1
11+
let count = 0
1112

1213
if (!embedTokens.length) {
1314
return cb({})
@@ -46,7 +47,7 @@ function walkFetchEmbed({ embedTokens, compile, fetch }, cb) {
4647
}
4748

4849
cb({ token, embedToken })
49-
if (++count >= step) {
50+
if (++count >= embedTokens.length) {
5051
cb({})
5152
}
5253
}
@@ -64,6 +65,23 @@ function walkFetchEmbed({ embedTokens, compile, fetch }, cb) {
6465
}
6566
}
6667

68+
function expandInclude(tokens) {
69+
if (!tokens) {
70+
return tokens
71+
}
72+
73+
const expandedTokens = []
74+
tokens.forEach(e => {
75+
if (e.type === INCLUDE_COMPONENT && e.components) {
76+
e.components.forEach(c => expandedTokens.push(c))
77+
} else {
78+
expandedTokens.push(e)
79+
}
80+
})
81+
82+
return expandedTokens
83+
}
84+
6785
export function prerenderEmbed({ compiler, raw = '', fetch }, done) {
6886
let hit = cached[raw]
6987
if (hit) {
@@ -98,18 +116,19 @@ export function prerenderEmbed({ compiler, raw = '', fetch }, done) {
98116
}
99117
})
100118

101-
let moveIndex = 0
102119
walkFetchEmbed({ compile, embedTokens, fetch }, ({ embedToken, token }) => {
103120
if (token) {
104-
const index = token.index + moveIndex
105-
106121
merge(links, embedToken.links)
107122

108-
tokens = tokens
109-
.slice(0, index)
110-
.concat(embedToken, tokens.slice(index + 1))
111-
moveIndex += embedToken.length - 1
123+
tokens = tokens.slice(0, token.index).concat(
124+
{
125+
type: INCLUDE_COMPONENT,
126+
components: embedToken
127+
},
128+
tokens.slice(token.index + 1)
129+
)
112130
} else {
131+
tokens = expandInclude(tokens)
113132
cached[raw] = tokens.concat()
114133
tokens.links = cached[raw].links = links
115134
done(tokens)

0 commit comments

Comments
 (0)