public IcuRulesCollationDefinition(IcuRulesCollationDefinition ircd) : base(ircd) { WritingSystemFactory = ircd.WritingSystemFactory; OwningWritingSystemDefinition = ircd.OwningWritingSystemDefinition; _imports = new BulkObservableList<IcuCollationImport>(ircd._imports); _icuRules = ircd._icuRules; SetupCollectionChangeListeners(); }
public IcuRulesCollationDefinition(IcuRulesCollationDefinition ircd) : base(ircd) { WritingSystemFactory = ircd.WritingSystemFactory; OwningWritingSystemDefinition = ircd.OwningWritingSystemDefinition; _imports = new BulkObservableList <IcuCollationImport>(ircd._imports); _icuRules = ircd._icuRules; SetupCollectionChangeListeners(); }
public void ValidateSortRules_ValidOtherLanguage_IsTrue() { var enWS = new WritingSystemDefinition("en"); var cd = new IcuRulesCollationDefinition("standard") {IcuRules = "&b<a<c"}; string message; Assert.That(cd.Validate(out message), Is.True); enWS.DefaultCollation = cd; _writingSystemRepository.WritingSystemFactory.WritingSystems.Add(enWS); _model.AddNew(); _model.CurrentIso = "pt"; _model.CurrentCollationRulesType = "OtherLanguage"; _model.CurrentCollationRules = "en"; Assert.That(_model.ValidateCurrentSortRules(out message), Is.True); }
private IcuRulesCollationDefinition ReadCollationRulesForCustomIcu(XElement collationElem, WritingSystemDefinition ws, string collationType) { var icd = new IcuRulesCollationDefinition(collationType) {WritingSystemFactory = _writingSystemFactory, OwningWritingSystemDefinition = ws}; icd.Imports.AddRange(collationElem.NonAltElements("import").Select(ie => new IcuCollationImport((string) ie.Attribute("source"), (string) ie.Attribute("type")))); icd.IcuRules = LdmlCollationParser.GetIcuRulesFromCollationNode(collationElem); return icd; }
private void WriteCollationRulesFromCustomIcu(XElement collationElem, IcuRulesCollationDefinition icd) { foreach (IcuCollationImport import in icd.Imports) { var importElem = new XElement("import", new XAttribute("source", import.LanguageTag)); if (!string.IsNullOrEmpty(import.Type)) importElem.Add(new XAttribute("type", import.Type)); collationElem.Add(importElem); } // If collation invalid because we couldn't parse the icu rules, write a comment to send back to SLDR if (!icd.IsValid) collationElem.Add(new XComment(string.Format("Unable to parse the ICU rules with ICU version {0}", Wrapper.IcuVersion))); // If collation valid and icu rules exist, populate icu rules if (!string.IsNullOrEmpty(icd.IcuRules)) collationElem.Add(new XElement("cr", new XCData(icd.IcuRules))); }