private void ProcessMarker(ConceptualGroupContext conceptualContext, BuildContext context) { IList <ConceptualMarkerTopic> markerTopics = conceptualContext.MarkerTopics; BuildTocContext tocContext = context.TocContext; ConceptualGroupTocInfo groupTocInfo = tocContext.Items[conceptualContext.Id] as ConceptualGroupTocInfo; if (groupTocInfo == null) { return; } for (int i = 0; i < markerTopics.Count; i++) { ConceptualMarkerTopic markerTopic = markerTopics[i]; if (conceptualContext.Exclude(markerTopic)) { this.RemoveMarker(groupTocInfo, markerTopic, context); } else { this.ProcessMarker(groupTocInfo, markerTopic, context); } } }
private void RemoveMarker(ConceptualGroupTocInfo groupTocInfo, ConceptualMarkerTopic markerTopic, BuildContext context) { BuildTopicTocInfo markerTocInfo = groupTocInfo.Find(markerTopic.TopicId, true); if (markerTocInfo == null) { return; } //groupTocInfo.Remove(markerTocInfo); BuildTopicTocInfo markerParent = markerTocInfo.Parent; if (markerParent != null) { markerParent.Remove(markerTocInfo); } else { groupTocInfo.Remove(markerTocInfo); } }
private void ProcessMarker(ConceptualGroupTocInfo groupTocInfo, ConceptualMarkerTopic markerTopic, BuildContext context) { BuildTopicTocInfo markerTocInfo = groupTocInfo.Find(markerTopic.TopicId, true); if (markerTocInfo == null) { return; } BuildTocContext tocContext = context.TocContext; BuildGroupTocInfo sourceTocInfo = null; switch (markerTopic.SourceType) { case BuildTocInfoType.Topic: BuildTopicTocInfo topicTocInfo = tocContext[markerTopic.SourceId]; if (topicTocInfo == null) { BuildTopicTocInfo markerParent = markerTocInfo.Parent; if (markerParent != null) { markerParent.Remove(markerTocInfo); } else { groupTocInfo.Remove(markerTocInfo); } } else { groupTocInfo.Replace(markerTocInfo, topicTocInfo); // Now, exclude the topic from being included in // the final merging operation... sourceTocInfo = tocContext.GroupOf(topicTocInfo.Name); if (sourceTocInfo != null) { if (sourceTocInfo.ItemType == BuildTocInfoType.Conceptual) { if (_pendindDelete == null) { _pendindDelete = new List <PendingDeletePair>(); } // For the conceptual group, we make room for // nested markers, and suspend the deletion... _pendindDelete.Add(new PendingDeletePair( topicTocInfo, groupTocInfo)); } else if (sourceTocInfo.ItemType == BuildTocInfoType.Reference) { sourceTocInfo.Remove(topicTocInfo); } } } break; case BuildTocInfoType.Reference: case BuildTocInfoType.Conceptual: sourceTocInfo = tocContext.Items[markerTopic.SourceId]; if (sourceTocInfo == null) { //groupTocInfo.Remove(markerTocInfo); BuildTopicTocInfo markerParent = markerTocInfo.Parent; if (markerParent != null) { markerParent.Remove(markerTocInfo); } else { groupTocInfo.Remove(markerTocInfo); } } else { groupTocInfo.Replace(markerTocInfo, sourceTocInfo); // Now, exclude the source group from being included in // the final merging operation... sourceTocInfo.Exclude = true; TocMerge sourceToc = _listTocMerges[markerTopic.SourceId]; if (sourceToc != null) { sourceToc.IsIncluded = false; } } break; } }