/* @flow */ import { parseFor } from 'compiler/parser/index' import { getAndRemoveAttr, addRawAttr } from 'compiler/helpers' /** * Map the following syntax to corresponding attrs: * * * ... * ... * */ export function preTransformRecycleList ( el: ASTElement, options: WeexCompilerOptions ) { const exp = getAndRemoveAttr(el, 'for') if (!exp) { if (options.warn) { options.warn(`Invalid syntax: missing "for" expression.`) } return } const res = parseFor(exp) if (!res) { if (options.warn) { options.warn(`Invalid syntax: ${exp}.`) } return } addRawAttr(el, ':list-data', res.for) addRawAttr(el, 'binding-expression', res.for) addRawAttr(el, 'alias', res.alias) if (res.iterator2) { // (item, key, index) for object iteration // is this even supported? addRawAttr(el, 'index', res.iterator2) } else if (res.iterator1) { addRawAttr(el, 'index', res.iterator1) } const switchKey = getAndRemoveAttr(el, 'switch') if (switchKey) { addRawAttr(el, 'switch', switchKey) } }