internal IEnumerable <TargetFile> GenerateTargetFilesList(IEnumerable <SrcDoc> sourceFiles) { Dictionary <string, TargetFile> targetfiles = new Dictionary <string, TargetFile>(StringComparer.OrdinalIgnoreCase); foreach (var srcdoc in sourceFiles) { PackerDirectiveNode targetfileDirective = null; try { targetfileDirective = srcdoc.PackerDirectives?.SingleOrDefault(_ => _.Name == "targetFile"); } catch (InvalidOperationException ex) { throw new ApplicationException( $"The file '{srcdoc.Document.Name}' has multiple targetfile packer directives.", ex); } if (targetfileDirective == null) { targetfileDirective = new PackerDirectiveNode { Name = "targetFile", Options = PackOptions.TargetFile ?? "lib.cs" }; } if (targetfiles.ContainsKey(targetfileDirective.Options) == false) { //add new targetfile to targetfiles list var targetfile = new TargetFile(targetfileDirective.Options); targetfiles.Add(targetfileDirective.Options, targetfile); if (PackOptions.Verbose) { Console.WriteLine($"New target file: {targetfile.Name}"); } } //add this sourcedoc to targetfile targetfiles[targetfileDirective.Options].SourceDocs.Add(srcdoc); } return(targetfiles.Values); }
private void _ParseLine(string line, List <PackerDirectiveNode> directives, int lineIndex) { Match m; if ((m = packerDirectivesRegex.Match(line)).Success == true) { string[] groups = m.Groups[1].Value.Split(';'); foreach (var g in groups) { string[] split = g.Split('='); var node = new PackerDirectiveNode() { Name = split[0], Options = (split.Length < 2 ? "" : split[1].TrimEnd()), LineNumber = lineIndex + 1 }; directives.Add(node); } } }