/* @flow */ import { genStaticKeys } from 'shared/util' import { createCompiler } from 'compiler/index' import modules from './modules/index' import directives from './directives/index' import { isUnaryTag, mustUseProp, isReservedTag, canBeLeftOpenTag, getTagNamespace } from '../util/element' export const baseOptions: WeexCompilerOptions = { modules, directives, isUnaryTag, mustUseProp, canBeLeftOpenTag, isReservedTag, getTagNamespace, preserveWhitespace: false, recyclable: false, staticKeys: genStaticKeys(modules) } const compiler = createCompiler(baseOptions) export function compile ( template: string, options?: WeexCompilerOptions ): WeexCompiledResult { let generateAltRender = false if (options && options.recyclable === true) { generateAltRender = true options.recyclable = false } const result = compiler.compile(template, options) // generate @render function for <recycle-list> if (options && generateAltRender) { options.recyclable = true // disable static optimizations options.optimize = false const { render } = compiler.compile(template, options) result['@render'] = render } return result }