…g in the d3 submdoule
Replacing the selection.raphael method with a smarter append functionality will reduce the amount of changes needed to port a D3 document to a R2D3 compatible document.
Raphael doesnt' natively support the svg line element so I used the Raphael path element to imitate it. A Raphael.fn.line method was added to Raphael which creates a line of 0 length using the path element, The attributes of the line (x1,y1,x2,y2) are then stored in the elements data for later use. Custom attributes were added for the line properties such that when they are requested, they access the values stored in the elements data for fast, easy retrieval.
D3's selection.text API uses the textContent property to get/set text content for elements. Raphael elements don't have a textContent attribute, so I re-implemented the native d3 selection.text API to handle raphael elements as a special case to go through the Raphael API's Closes #5
Check to see if Raphael is defined before attempting to add element and canvas extensions. This will enable the modified d3 implementation to run the original d3 tests as well as enable d3 to work client side without Raphael, if it isn't needed.