/* * Megtaláljuk R_* kezdését, illetve a végét /R_*-ot. * Lemásoljuk annyiszor, ahány adat van a listába * Majd végig iterálunk a tag-eken és alkalmazzuk a SwapDataInSubList-et */ public void MergeData(WordprocessingDocument doc, BaseData baseData) { RecursiveDatasHolder recDatas = baseData as RecursiveDatasHolder; List <Run> runs = GetRuns(doc); //Kitöröljük azokat a részeket, amikhez nem tartozik adat az adatfile-ból DeletePartsWithNoData(ref runs, ref recDatas); //Minden megmaradó Recursive részhez kigyüjtjük a kezdő és a záró indexeket Dictionary <string, Tuple <int, int> > recLocations = GetStartAndEndIndexes(runs); //A kezdő és záró indexekkel (recLocations) copyzzuk annyiszor, ahányszor előfordul az adat CloneAllRecursiveFields(runs, recLocations, recDatas); //Kigyüjtjük a FieldCode-okat és elkezdjük cserélgetni az adatokat List <FieldCode> fieldCodes = doc.MainDocumentPart.RootElement.Descendants <FieldCode>().ToList(); List <FieldCode> newFc = FilterFieldCodes(fieldCodes); Dictionary <string, List <string> > datasInDict = TransformRecDatasToDict(recDatas); WordDataSwapper swapper = new WordDataSwapper(); foreach (var fc in newFc) { swapper.SwapFieldCode(fc, datasInDict); } runs = GetRuns(doc); foreach (var run in runs) { DeleteFlagTags(run); } }
public WordGeneratorField() { dataSwapper = new WordDataSwapper(); }