/// <summary> Adds each sense of a word to be written out to lift </summary> private void AddSenses(LexEntry entry, Word wordEntry) { for (var i = 0; i < wordEntry.Senses.Count; i++) { // Merge in senses var dict = new Dictionary <string, string>(); foreach (var gloss in wordEntry.Senses[i].Glosses) { dict.Add(gloss.Language, gloss.Def); } var lexSense = new LexSense(); lexSense.Gloss.MergeIn(MultiTextBase.Create(dict)); entry.Senses.Add(lexSense); // Merge in semantic domains foreach (var semdom in wordEntry.Senses[i].SemanticDomains) { var orc = new OptionRefCollection(); orc.Add(semdom.Id + " " + semdom.Name); entry.Senses[i].Properties.Add( new KeyValuePair <string, IPalasoDataObjectProperty>("semantic-domain-ddp4", orc)); } } }
/// <summary> Adds each <see cref="Sense"/> of a word to be written out to lift </summary> private static void AddSenses(LexEntry entry, Word wordEntry) { var activeSenses = wordEntry.Senses.Where(s => s.Accessibility == State.Active).ToList(); foreach (var currentSense in activeSenses) { // Merge in senses var dict = new Dictionary <string, string>(); foreach (var gloss in currentSense.Glosses) { if (dict.ContainsKey(gloss.Language)) { // This is an unexpected situation but rather than crashing or losing data we // will just append extra definitions for the language with a semicolon separator dict[gloss.Language] = $"{dict[gloss.Language]};{gloss.Def}"; } else { dict.Add(gloss.Language, gloss.Def); } } var lexSense = new LexSense(); lexSense.Gloss.MergeIn(MultiTextBase.Create(dict)); lexSense.Id = currentSense.Guid.ToString(); entry.Senses.Add(lexSense); // Merge in semantic domains foreach (var semDom in currentSense.SemanticDomains) { var orc = new OptionRefCollection(); orc.Add(semDom.Id + " " + semDom.Name); lexSense.Properties.Add( new KeyValuePair <string, IPalasoDataObjectProperty>("semantic-domain-ddp4", orc)); } } }