public void Roundtrip_LdmlSpellChecker() { using (var environment = new TestEnvironment()) { var scd = new SpellCheckDictionaryDefinition(SpellCheckDictionaryFormat.Hunspell); scd.Urls.Add("http://wirl.scripts.sil.org/hunspell"); scd.Urls.Add("http://scripts.sil.org/cms/scripts/page.php?item_id=hunspell"); var wsToLdml = new WritingSystemDefinition("en", "Latn", "", ""); wsToLdml.SpellCheckDictionaries.Add(scd); var ldmlAdaptor = new LdmlDataMapper(new TestWritingSystemFactory()); ldmlAdaptor.Write(environment.FilePath("test.ldml"), wsToLdml, null); AssertThatXmlIn.File(environment.FilePath("test.ldml")) .HasAtLeastOneMatchForXpath("/ldml/special/sil:external-resources/sil:spellcheck[@type='hunspell']/sil:url[text()='http://wirl.scripts.sil.org/hunspell']", environment.NamespaceManager); AssertThatXmlIn.File(environment.FilePath("test.ldml")) .HasAtLeastOneMatchForXpath("/ldml/special/sil:external-resources/sil:spellcheck[@type='hunspell']/sil:url[text()='http://scripts.sil.org/cms/scripts/page.php?item_id=hunspell']", environment.NamespaceManager); var wsFromLdml = new WritingSystemDefinition(); ldmlAdaptor.Read(environment.FilePath("test.ldml"), wsFromLdml); Assert.That(wsFromLdml.SpellCheckDictionaries.First().ValueEquals(scd)); } }
private void ReadSpellcheckElement(XElement externalResourcesElem, WritingSystemDefinition ws) { foreach (XElement scElem in externalResourcesElem.NonAltElements(Sil + "spellcheck")) { var type = (string) scElem.Attribute("type"); if (!string.IsNullOrEmpty(type)) { var scd = new SpellCheckDictionaryDefinition(SpellCheckToSpecllCheckDictionaryFormats[type]); // URL elements foreach (XElement urlElem in scElem.NonAltElements(Sil + "url")) scd.Urls.Add(urlElem.Value); ws.SpellCheckDictionaries.Add(scd); } } }