private bool RenameToc(string mergedToc) { try { if (File.Exists(mergedToc)) { File.SetAttributes(mergedToc, FileAttributes.Normal); File.Delete(mergedToc); } TocMerge tocMerge = _listTocMerges[0]; string singleToc = tocMerge.TocFile; singleToc = this.ExpandPath(singleToc); if (File.Exists(singleToc) == false) { return(false); } File.SetAttributes(singleToc, FileAttributes.Normal); File.Move(singleToc, mergedToc); return(true); } catch (Exception ex) { if (_logger != null) { _logger.WriteLine(ex); } return(false); } }
public TocMerge(TocMerge source) { _isIncluded = source._isIncluded; _isEncluded = source._isEncluded; _tocFile = source._tocFile; _groupId = source._groupId; _groupType = source._groupType; _isRooted = source._isRooted; }
public TocMerge Clone() { TocMerge item = new TocMerge(this); if (_tocFile != null) { item._tocFile = String.Copy(_tocFile); } if (_groupId != null) { item._groupId = String.Copy(_groupId); } return(item); }
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; } }
private bool MergeToc(string mergedToc, int itemCount) { XmlWriter xmlWriter = null; try { if (File.Exists(mergedToc)) { File.SetAttributes(mergedToc, FileAttributes.Normal); File.Delete(mergedToc); } XmlWriterSettings writerSettings = new XmlWriterSettings(); writerSettings.Indent = true; writerSettings.OmitXmlDeclaration = false; xmlWriter = XmlWriter.Create(mergedToc, writerSettings); xmlWriter.WriteStartElement("topics"); // Process the conceptual topics first.... for (int i = 0; i < itemCount; i++) { TocMerge tocMerge = _listTocMerges[i]; if (tocMerge.IsEncluded) { continue; } if (tocMerge.GroupType == BuildGroupType.Conceptual && tocMerge.IsIncluded) { string tocFile = tocMerge.TocFile; if (File.Exists(tocFile)) { AddTopics(xmlWriter, tocFile); } } } // Process the reference topics... for (int i = 0; i < itemCount; i++) { TocMerge tocMerge = _listTocMerges[i]; if (tocMerge.IsEncluded) { continue; } if (tocMerge.GroupType == BuildGroupType.Reference && tocMerge.IsIncluded) { string tocFile = tocMerge.TocFile; if (File.Exists(tocFile)) { AddTopics(xmlWriter, tocFile); } } } xmlWriter.WriteEndElement(); xmlWriter.Close(); xmlWriter = null; return(true); } catch (Exception ex) { if (xmlWriter != null) { xmlWriter.Close(); xmlWriter = null; } if (_logger != null) { _logger.WriteLine(ex); } return(false); } }