public static ILocalizationModel LocalizationFromJObject(JObject source) { if (source == null) { return(null); } LocalizationModel model = new LocalizationModel(); model.Author = source.ToString(nameof(model.Author)); model.Name = source.ToString(nameof(model.Name)); model.Description = source.ToString(nameof(model.Description)); model.Identity = source.ToString(nameof(model.Identity)); // symbol description localizations model.SymbolDescriptions = source.ToStringDictionary(StringComparer.OrdinalIgnoreCase, "symbols"); // post action localizations Dictionary <Guid, IPostActionLocalizationModel> postActions = new Dictionary <Guid, IPostActionLocalizationModel>(); foreach (JObject item in source.Items <JObject>(nameof(model.PostActions))) { IPostActionLocalizationModel postActionModel = PostActionLocalizationModel.FromJObject(item); postActions.Add(postActionModel.ActionId, postActionModel); } model.PostActions = postActions; // regular file localizations IReadOnlyDictionary <string, JToken> fileLocalizationJson = source.ToJTokenDictionary(StringComparer.OrdinalIgnoreCase, "localizations"); List <FileLocalizationModel> fileLocalizations = new List <FileLocalizationModel>(); if (fileLocalizationJson != null) { foreach (KeyValuePair <string, JToken> fileLocInfo in fileLocalizationJson) { string fileName = fileLocInfo.Key; JToken localizationJson = fileLocInfo.Value; FileLocalizationModel fileModel = FileLocalizationModel.FromJObject(fileName, (JObject)localizationJson); fileLocalizations.Add(fileModel); } } model.FileLocalizations = fileLocalizations; return(model); }
public static ILocalizationModel LocalizationFromJObject(JObject source) { if (source == null) { return(null); } LocalizationModel locModel = new LocalizationModel() { Author = source.ToString(nameof(locModel.Author)), Name = source.ToString(nameof(locModel.Name)), Description = source.ToString(nameof(locModel.Description)), Identity = source.ToString(nameof(locModel.Identity)), }; // symbol description & choice localizations Dictionary <string, IParameterSymbolLocalizationModel> parameterLocalizations = new Dictionary <string, IParameterSymbolLocalizationModel>(); IReadOnlyDictionary <string, JToken> symbolInfoList = source.ToJTokenDictionary(StringComparer.OrdinalIgnoreCase, "symbols"); foreach (KeyValuePair <string, JToken> symbolDetail in symbolInfoList) { string symbol = symbolDetail.Key; string description = symbolDetail.Value.ToString("description"); Dictionary <string, string> choicesAndDescriptionsForSymbol = new Dictionary <string, string>(); foreach (JObject choiceObject in symbolDetail.Value.Items <JObject>("choices")) { string choice = choiceObject.ToString("choice"); string choiceDescription = choiceObject.ToString("description"); if (!string.IsNullOrEmpty(choice) && !string.IsNullOrEmpty(choiceDescription)) { choicesAndDescriptionsForSymbol.Add(choice, choiceDescription); } } IParameterSymbolLocalizationModel symbolLocalization = new ParameterSymbolLocalizationModel(symbol, description, choicesAndDescriptionsForSymbol); parameterLocalizations.Add(symbol, symbolLocalization); } locModel.ParameterSymbols = parameterLocalizations; // post action localizations Dictionary <Guid, IPostActionLocalizationModel> postActions = new Dictionary <Guid, IPostActionLocalizationModel>(); foreach (JObject item in source.Items <JObject>(nameof(locModel.PostActions))) { IPostActionLocalizationModel postActionModel = PostActionLocalizationModel.FromJObject(item); postActions.Add(postActionModel.ActionId, postActionModel); } locModel.PostActions = postActions; // regular file localizations IReadOnlyDictionary <string, JToken> fileLocalizationJson = source.ToJTokenDictionary(StringComparer.OrdinalIgnoreCase, "localizations"); List <FileLocalizationModel> fileLocalizations = new List <FileLocalizationModel>(); if (fileLocalizationJson != null) { foreach (KeyValuePair <string, JToken> fileLocInfo in fileLocalizationJson) { string fileName = fileLocInfo.Key; JToken localizationJson = fileLocInfo.Value; FileLocalizationModel fileModel = FileLocalizationModel.FromJObject(fileName, (JObject)localizationJson); fileLocalizations.Add(fileModel); } } locModel.FileLocalizations = fileLocalizations; return(locModel); }