aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Data/Intermediate.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/WixToolset.Data/Intermediate.cs')
-rw-r--r--src/WixToolset.Data/Intermediate.cs35
1 files changed, 33 insertions, 2 deletions
diff --git a/src/WixToolset.Data/Intermediate.cs b/src/WixToolset.Data/Intermediate.cs
index 7fc7d6c3..d1c38cf0 100644
--- a/src/WixToolset.Data/Intermediate.cs
+++ b/src/WixToolset.Data/Intermediate.cs
@@ -29,9 +29,14 @@ namespace WixToolset.Data
29 this.Sections = new List<IntermediateSection>(); 29 this.Sections = new List<IntermediateSection>();
30 } 30 }
31 31
32 public Intermediate(string id, IEnumerable<IntermediateSection> sections, IDictionary<string, Localization> localizationsByCulture) 32 public Intermediate(string id, IEnumerable<IntermediateSection> sections, IDictionary<string, Localization> localizationsByCulture) : this(id, level: null, sections, localizationsByCulture)
33 {
34 }
35
36 public Intermediate(string id, string level, IEnumerable<IntermediateSection> sections, IDictionary<string, Localization> localizationsByCulture)
33 { 37 {
34 this.Id = id; 38 this.Id = id;
39 this.Level = level;
35 this.localizationsByCulture = (localizationsByCulture != null) ? new Dictionary<string, Localization>(localizationsByCulture, StringComparer.OrdinalIgnoreCase) : new Dictionary<string, Localization>(StringComparer.OrdinalIgnoreCase); 40 this.localizationsByCulture = (localizationsByCulture != null) ? new Dictionary<string, Localization>(localizationsByCulture, StringComparer.OrdinalIgnoreCase) : new Dictionary<string, Localization>(StringComparer.OrdinalIgnoreCase);
36 this.Sections = (sections != null) ? new List<IntermediateSection>(sections) : new List<IntermediateSection>(); 41 this.Sections = (sections != null) ? new List<IntermediateSection>(sections) : new List<IntermediateSection>();
37 } 42 }
@@ -42,6 +47,11 @@ namespace WixToolset.Data
42 public string Id { get; } 47 public string Id { get; }
43 48
44 /// <summary> 49 /// <summary>
50 /// Get the id for the intermediate.
51 /// </summary>
52 public string Level { get; private set; }
53
54 /// <summary>
45 /// Get the localizations contained in this intermediate. 55 /// Get the localizations contained in this intermediate.
46 /// </summary> 56 /// </summary>
47 public IEnumerable<Localization> Localizations => this.localizationsByCulture.Values; 57 public IEnumerable<Localization> Localizations => this.localizationsByCulture.Values;
@@ -182,6 +192,25 @@ namespace WixToolset.Data
182 } 192 }
183 193
184 /// <summary> 194 /// <summary>
195 /// Updates the intermediate level to the specified level.
196 /// </summary>
197 /// <param name="level">Intermediate level.</param>
198 public void UpdateLevel(string level)
199 {
200 this.Level = String.IsNullOrEmpty(this.Level) ? level : String.Concat(this.Level, ";", level);
201 }
202
203 /// <summary>
204 /// Returns whether a specifed intermediate level has been set for this intermediate.
205 /// </summary>
206 /// <param name="level">Intermediate level.</param>
207 /// <returns>True if the specifed intermediate level has been set for this intermediate.</returns>
208 public bool HasLevel(string level)
209 {
210 return this.Level?.Contains(level) == true;
211 }
212
213 /// <summary>
185 /// Saves an intermediate to a path on disk. 214 /// Saves an intermediate to a path on disk.
186 /// </summary> 215 /// </summary>
187 /// <param name="path">Path to save intermediate file to disk.</param> 216 /// <param name="path">Path to save intermediate file to disk.</param>
@@ -277,6 +306,7 @@ namespace WixToolset.Data
277 private static Intermediate FinalizeLoad(JsonObject json, Uri baseUri, ITupleDefinitionCreator creator) 306 private static Intermediate FinalizeLoad(JsonObject json, Uri baseUri, ITupleDefinitionCreator creator)
278 { 307 {
279 var id = json.GetValueOrDefault<string>("id"); 308 var id = json.GetValueOrDefault<string>("id");
309 var level = json.GetValueOrDefault<string>("level");
280 310
281 var sections = new List<IntermediateSection>(); 311 var sections = new List<IntermediateSection>();
282 312
@@ -296,7 +326,7 @@ namespace WixToolset.Data
296 localizations.Add(localization.Culture, localization); 326 localizations.Add(localization.Culture, localization);
297 } 327 }
298 328
299 return new Intermediate(id, sections, localizations); 329 return new Intermediate(id, level, sections, localizations);
300 } 330 }
301 331
302 private void SaveEmbedFiles(WixOutput wixout) 332 private void SaveEmbedFiles(WixOutput wixout)
@@ -351,6 +381,7 @@ namespace WixToolset.Data
351 var jsonObject = new JsonObject 381 var jsonObject = new JsonObject
352 { 382 {
353 { "id", this.Id }, 383 { "id", this.Id },
384 { "level", this.Level },
354 { "version", Intermediate.CurrentVersion.ToString() } 385 { "version", Intermediate.CurrentVersion.ToString() }
355 }; 386 };
356 387