whole_func_string: function makeSnippet( doc, query ) {
  	// generate a regex of the form /[^a-zA-Z](term1|term2)/ for the query "term1 term2"
  	const termRegexMatchers = lunr.tokenizer( query ).map( term => escapeRegexString( term ) );
  	const termRegexString = '[^a-zA-Z](' + termRegexMatchers.join( '|' ) + ')';
  	const termRegex = new RegExp( termRegexString, 'gi' );
  	const snippets = [];
  	let match;
  
  	// find up to 4 matches in the document and extract snippets to be joined together
  	// TODO: detect when snippets overlap and merge them.
  	while ( ( match = termRegex.exec( doc.body ) ) !== null && snippets.length < 4 ) {
  		const matchStr = match[ 1 ],
  			index = match.index + 1,
  			before = doc.body.substring( index - SNIPPET_PAD_LENGTH, index ),
  			after = doc.body.substring(
  				index + matchStr.length,
  				index + matchStr.length + SNIPPET_PAD_LENGTH
  			);
  
  		snippets.push( before + '<mark>' + matchStr + '</mark>' + after );
  	}
  
  	if ( snippets.length ) {
  		return '…' + snippets.join( ' … ' ) + '…';
  	}
  
  	return defaultSnippet( doc );
  }
func_code_string: function makeSnippet( doc, query ) {
  	// generate a regex of the form /[^a-zA-Z](term1|term2)/ for the query "term1 term2"
  	const termRegexMatchers = lunr.tokenizer( query ).map( term => escapeRegexString( term ) );
  	const termRegexString = '[^a-zA-Z](' + termRegexMatchers.join( '|' ) + ')';
  	const termRegex = new RegExp( termRegexString, 'gi' );
  	const snippets = [];
  	let match;
  
  	// find up to 4 matches in the document and extract snippets to be joined together
  	// TODO: detect when snippets overlap and merge them.
  	while ( ( match = termRegex.exec( doc.body ) ) !== null && snippets.length < 4 ) {
  		const matchStr = match[ 1 ],
  			index = match.index + 1,
  			before = doc.body.substring( index - SNIPPET_PAD_LENGTH, index ),
  			after = doc.body.substring(
  				index + matchStr.length,
  				index + matchStr.length + SNIPPET_PAD_LENGTH
  			);
  
  		snippets.push( before + '<mark>' + matchStr + '</mark>' + after );
  	}
  
  	if ( snippets.length ) {
  		return '…' + snippets.join( ' … ' ) + '…';
  	}
  
  	return defaultSnippet( doc );
  }
func_documentation_string: Extract a snippet from a document, capturing text either side of
  any term(s) featured in a whitespace-delimited search query.
  We look for up to 3 matches in a document and concatenate them.
  @param {object} doc The document to extract the snippet from
  @param {object} query The query to be searched for
  @returns {string} A snippet from the document