/// <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); }
/// <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); }
/// <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); }
/// <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); }