/// <summary> /// Deserializes all definitions and events from the specified directory. /// </summary> /// <param name="compiler">The condition compiler to use.</param> /// <param name="path">The path to the directory.</param> /// <returns>A tuple of definitions and events from the directory.</returns> public static DefinitionCollection DeserializeFromDirectory(IConditionCompiler compiler, string path) { List <BaseDefinition> defs = new List <BaseDefinition>(); foreach (string file in Directory.EnumerateFiles(path, "*.json", SearchOption.AllDirectories)) { string json = File.ReadAllText(file); DefinitionFile?deserializedFile = JsonSerializer.Deserialize <DefinitionFile>(json, JsonOptions); if (deserializedFile != null) { foreach (BaseDefinition eve in deserializedFile.AllDefinitions) { if (eve is ITopLevelDefinition toplevel) { toplevel.SourceFile = file; } defs.Add(eve); } } } var definitions = new DefinitionCollection(defs); definitions.Attach(compiler); return(definitions); }