static void Main(string[] args) { if (args.Length == 0 || args.Length == 1 && (args[0] == "-help" || args[0] == "-?")) { printHelp(); } var options = getOptions(args); //checkOptions(options); ConverterLogger logger = JsonToResxConverter.Convert(options); foreach (var item in logger.Log) { ConsoleColor color; switch (item.Severity) { case Severity.Trace: color = ConsoleColor.DarkGray; break; case Severity.Info: color = ConsoleColor.White; break; case Severity.Warning: color = ConsoleColor.Yellow; break; case Severity.Error: color = ConsoleColor.DarkRed; break; default: throw new ArgumentOutOfRangeException(); } var backupColor = Console.ForegroundColor; Console.ForegroundColor = color; Console.WriteLine(item.Message); Console.ForegroundColor = backupColor; } #if DEBUG Console.ReadLine(); #endif }
public static ConverterLogger Convert(JsonToResxConverterOptions options) { var logger = new ConverterLogger(); Dictionary <string, ResXResourceWriter> resXfiles = new Dictionary <string, ResXResourceWriter>(); List <string> key = new List <string>(); JsonTextReader reader = new JsonTextReader(new StringReader(File.ReadAllText(options.Inputs.First()))); while (reader.Read()) { if (reader.TokenType == JsonToken.Comment) { continue; } if (reader.Value != null) { if (reader.TokenType == JsonToken.PropertyName) { key.Add(reader.Value.ToString()); var next = reader.Read(); if (reader.TokenType == JsonToken.String) { string value = reader.Value.ToString(); string keyname = $"{String.Join(options.KeySeparator, key.Skip(1))}"; Console.WriteLine($"{keyname} = {value}"); ResXResourceWriter resX = getResX(options, resXfiles, key[0]); resX.AddResource(keyname, value); key.Remove(key.Last()); continue; } if (reader.TokenType == JsonToken.StartArray) { int i = 0; while (reader.Read()) { if (reader.TokenType == JsonToken.EndArray) { break; } string value = reader.Value.ToString(); string keyname = $"{String.Join(options.KeySeparator, key.Skip(1))}{options.KeySeparator}{i}"; Console.WriteLine($"{keyname} = {value}"); ResXResourceWriter resX = getResX(options, resXfiles, key[0]); resX.AddResource(keyname, value); i++; } key.Remove(key.Last()); continue; } } } else if (key.Count > 0) { key.Remove(key.Last()); } } foreach (var resX in resXfiles.Values) { resX.Close(); } return(logger); }