server/devdocs/index.js
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 );
}
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 );
}
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 '…' + s ippets.j o in(  ' … ' ) + ' ' } return defaultSnippet ( doc ) ; }
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
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 .