Пример #1
0
            public PageState <TPage> Reduce(PageState <TPage> pageState, SceneState <TScene> sceneState,
                                            IPageAction action)
            {
                if (action is PushAction)
                {
                    return(ReducePush(pageState, sceneState, (PushAction)action));
                }
                else if (action is PopAction)
                {
                    return(ReducePop(pageState, sceneState, (PopAction)action));
                }
                else if (action is ResetAction)
                {
                    return(ReduceReset(pageState, sceneState, (ResetAction)action));
                }
                else if (action is SetDataAction)
                {
                    return(ReduceSetData(pageState, (SetDataAction)action));
                }
                else if (action is ReplaceAction)
                {
                    return(ReduceReplace(pageState, sceneState, (ReplaceAction)action));
                }
                else if (action is AdjustAction)
                {
                    return(ReduceAdjust(pageState, sceneState));
                }

                return(pageState);
            }
Пример #2
0
 public Page(Uri _Uri, IPageAction <Z> _pageAction, IPageManager <Z> _pageManager)
 {
     pageAction   = _pageAction;
     pageManager  = _pageManager;
     CurrentUri   = _Uri;
     Block        = new List <Z>();
     ChildrenPage = new List <Page <Z> >();
 }
Пример #3
0
 public Parser(IGetHtmlContent _htmlSubject, AbstractPageFactory <T> _factory)
 {
     collectionConcurrent = new ConcurrentQueue <string>();
     _simpleFactory       = _factory;
     _Kernal = new StandardKernel();
     _Kernal.Load(Assembly.GetExecutingAssembly());
     _ipageManger = (_Kernal.Get <PageManager>() as IPageManager <T>);
     _ipageAction = (_Kernal.Get <PageIterableAction>() as IPageAction <T>);
     htmlSubject  = _htmlSubject;
 }
Пример #4
0
        static void Main(string[] args)
        {
            _parser       = new Parser <IContainerForBlock <PageTagBlock> >(new HtmlSubject(), new SimplePageFactory <IContainerForBlock <PageTagBlock> >());
            _pageIterable = new PageIterableAction();
            _pageManager  = new PageManager();
            _pageMen      = new SimplePageFactory <IContainerForBlock <PageTagBlock> >().CreatePage(
                new Uri("https://www.lamoda.ru/men-home/?sitelink=topmenuM"), _pageIterable, _pageManager);
            var answer = _parser.GetPageCollection(_pageMen).Result;
            ConcurrentQueue <SubjectInfo> result = new ConcurrentQueue <SubjectInfo>();

            var nChunks     = 10;
            var totalLength = answer.Count();
            var chunkLength = (int)Math.Ceiling(totalLength / (double)nChunks);
            var _random     = Enumerable.Range(0, 5)
                              .Select(i => answer.Skip(i * chunkLength).Take(chunkLength)).ToList();
            var ans = answer.Take((int)answer.Count / 8);

            try
            {
                foreach (var i in ans)
                {
                    var data = _parser.GetSubjectCollection(i).Result;
                    foreach (var j in data)
                    {
                        result.Enqueue(j);
                    }
                }
            }
            catch (ArgumentOutOfRangeException e)
            {
                Console.WriteLine(e.Message);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            Console.WriteLine();
        }
Пример #5
0
 public override Page <T> CreatePage(Uri _uri, IPageAction <T> _iaction, IPageManager <T> _imanager)
 {
     return(new Page <T>(_uri, _iaction, _imanager));
 }
 public abstract Page <T> CreatePage(Uri _uri, IPageAction <T> _iaction, IPageManager <T> _imanager);