private void parseContent(Site site, string url, string content) { Match entriesMatch = new Regex(site.EntryRegEx, RegexOptions.IgnoreCase | RegexOptions.Singleline).Match(content); int entriesCount = 0; int filterCount = 0; var lastAcceptedFilters = new SortDict <StringMatchFilter, int>(CompareUtils.CompareHashCode); string lastDate = null; while (entriesMatch.Success) { entriesCount++; var entry = entriesMatch.Result(site.EntryRegExResult); var result = new Result(); result.EntryName = firstMatch(entry, site.EntryNameRegEx, site.EntryNameRegExResult, true); result.Company = firstMatch(entry, site.CompanyRegEx, site.CompanyRegExResult, true); result.Description = firstMatch(entry, site.DescriptionRegEx, site.DescriptionRegExResult, true); result.Date = firstMatch(entry, site.DateRegEx, site.DateRegExResult, true); result.Cost = firstMatch(entry, site.CostRegEx, site.CostRegExResult, true); result.Url = firstMatch(entry, site.UrlRegEx, site.UrlRegExResult, false); result.Answers = firstMatch(entry, site.AnswersRegEx, site.AnswersRegExResult, false); result.SiteName = site.SiteName; if (!String.IsNullOrWhiteSpace(result.Date)) { lastDate = result.Date; } if (filter(result, Filters, lastAcceptedFilters)) { addResult(result); filterCount++; } entriesMatch = entriesMatch.NextMatch(); } var sb = new StringBuilder(); foreach (var item in lastAcceptedFilters) { if (sb.Length > 0) { sb.AppendLine(); } sb.Append('[').Append(item.Value).Append("] ") .Append(item.Key.Permission == FilterPermission.Allow ? "+" : "-") .Append(item.Key.ContentPart) .Append(item.Key.Negative ? "-" : "+") .Append(item.Key.Pattern); } Log.Add(RecType.Info, String.Format("Parse info: {0}, LastDate: {1}\r\nUrl: {2}\r\nEntries: {3}\r\nFilterEntries: {4}\r\n\r\nAccepted Filters:\r\n{5}", site.SiteName, lastDate, url, entriesCount, filterCount, sb)); }
public override int GetHashCode() => Skip.GetHashCode() ^ SortDict?.GetHashCode() ?? 0 ^ SearchDict?.GetHashCode() ?? 0;
public MainForm() { InitializeComponent(); if (DesignMode || AppRunMode.DesignMode) { return; } _updateStatusDeferredAction = new DeferredAction(updateStatus) { MinNextActionTime = TimeSpan.FromSeconds(1), ReExecuteOnAbortSuspended = false, ReExecuteOnError = false }; _asyncProcessorr = new AsyncProcessor(5); _asyncProcessorr.ActionBegin += _asyncProcessorr_ActionsChanged; _asyncProcessorr.ActionEnd += _asyncProcessorr_ActionsChanged; _asyncProcessorr.ActionError += _asyncProcessorr_ActionsChanged; jobSearcher = new JobSearcher(_asyncProcessorr); formStateSaver = new FormStateSaver(this, true, "Reserve"); jobSearcher.Modified += jobSearcher_Modified; _deferredAsyncProcessor = new DeferredAsyncProcessor(new AsyncProcessor(10)); objectEditor1.DeferredAsyncProcessor = _deferredAsyncProcessor; resultList1.DeferredAsyncProcessor = _deferredAsyncProcessor; resultList2.DeferredAsyncProcessor = _deferredAsyncProcessor; resultList3.DeferredAsyncProcessor = _deferredAsyncProcessor; resultList4.DeferredAsyncProcessor = _deferredAsyncProcessor; resultList1.JobSearcher = jobSearcher; resultList2.JobSearcher = jobSearcher; resultList3.JobSearcher = jobSearcher; resultList4.JobSearcher = jobSearcher; resultList1.Results = jobSearcher.Results; resultList2.Results = jobSearcher.Favorites; resultList3.Results = jobSearcher.Favorites2; resultList4.Results = jobSearcher.BlockedResults; resultList1.BlockCompanies += resultList1_BlockCompanies; resultList2.BlockCompanies += resultList1_BlockCompanies; resultList3.BlockCompanies += resultList1_BlockCompanies; resultList4.BlockCompanies += resultList1_BlockCompanies; IDictionaryChangedDict <ICollectionChangedList <Result>, string> resultsDict = new SortDict <ICollectionChangedList <Result>, string>(CompareUtils.CompareHashCode); resultList1.ResultsDict = resultsDict; resultsDict.Add(jobSearcher.Results, "Results"); resultList2.ResultsDict = resultsDict; resultsDict.Add(jobSearcher.Favorites, "Favorites"); resultList3.ResultsDict = resultsDict; resultsDict.Add(jobSearcher.Favorites2, "Not sure"); resultsDict.Add(jobSearcher.BlockedResults, "Blocked"); resultList4.ResultsDict = resultsDict; objectEditor1.SetBindObject(jobSearcher.Sites); checkTextBox1.CheckTextChanged += checkTextBox1_CheckTextChanged; checkTextBox2.CheckTextChanged += checkTextBox1_CheckTextChanged; }