client/lib/media-serialization/strategies/dom.js
function parseImage( node, _parsed ) {
	_parsed.type = MediaTypes.IMAGE;
	_parsed.media.URL = node.getAttribute( 'src' );
	_parsed.media.alt = node.getAttribute( 'alt' );
	// consider data-istransient a boolean attribute https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#boolean-attribute
	// will only be false if it doesn't exist
	_parsed.media.transient = node.hasAttribute( 'data-istransient' );

	// Parse dimensions
	[ 'width', 'height' ].forEach( dimension => {
		let natural = 'natural' + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ),
			value = node.getAttribute( dimension ) || node[ natural ] || node[ dimension ];

		if ( value && isFinite( value ) ) {
			_parsed.media[ dimension ] = parseInt( value, 10 );
		}
	} );

	// Parse size from class name
	if ( REGEXP_IMG_CLASS_SIZE.test( node.className ) ) {
		_parsed.appearance.size = node.className.match( REGEXP_IMG_CLASS_SIZE )[ 1 ];
	}

	// Parse alignment from class name
	if ( REGEXP_IMG_CLASS_ALIGN.test( node.className ) ) {
		_parsed.appearance.align = node.className.match( REGEXP_IMG_CLASS_ALIGN )[ 1 ];
	}

	// Parse ID from class name
	if ( REGEXP_IMG_CLASS_ID.test( node.className ) ) {
		_parsed.media.ID = node.className.match( REGEXP_IMG_CLASS_ID )[ 1 ];

		if ( isFinite( _parsed.media.ID ) ) {
			_parsed.media.ID = parseInt( _parsed.media.ID, 10 );
		}
	}

	return _parsed;
}
function parseImage( node, _parsed ) {
	_parsed.type = MediaTypes.IMAGE;
	_parsed.media.URL = node.getAttribute( 'src' );
	_parsed.media.alt = node.getAttribute( 'alt' );
	// consider data-istransient a boolean attribute https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#boolean-attribute
	// will only be false if it doesn't exist
	_parsed.media.transient = node.hasAttribute( 'data-istransient' );

	// Parse dimensions
	[ 'width', 'height' ].forEach( dimension => {
		let natural = 'natural' + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ),
			value = node.getAttribute( dimension ) || node[ natural ] || node[ dimension ];

		if ( value && isFinite( value ) ) {
			_parsed.media[ dimension ] = parseInt( value, 10 );
		}
	} );

	// Parse size from class name
	if ( REGEXP_IMG_CLASS_SIZE.test( node.className ) ) {
		_parsed.appearance.size = node.className.match( REGEXP_IMG_CLASS_SIZE )[ 1 ];
	}

	// Parse alignment from class name
	if ( REGEXP_IMG_CLASS_ALIGN.test( node.className ) ) {
		_parsed.appearance.align = node.className.match( REGEXP_IMG_CLASS_ALIGN )[ 1 ];
	}

	// Parse ID from class name
	if ( REGEXP_IMG_CLASS_ID.test( node.className ) ) {
		_parsed.media.ID = node.className.match( REGEXP_IMG_CLASS_ID )[ 1 ];

		if ( isFinite( _parsed.media.ID ) ) {
			_parsed.media.ID = parseInt( _parsed.media.ID, 10 );
		}
	}

	return _parsed;
}
function parseImage ( node , _parsed ) { _parsed . type = MediaTypes . IMAGE ; _parsed . media . URL = node . getAttribute ( 'src' ) ; _parsed . media . alt = node . getAttribute ( 'alt' ) ; // consider data-istransient a boolean attribute https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#boolean-attribute // will only be false if it doesn't exist _parsed . media . transient = node . hasAttribute ( 'data-istransient' ) ; // Parse dimensions [ 'width' , 'height' ] . forEach ( dimension => { let natural = 'natural' + dimension [ 0 ] . toUpperCase ( ) + dimension . slice ( 1 ) , value = node . getAttribute ( dimension ) || node [ natural ] || node [ dimension ] ; if ( value && isFinite ( value ) ) { _parsed . media [ dimension ] = parseInt ( value , 10 ) ; } } ) ; // Parse size from class name if ( REGEXP_IMG_CLASS_SIZE . test ( node . className ) ) { _parsed . appearance . size = node . className . match ( REGEXP_IMG_CLASS_SIZE ) [ 1 ] ; } // Parse alignment from class name if ( REGEXP_IMG_CLASS_ALIGN . test ( node . className ) ) { _parsed . appearance . align = node . className . match ( REGEXP_IMG_CLASS_ALIGN ) [ 1 ] ; } // Parse ID from class name if ( REGEXP_IMG_CLASS_ID . test ( node . className ) ) { _parsed . media . ID = node . className . match ( REGEXP_IMG_CLASS_ID ) [ 1 ] ; if ( isFinite ( _parsed . media . ID ) ) { _parsed . media . ID = parseInt ( _parsed . media . ID , 10 ) ; } } return _parsed ; }
Given an <img /> HTMLElement, returns an object of parsed attributes.

@param  {HTMLElement} node    <img /> HTMLElement
@param  {Object}      _parsed In recursion, the known values
@return {Object}              Object of all detected values
Given an <img / > HTMLElement returns an object of parsed attributes .