public async Task <string> GetSymbolContent(SymbolData data) { string result; if (String.IsNullOrEmpty(data.SymbolZipName)) { var alobj = await GetSymbolObject(data, true); result = ALParser.Write(alobj); return(await Task.FromResult(result)); } using (Stream fs = File.OpenRead(data.Path)) { using (var zf = new ZipFile(fs)) { int i; int.TryParse(data.SymbolZipName, out i); var zipEntry = zf[i]; using (var entryStream = zf.GetInputStream(zipEntry)) { using (var zipStream = new StreamReader(entryStream)) { result = zipStream.ReadToEnd(); return(await Task.FromResult(result)); } } } } }
public async Task <IALObject> GetSymbolObject(SymbolData data, bool mapSourcePath = true) { FileInfo info = new FileInfo(data.Path); if (info.Extension == ".al") { var alobjects = ALParser.Read(data.Path); var alobject = alobjects.FirstOrDefault(f => f.Type == data.Type && f.Name == data.Name); var project = ALProjectCollector.Discover(data.Path); return(alobject); } var symbols = await GetSymbolReference(data.Path, mapSourcePath); var result = symbols.Symbols.Where(w => w.Type == data.Type && w.Name == data.Name).FirstOrDefault(); return(await Task.FromResult(result)); }