private static List <CambridgeWordInfo.Block> ParseDefBlocksFromEntryElement(IParentNode entryElement) { var blocks = new List <CambridgeWordInfo.Block>(); foreach (var defBlockElement in entryElement.QuerySelectorAll("div.def-block")) { var definitionTextElement = defBlockElement.QuerySelector("p > b.def"); if (definitionTextElement == null) { continue; } var block = new CambridgeWordInfo.Block(); block.Definition = Regex.Replace(definitionTextElement.TextContent, @"\s+", " "); if (block.Definition.EndsWith(": ")) { block.Definition = block.Definition.Substring(0, block.Definition.Length - 2); } var exampleElements = defBlockElement.QuerySelectorAll("span > div.examp"); if (exampleElements.Length > 0) { block.Examples = new List <string>(exampleElements.Select(exampleElement => exampleElement.TextContent.Trim())); } blocks.Add(block); } return(blocks); }
private void tsmiAddDefinition_Click(object sender, EventArgs e) { var definitionViewItem = new DefinitionViewItem(); lvDefinitions.Items.Add(definitionViewItem); using (var dialog = new EditWordDefinitionForm(WordInfo.Entries.Count, tbInputWord.Text)) { if (dialog.ShowDialog() != DialogResult.OK || string.IsNullOrWhiteSpace(dialog.Definition)) { RemoveDefinitionViewItem(definitionViewItem); return; } ProcessEditWordDefinitionDialog(dialog); var definition = new CambridgeWordInfo.Block() { Definition = dialog.Definition }; WordInfo.Entries[dialog.EntryIndex].Definitions.Add(definition); WordInfo.Entries[dialog.EntryIndex].Label = dialog.Label; definitionViewItem.EntryIndex = dialog.EntryIndex; definitionViewItem.DefinitionIndex = WordInfo.Entries[dialog.EntryIndex].Definitions.Count - 1; definitionViewItem.Tag = lvDefinitions.Items.Count - 1; definitionViewItem.WordInfo = WordInfo; ChangeMade = true; } }