code: function (elements, options, done) {
  
      // Options & defaults
      options = options || {};
  
      // Should we run the scripts blocks found in the SVG
      // 'always' - Run them every time
      // 'once' - Only run scripts once for each SVG
      // [false|'never'] - Ignore scripts
      var evalScripts = options.evalScripts || 'always';
  
      // Location of fallback pngs, if desired
      var pngFallback = options.pngFallback || false;
  
      // Callback to run during each SVG injection, returning the SVG injected
      var eachCallback = options.each;
  
      // Do the injection...
      if (elements.length !== undefined) {
        var elementsLoaded = 0;
        forEach.call(elements, function (element) {
          injectElement(element, evalScripts, pngFallback, function (svg) {
            if (eachCallback && typeof eachCallback === 'function') eachCallback(svg);
            if (done && elements.length === ++elementsLoaded) done(elementsLoaded);
          });
        });
      }
      else {
        if (elements) {
          injectElement(elements, evalScripts, pngFallback, function (svg) {
            if (eachCallback && typeof eachCallback === 'function') eachCallback(svg);
            if (done) done(1);
            elements = null;
          });
        }
        else {
          if (done) done(0);
        }
      }
    }
docs: SVGInjector
  
  Replace the given elements with their full inline SVG DOM elements.
  
  :NOTE: We are using get/setAttribute with SVG because the SVG DOM spec differs from HTML DOM and
  can return other unexpected object types when trying to directly access svg properties.
  ex: "className" returns a SVGAnimatedString with the class value found in the "baseVal" property,
  instead of simple string like with HTML Elements.
  
  @param {mixes} Array of or single DOM element
  @param {object} options
  @param {function} callback
  @return {object} Instance of SVGInjector