Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }