text: export default function getLocator ( source ) {
  	let originalLines = source.split( '\n' );
  
  	let start = 0;
  	let lineRanges = originalLines.map( ( line, i ) => {
  		const end = start + line.length + 1;
  		const range = { start, end, line: i };
  
  		start = end;
  		return range;
  	});
  
  	let i = 0;
  
  	function rangeContains ( range, index ) {
  		return range.start <= index && index < range.end;
  	}
  
  	function getLocation ( range, index ) {
  		return { line: range.line, column: index - range.start };
  	}
  
  	return function locate ( index ) {
  		let range = lineRanges[i];
  
  		const d = index >= range.end ? 1 : -1;
  
  		while ( range ) {
  			if ( rangeContains( range, index ) ) return getLocation( range, index );
  
  			i += d;
  			range = lineRanges[i];
  		}
  	};
  }
  