1 |
|
2 |
|
3 | import { createWriteFunction } from './write'
|
4 | import { createRenderFunction } from './render'
|
5 | import type { RenderOptions } from './create-renderer'
|
6 |
|
7 | export function createBasicRenderer ({
|
8 | modules = [],
|
9 | directives = {},
|
10 | isUnaryTag = (() => false),
|
11 | cache
|
12 | }: RenderOptions = {}) {
|
13 | const render = createRenderFunction(modules, directives, isUnaryTag, cache)
|
14 |
|
15 | return function renderToString (
|
16 | component: Component,
|
17 | context: any,
|
18 | done: any
|
19 | ): void {
|
20 | if (typeof context === 'function') {
|
21 | done = context
|
22 | context = {}
|
23 | }
|
24 | let result = ''
|
25 | const write = createWriteFunction(text => {
|
26 | result += text
|
27 | return false
|
28 | }, done)
|
29 | try {
|
30 | render(component, write, context, () => {
|
31 | done(null, result)
|
32 | })
|
33 | } catch (e) {
|
34 | done(e)
|
35 | }
|
36 | }
|
37 | }
|