func (*OpenControlGitBook) buildStandardsSummary(standardKey, controlKey string, standard common.Standard,
	oldFamilyFileName fileName, familySummaryMap map[string]string) (string, fileName, map[string]string) {
	summary := ""
	// format the filename
	controlLink := replaceParentheses(createFileName(standardKey, controlKey).withExt(".md"))

	// get the control.
	control := standard.GetControl(controlKey)

	// get the control family and name
	controlFamily := control.GetFamily()
	controlName := control.GetName()

	// concatenate the standard and control family to create a filename.
	newFamilyFileName := createFileName(standardKey, controlFamily)

	// create control family headings if we are finally on a new heading file.
	if oldFamilyFileName.name != newFamilyFileName.name {
		familySummaryMap[newFamilyFileName.name] = createSubHeading(newFamilyFileName.name)
		summary += exportLink(controlFamily,
			filepath.Join("standards", newFamilyFileName.withExt(".md")))
		oldFamilyFileName = newFamilyFileName
	}

	// Add the control name as a link under the control family header.
	controlFullName := fmt.Sprintf("%s: %s", controlKey, controlName)
	summary += "\t" + exportLink(controlFullName, filepath.Join("standards", controlLink))

	// add the link to the summary page for that particular standard-control combination
	// which will be created later on.
	familySummaryMap[newFamilyFileName.name] += exportLink(controlFullName, controlLink)
	return summary, oldFamilyFileName, familySummaryMap
}
// add adds a standard to the standards mapping
func (s *standardsMap) add(standard common.Standard) {
	s.Lock()
	s.mapping[standard.GetName()] = standard
	s.Unlock()
}