protected void CompareResult(string grammar, string input, object expectedObject) { object parsed = Whiteparser.ParseObject(grammar, input, CultureInfo.InvariantCulture); output.WriteLine(JsonConvert.SerializeObject(parsed, Formatting.Indented)); parsed.ShouldDeepEqual(expectedObject); }
private static int RunMain(ParseOptions opts) { string grammar = opts.Grammar ?? File.ReadAllText(opts.GrammarFile); int numInputs = opts.InputFiles.Count; bool writeToStdOut = opts.OutputFiles.Count == 0; bool readFromStdIn = numInputs == 0; // create output filenames, if the output is a directory IList <string> outputFiles = opts.OutputFiles; if (!writeToStdOut) { string directory = opts.OutputFiles.First(); if (!File.Exists(directory)) { if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); } directory = Path.GetFullPath(directory); if (readFromStdIn) { // decide for some filename, when reading from stdin outputFiles = new List <string> { Path.Combine(directory, "parsed.json") }; } else { // map the input files to json output files outputFiles = opts.InputFiles .Select(Path.GetFileNameWithoutExtension) .Select(e => Path.Combine(directory, e + ".json")) .ToList(); } } } if (numInputs <= 1) { // read (from stdin or first input file) and parse StreamReader input = readFromStdIn ? new StreamReader(Console.OpenStandardInput()) : new StreamReader(opts.InputFiles.First()); string json = Whiteparser.ParseJson(grammar, EnumerateStream(input), opts.InvariantCulture ? CultureInfo.InvariantCulture : null, true); // write if (writeToStdOut) { Console.Write(json); } else { File.WriteAllText(outputFiles.First(), json); } } else { // process more than one input file for (var i = 0; i < numInputs; i++) { // read, parse, write var input = new StreamReader(opts.InputFiles[i]); string json = Whiteparser.ParseJson(grammar, EnumerateStream(input), opts.InvariantCulture ? CultureInfo.InvariantCulture : null, true); File.WriteAllText(outputFiles[i], json); } } return(0); }
/* Utils for the TemplateParser */ protected void ParseInput(string grammar, string input) { object parsed = Whiteparser.ParseObject(grammar, input, CultureInfo.InvariantCulture); output.WriteLine(JsonConvert.SerializeObject(parsed, Formatting.Indented)); }