SIL.CoreImpl.FwLdmlAdaptor.ReadTopLevelSpecialElement C# (CSharp) Method

ReadTopLevelSpecialElement() protected method

Reads the top level special element.
protected ReadTopLevelSpecialElement ( XmlReader reader, WritingSystemDefinition ws ) : void
reader XmlReader The reader.
ws WritingSystemDefinition The ws.
return void
		protected override void ReadTopLevelSpecialElement(XmlReader reader, WritingSystemDefinition ws)
		{
			if (reader.GetAttribute("xmlns:fw") != null)
			{
				reader.ReadStartElement("special");
				var fwWs = (PalasoWritingSystem)ws;
				fwWs.DefaultFontFeatures = GetSpecialValue(reader, "fw", "defaultFontFeatures");
				bool graphiteEnabled;
				if (bool.TryParse(GetSpecialValue(reader, "fw", "graphiteEnabled"), out graphiteEnabled))
					fwWs.IsGraphiteEnabled = graphiteEnabled;
				fwWs.LegacyMapping = GetSpecialValue(reader, "fw", "legacyMapping");
				fwWs.MatchedPairs = GetSpecialValue(reader, "fw", "matchedPairs");
				fwWs.PunctuationPatterns = GetSpecialValue(reader, "fw", "punctuationPatterns");
				fwWs.QuotationMarks = GetSpecialValue(reader, "fw", "quotationMarks");
				fwWs.RegionName = GetSpecialValue(reader, "fw", "regionName");
				fwWs.ScriptName = GetSpecialValue(reader, "fw", "scriptName");
				fwWs.ValidChars = GetSpecialValue(reader, "fw", "validChars");
				fwWs.VariantName = GetSpecialValue(reader, "fw", "variantName");
				if (fwWs.VariantName == null)
				{
					var variant = fwWs.VariantSubtag;
					if (variant != null)
					{
						var stdVariant = LangTagUtils.GetVariantSubtag(variant.Code);
						if (stdVariant.Name != null)
							fwWs.VariantName = stdVariant.Name;
						else
						{
							var variantName = variant.ToString();
							if (variantName.StartsWith("x-", StringComparison.OrdinalIgnoreCase))
								variantName = variantName.Substring(2);
							fwWs.VariantName = variantName;
						}
					}
				}
				if (fwWs.RegionName == null)
				{
					var region = fwWs.RegionSubtag;
					if (region != null)
					{
						var stdRegion = LangTagUtils.GetRegionSubtag(region.Code);
						if (stdRegion.Name != null)
							fwWs.RegionName = stdRegion.Name;
						else
						{
							var regionName = region.ToString();
							if (regionName.StartsWith("x-", StringComparison.OrdinalIgnoreCase))
								regionName = regionName.Substring(2);
							fwWs.RegionName = regionName;
						}
					}
				}
				if (fwWs.ScriptName == null)
				{
					var script = fwWs.ScriptSubtag;
					if (script != null)
					{
						var stdScript = LangTagUtils.GetScriptSubtag(script.Code);
						if (stdScript.Name != null)
							fwWs.ScriptName = stdScript.Name;
						else
						{
							var scriptName = script.ToString();
							if (scriptName.StartsWith("x-", StringComparison.OrdinalIgnoreCase))
								scriptName = scriptName.Substring(2);
							fwWs.ScriptName = scriptName;
						}
					}
				}
				var lcidString = GetSpecialValue(reader, "fw", "windowsLCID");
				((ILegacyWritingSystemDefinition)fwWs).WindowsLcid = lcidString;

				ReadSpecialEndElement(reader);
			}

			else
			{
				base.ReadTopLevelSpecialElement(reader, ws);
			}
		}