function transformer( tree, file ) {
		debug( 'Processing virtual file...' );
		visit( tree, 'html', visitor );

		/**
		* Callback invoked upon finding a matching node. Inserts source URLs for image equations in Markdown equation elements.
		*
		* @private
		* @param {Node} node - reference node
		* @throws {Error} equation elements must have valid labels
		*/
		function visitor( node ) {
			var fpath;
			var rpath;
			var label;
			var slug;
			var hash;
			var url;
			var cmd;
			var out;

			if ( DIV_EQN.test( node.value ) === true ) {
				label = LABEL.exec( node.value );
				if ( label === null ) {
					debug( 'Invalid node: %s', node.value );
					throw new Error( format( 'invalid node. Equation element must have a valid label. Node: `%s`.', node.value ) );
				}
				label = label[ 1 ];
				debug( 'Equation label: %s', label );

				debug( 'File directory: %s', file.dirname );

				// Get absolute file path of current SVG (note: we assume that the `label` attribute matches the eqn filename):
				fpath = join( opts.dir, opts.prefix+label+'.svg' );
				debug( 'SVG filename: %s', fpath );

				fpath = resolve( file.dirname, fpath );
				debug( 'Absolute filepath: %s', fpath );

				// Get file path relative to Git repository:
				rpath = fpath.replace( GIT.dir + PATH_SEP, '' );
				debug( 'Relative filepath: %s', rpath );

				// Get the most recent Git hash affecting the file:
				cmd = 'git rev-list -1 '+GIT.branch+' '+fpath;
				out = exec( cmd, {
					'cwd': GIT.dir
				});
				out = trim( out.toString() );
				hash = out.match( /(.+)/ )[ 1 ];
				debug( 'Hash: %s', hash );

				// Generate the file path slug:
				slug = GIT.slug+'/'+hash;
				debug( 'Hash slug: %s', slug );

				// Retrieve source URL:
				url = jsdelivr({
					'slug': slug,
					'file': rpath
				});
				debug( 'Source URL: %s', url );

				// Replace `src` attribute in `<img>` tag:
				node.value = node.value.replace( IMG_SOURCE, '$1'+url+'$3' );
			}
		}
	}
Transforms a Markdown abstract syntax tree (AST).

@private
@param {Node} tree - root AST node
@param {File} file - virtual file