Пример #1
0
        /// <summary>
        /// extract block from content
        /// </summary>
        /// <param name="content">content need to be extract</param>
        /// <param name="block">extract block</param>
        /// <returns></returns>
        public static ExtractResult Extract(string content, ExtractBlock block)
        {
            var pr = ProcessorManager.Process(content, block.Selectors);

            var result = new ExtractResult
            {
                Name    = block.Name,
                Content = pr.Content
            };

            if (block.Blocks != null && block.Blocks.Count > 0)
            {
                result.Blocks = Extract(result.Content.ToString(), block.Blocks);
                var paging = result.Blocks.SingleOrDefault(m => m.Name == "_paging");
                if (paging != null && paging.Tiles.Count == 0)
                {
                    paging = Extract(content, block.Blocks.Single(m => m.Name == "_paging"));
                }
            }

            if (block.TileSelector != null && block.TileSelector.Selectors.Count > 0)
            {
                result.Tiles = ExtractTile(pr.Content, block.TileSelector);
            }

            if (block.Metas.Count > 0)
            {
                result.Metas = ExtractMeta(pr.Content, block.Metas);
            }

            return(result);
        }
Пример #2
0
        /// <summary>
        /// extract base from content
        /// </summary>
        /// <param name="content">content need to be extract</param>
        /// <param name="extractBase">extract base</param>
        /// <returns>extract result collection</returns>
        public static ExtractResultCollection ExtractSelector(string content, ExtractBase extractBase)
        {
            var pr = ProcessorManager.Process(content, extractBase.Selectors);

            var results = new ExtractResultCollection();

            foreach (var m in pr.Matches)
            {
                ExtractResult result;

                try
                {
                    result = new ExtractResult
                    {
                        Name    = "tile",
                        Content = Convert.ChangeType(m, extractBase.DataType)
                    };
                }
                catch
                {
                    result = new ExtractResult
                    {
                        Name    = "tile",
                        Content = m
                    };
                }

                results.Add(result);
            }

            return(results);
        }
Пример #3
0
        /// <summary>
        /// extract block from content
        /// </summary>
        /// <param name="content">content need to be extract</param>
        /// <param name="block">extract block</param>
        /// <returns></returns>
        public static ExtractResult Extract(string content, ExtractBlock block)
        {
            var pr = ProcessorManager.Process(content, block.Selectors);

            var result = new ExtractResult
            {
                Name    = block.Name,
                Content = pr.Content
            };

            if (block.Blocks != null && block.Blocks.Count > 0)
            {
                result.Blocks = Extract(result.Content.ToString(), block.Blocks);
            }

            if (block.TileSelector != null && block.TileSelector.Selectors.Count > 0)
            {
                result.Tiles = ExtractTile(pr.Content, block.TileSelector);
            }

            if (block.Metas.Count > 0)
            {
                result.Metas = ExtractMeta(pr.Content, block.Metas);
            }

            return(result);
        }
Пример #4
0
        /// <summary>
        /// extract tile from content
        /// </summary>
        /// <param name="content">content need to be extract</param>
        /// <param name="tile">extract tile</param>
        /// <returns>extract result collection</returns>
        public static ExtractResultCollection ExtractTile(string content, ExtractTile tile)
        {
            var pr = ProcessorManager.Process(content, tile.Selectors);

            var results = new ExtractResultCollection();

            foreach (var m in pr.Matches)
            {
                var result = new ExtractResult
                {
                    Name    = "tile",
                    Content = m
                };

                if (tile.Metas.Count > 0)
                {
                    result.Metas = ExtractMeta(m, tile.Metas);
                }

                results.Add(result);
            }

            return(results);
        }