internal static Section[] GetSections(IElement elem, Section[] sections = null) { if (sections == null) { return(GetSections(elem, new Section[0])); } if (FiFiPageEntry.IsEnd(elem)) { return(sections); } var sectionHeadTags = new string[2] { "H4", "H5" }; if (sectionHeadTags.Contains(elem.TagName)) { // some sections have no text content var sectionElems = FiFiPage.GetElementsUntil(sectionHeadTags, elem.NextElementSibling); bool hasContent = sectionElems.Count() > 0 && sectionElems.Select(e => e.TextContent.Trim()).Aggregate((x, y) => x + y).Length > 0; if (hasContent) { return(GetSections(elem.NextElementSibling, AddSection(sections, new Section(elem)))); } } return(GetSections(elem.NextElementSibling, sections)); }
internal static Definition[] GetDefinitions(IElement elem, Definition[] defs) { if (FiFiPageEntry.IsEnd(elem)) { return(defs); } if (elem.TagName == "OL") { var newDefs = GetDefinitions(elem.FirstElementChild, defs); return(newDefs); } if (elem.TagName == "LI") { var def = new Definition(elem, defs.Count() + 1); var newDefs = Definition.AddDefinition(defs, def); return(GetDefinitions(elem.NextElementSibling, newDefs)); } return(GetDefinitions(elem.NextElementSibling, defs)); }