public IcuRulesCollationDefinition(IcuRulesCollationDefinition ircd)
			: base(ircd)
		{
			WritingSystemFactory = ircd.WritingSystemFactory;
			OwningWritingSystemDefinition = ircd.OwningWritingSystemDefinition;
			_imports = new BulkObservableList<IcuCollationImport>(ircd._imports);
			_icuRules = ircd._icuRules;
			SetupCollectionChangeListeners();
		}
Ejemplo n.º 2
0
 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);
		}
Ejemplo n.º 4
0
		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;
		}
Ejemplo n.º 5
0
		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)));
		}