LEFT + ( SQUARE ? "^2" : RIGHT ) = \ ?
plus( (A*C)+XX, (A*D+B*C)+X, B*D )
plus( XX, B*D )plus( XX, B*D )plus( (A+C)+XX, (A*D+B*C)+X, B*D )plus( (A*C)+XX, (A*D+B*C)+X, B+D )plus( (A+C)+XX, (A*D+B*C)+X, B+D )plus( (A+C)+XX, (A*D-B*C)+X, B*D )plus( (A*C)+XX, (A*D-B*C)+X, B+D )plus( (A+C)+XX, (A*D-B*C)+X, B+D )plus( (A+C)+XX, (A*B+C*D)+X, B*D )plus( (A*C)+XX, (A*B+C*D)+X, B+D )plus( (A+C)+XX, (A*B+C*D)+X, B+D )plus( (A+C)+XX, (A*B-C*D)+X, B*D )plus( (A*C)+XX, (A*B-C*D)+X, B+D )plus( (A+C)+XX, (A*B-C*D)+X, B+D )= LEFT + RIGHT
Start by distributing the parseFormat( "( #{x} " + signOp( B ) + "#{" + B + "})", [ BLUE, BLUE ] ):
\qquad = \quad parseFormat( "( #{x} " + signOp( B ) + "#{" + B + "})( #{x} " + signOp( D ) + "#{" + D + "})", [ BLUE, BLUE, PINK, PINK ] )
\qquad = \quad parseFormat( "#{x} ( #{x} " + signOp( D ) + "#{" + D + "})" + signOp( B ) + "#{" + B + "}( #{x} " + signOp( D ) + "#{" + D + "})", [ BLUE, PINK, PINK, BLUE, PINK, PINK ] )
Next, distribute the x and the B:
\qquad = \quad parseFormat( "(#{x} \\cdot #{x}) + (#{x} \\cdot #{" + D + "}) + (#{" + B + "} \\cdot #{x}) + (#{" + B + "} \\cdot #{" + D + "})", [ BLUE, PINK, BLUE, PINK, BLUE, PINK, BLUE, PINK ] )
Notice that by distributing you're really just multiplying each term in the first expression by each term in the second expression.
Simplify:
\qquad = \quad parseFormat( plus( "x^2", D + "x", B + "x", ( B * D ) ) )
Keep simplifying to get the final answer:
\qquad = \quad parseFormat( plus( "x^2", ( D + B ) + "x", ( B * D ) ) )