All files / src/generators assignment.js

100% Statements 6/6
100% Branches 0/0
100% Functions 4/4
100% Lines 6/6

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31                        21x     21x     24x       21x   21x   21x        
// @flow
 
import type {
  NodeType,
  AssignmentNodeType,
  GeneratedCodeType,
  AssignmentsType,
  AssignmentType
} from '../types'
 
export default (
  Generator: NodeType => GeneratedCodeType
): (AssignmentNodeType => GeneratedCodeType) => ({
  value
}: AssignmentNodeType): GeneratedCodeType => {
  const compileOneAssignment = (
    assignment: AssignmentType
  ): GeneratedCodeType =>
    `_ = _.__assign__('${assignment[0].value}', (${Generator(
      assignment[1]
    )}), _)`
 
  const compileAssignments = (
    assignments: AssignmentsType
  ): GeneratedCodeType => assignments.map(compileOneAssignment).join('; ')
 
  return `((function() {${compileAssignments(
    value.assignments
  )}; return (${Generator(value.program)})})())`
}