diff options
| author | Rob Mensching <rob@firegiant.com> | 2017-11-01 10:56:09 -0700 |
|---|---|---|
| committer | Rob Mensching <rob@firegiant.com> | 2017-11-01 10:56:09 -0700 |
| commit | 69b15d96cebdbb7201b1849b4f62786633d70b8d (patch) | |
| tree | 4b65de8679e4b4ab81b69edcccbac1ae9f55a16d /src/WixToolset.Data/Localization.cs | |
| parent | a8656a87887d6cb2c54f4bbeacee37f7074f1032 (diff) | |
| download | wix-69b15d96cebdbb7201b1849b4f62786633d70b8d.tar.gz wix-69b15d96cebdbb7201b1849b4f62786633d70b8d.tar.bz2 wix-69b15d96cebdbb7201b1849b4f62786633d70b8d.zip | |
Introduce WiX Intermediate Representation
Diffstat (limited to 'src/WixToolset.Data/Localization.cs')
| -rw-r--r-- | src/WixToolset.Data/Localization.cs | 42 |
1 files changed, 14 insertions, 28 deletions
diff --git a/src/WixToolset.Data/Localization.cs b/src/WixToolset.Data/Localization.cs index 658ce14a..a5e2ba14 100644 --- a/src/WixToolset.Data/Localization.cs +++ b/src/WixToolset.Data/Localization.cs | |||
| @@ -3,17 +3,10 @@ | |||
| 3 | namespace WixToolset.Data | 3 | namespace WixToolset.Data |
| 4 | { | 4 | { |
| 5 | using System; | 5 | using System; |
| 6 | using System.Collections; | ||
| 7 | using System.Collections.Generic; | 6 | using System.Collections.Generic; |
| 8 | using System.Diagnostics; | 7 | using System.Diagnostics; |
| 9 | using System.Diagnostics.CodeAnalysis; | ||
| 10 | using System.Globalization; | 8 | using System.Globalization; |
| 11 | using System.IO; | ||
| 12 | using System.Linq; | ||
| 13 | using System.Reflection; | ||
| 14 | using System.Xml; | 9 | using System.Xml; |
| 15 | using System.Xml.Linq; | ||
| 16 | using System.Xml.Schema; | ||
| 17 | using WixToolset.Data.Msi; | 10 | using WixToolset.Data.Msi; |
| 18 | using WixToolset.Data.Rows; | 11 | using WixToolset.Data.Rows; |
| 19 | 12 | ||
| @@ -24,17 +17,17 @@ namespace WixToolset.Data | |||
| 24 | { | 17 | { |
| 25 | private static string XmlElementName = "localization"; | 18 | private static string XmlElementName = "localization"; |
| 26 | 19 | ||
| 27 | private Dictionary<string, WixVariableRow> variables = new Dictionary<string, WixVariableRow>(); | 20 | private Dictionary<string, BindVariable> variables = new Dictionary<string, BindVariable>(); |
| 28 | private Dictionary<string, LocalizedControl> localizedControls = new Dictionary<string, LocalizedControl>(); | 21 | private Dictionary<string, LocalizedControl> localizedControls = new Dictionary<string, LocalizedControl>(); |
| 29 | 22 | ||
| 30 | /// <summary> | 23 | /// <summary> |
| 31 | /// Instantiates a new localization object. | 24 | /// Instantiates a new localization object. |
| 32 | /// </summary> | 25 | /// </summary> |
| 33 | public Localization(int codepage, string culture, IDictionary<string, WixVariableRow> variables, IDictionary<string, LocalizedControl> localizedControls) | 26 | public Localization(int codepage, string culture, IDictionary<string, BindVariable> variables, IDictionary<string, LocalizedControl> localizedControls) |
| 34 | { | 27 | { |
| 35 | this.Codepage = codepage; | 28 | this.Codepage = codepage; |
| 36 | this.Culture = String.IsNullOrEmpty(culture) ? String.Empty : culture.ToLowerInvariant(); | 29 | this.Culture = String.IsNullOrEmpty(culture) ? String.Empty : culture.ToLowerInvariant(); |
| 37 | this.variables = new Dictionary<string, WixVariableRow>(variables); | 30 | this.variables = new Dictionary<string, BindVariable>(variables); |
| 38 | this.localizedControls = new Dictionary<string, LocalizedControl>(localizedControls); | 31 | this.localizedControls = new Dictionary<string, LocalizedControl>(localizedControls); |
| 39 | } | 32 | } |
| 40 | 33 | ||
| @@ -54,19 +47,13 @@ namespace WixToolset.Data | |||
| 54 | /// Gets the variables. | 47 | /// Gets the variables. |
| 55 | /// </summary> | 48 | /// </summary> |
| 56 | /// <value>The variables.</value> | 49 | /// <value>The variables.</value> |
| 57 | public ICollection<WixVariableRow> Variables | 50 | public ICollection<BindVariable> Variables => this.variables.Values; |
| 58 | { | ||
| 59 | get { return this.variables.Values; } | ||
| 60 | } | ||
| 61 | 51 | ||
| 62 | /// <summary> | 52 | /// <summary> |
| 63 | /// Gets the localized controls. | 53 | /// Gets the localized controls. |
| 64 | /// </summary> | 54 | /// </summary> |
| 65 | /// <value>The localized controls.</value> | 55 | /// <value>The localized controls.</value> |
| 66 | public ICollection<KeyValuePair<string, LocalizedControl>> LocalizedControls | 56 | public ICollection<KeyValuePair<string, LocalizedControl>> LocalizedControls => this.localizedControls; |
| 67 | { | ||
| 68 | get { return this.localizedControls; } | ||
| 69 | } | ||
| 70 | 57 | ||
| 71 | /// <summary> | 58 | /// <summary> |
| 72 | /// Merge the information from another localization object into this one. | 59 | /// Merge the information from another localization object into this one. |
| @@ -74,10 +61,9 @@ namespace WixToolset.Data | |||
| 74 | /// <param name="localization">The localization object to be merged into this one.</param> | 61 | /// <param name="localization">The localization object to be merged into this one.</param> |
| 75 | public void Merge(Localization localization) | 62 | public void Merge(Localization localization) |
| 76 | { | 63 | { |
| 77 | foreach (WixVariableRow wixVariableRow in localization.Variables) | 64 | foreach (BindVariable wixVariableRow in localization.Variables) |
| 78 | { | 65 | { |
| 79 | WixVariableRow existingWixVariableRow; | 66 | if (!this.variables.TryGetValue(wixVariableRow.Id, out BindVariable existingWixVariableRow) || (existingWixVariableRow.Overridable && !wixVariableRow.Overridable)) |
| 80 | if (!this.variables.TryGetValue(wixVariableRow.Id, out existingWixVariableRow) || (existingWixVariableRow.Overridable && !wixVariableRow.Overridable)) | ||
| 81 | { | 67 | { |
| 82 | variables[wixVariableRow.Id] = wixVariableRow; | 68 | variables[wixVariableRow.Id] = wixVariableRow; |
| 83 | } | 69 | } |
| @@ -94,7 +80,7 @@ namespace WixToolset.Data | |||
| 94 | /// <param name="reader">XmlReader where the intermediate is persisted.</param> | 80 | /// <param name="reader">XmlReader where the intermediate is persisted.</param> |
| 95 | /// <param name="tableDefinitions">Collection containing TableDefinitions to use when loading the localization file.</param> | 81 | /// <param name="tableDefinitions">Collection containing TableDefinitions to use when loading the localization file.</param> |
| 96 | /// <returns>Returns the loaded localization.</returns> | 82 | /// <returns>Returns the loaded localization.</returns> |
| 97 | internal static Localization Read(XmlReader reader, TableDefinitionCollection tableDefinitions) | 83 | internal static Localization Read(XmlReader reader) |
| 98 | { | 84 | { |
| 99 | Debug.Assert("localization" == reader.LocalName); | 85 | Debug.Assert("localization" == reader.LocalName); |
| 100 | 86 | ||
| @@ -115,8 +101,7 @@ namespace WixToolset.Data | |||
| 115 | } | 101 | } |
| 116 | } | 102 | } |
| 117 | 103 | ||
| 118 | TableDefinition wixVariableTable = tableDefinitions["WixVariable"]; | 104 | Dictionary<string, BindVariable> variables = new Dictionary<string, BindVariable>(); |
| 119 | Dictionary<string, WixVariableRow> variables = new Dictionary<string, WixVariableRow>(); | ||
| 120 | Dictionary<string, LocalizedControl> localizedControls = new Dictionary<string, LocalizedControl>(); | 105 | Dictionary<string, LocalizedControl> localizedControls = new Dictionary<string, LocalizedControl>(); |
| 121 | 106 | ||
| 122 | if (!empty) | 107 | if (!empty) |
| @@ -131,7 +116,7 @@ namespace WixToolset.Data | |||
| 131 | switch (reader.LocalName) | 116 | switch (reader.LocalName) |
| 132 | { | 117 | { |
| 133 | case "string": | 118 | case "string": |
| 134 | WixVariableRow row = Localization.ReadString(reader, wixVariableTable); | 119 | BindVariable row = Localization.ReadString(reader); |
| 135 | variables.Add(row.Id, row); | 120 | variables.Add(row.Id, row); |
| 136 | break; | 121 | break; |
| 137 | 122 | ||
| @@ -177,7 +162,7 @@ namespace WixToolset.Data | |||
| 177 | writer.WriteAttributeString("culture", this.Culture); | 162 | writer.WriteAttributeString("culture", this.Culture); |
| 178 | } | 163 | } |
| 179 | 164 | ||
| 180 | foreach (WixVariableRow wixVariableRow in this.variables.Values) | 165 | foreach (BindVariable wixVariableRow in this.variables.Values) |
| 181 | { | 166 | { |
| 182 | writer.WriteStartElement("string", Library.XmlNamespaceUri); | 167 | writer.WriteStartElement("string", Library.XmlNamespaceUri); |
| 183 | 168 | ||
| @@ -265,7 +250,7 @@ namespace WixToolset.Data | |||
| 265 | /// <param name="reader">XmlReader where the intermediate is persisted.</param> | 250 | /// <param name="reader">XmlReader where the intermediate is persisted.</param> |
| 266 | /// <param name="tableDefinitions">Collection containing TableDefinitions to use when loading the localization file.</param> | 251 | /// <param name="tableDefinitions">Collection containing TableDefinitions to use when loading the localization file.</param> |
| 267 | /// <returns>Returns the loaded localization.</returns> | 252 | /// <returns>Returns the loaded localization.</returns> |
| 268 | private static WixVariableRow ReadString(XmlReader reader, TableDefinition wixVariableTable) | 253 | private static BindVariable ReadString(XmlReader reader) |
| 269 | { | 254 | { |
| 270 | Debug.Assert("string" == reader.LocalName); | 255 | Debug.Assert("string" == reader.LocalName); |
| 271 | 256 | ||
| @@ -302,7 +287,8 @@ namespace WixToolset.Data | |||
| 302 | } | 287 | } |
| 303 | } | 288 | } |
| 304 | 289 | ||
| 305 | WixVariableRow wixVariableRow = new WixVariableRow(SourceLineNumber.CreateFromUri(reader.BaseURI), wixVariableTable); | 290 | BindVariable wixVariableRow = new BindVariable(); |
| 291 | wixVariableRow.SourceLineNumbers = SourceLineNumber.CreateFromUri(reader.BaseURI); | ||
| 306 | wixVariableRow.Id = id; | 292 | wixVariableRow.Id = id; |
| 307 | wixVariableRow.Overridable = overridable; | 293 | wixVariableRow.Overridable = overridable; |
| 308 | wixVariableRow.Value = value; | 294 | wixVariableRow.Value = value; |
