コード例 #1
0
        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));
        }
コード例 #2
0
ファイル: QueryListBaseModel.cs プロジェクト: Fazzani/Synker2
 public override int GetHashCode() => Skip.GetHashCode() ^ SortDict?.GetHashCode() ?? 0 ^ SearchDict?.GetHashCode() ?? 0;
コード例 #3
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;
        }