# 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

    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)})})())`
    }