/// <summary>
		/// 	Создает правило
		/// </summary>
		/// <param name="sex"> </param>
		/// <param name="targetPart"> </param>
		/// <param name="suffix"> </param>
		/// <param name="padezh"> </param>
		/// <param name="type"> </param>
		/// <param name="changer"> </param>
		public FioTransformerRule(FioSex sex, FioStructPart targetPart, string suffix, Padezh padezh,
		                          FioTrasformerRuleType type, string changer) {
			Part = targetPart;
			Suffix = suffix;
			Type = type;
			Padezh = padezh;
			Sex = sex;
			Changer = changer;
		}
Exemplo n.º 2
0
		/// <summary>
		/// 	Создает вариант
		/// </summary>
		/// <param name="fio"> </param>
		/// <param name="weight"> </param>
		/// <param name="padezh"> </param>
		/// <param name="onlyLastName"> </param>
		/// <param name="addNameUsed"> </param>
		/// <param name="abbrevated"> </param>
		/// <param name="lastNameFirst"> </param>
		public FioVariant(string fio, int weight, Padezh padezh, bool onlyLastName, bool addNameUsed, bool abbrevated,
		                  bool lastNameFirst) {
			Padezh = padezh;
			Fio = fio;
			Weight = weight;
			Abbrevated = abbrevated;
			LastNameFirst = lastNameFirst;
			AddNameUsed = addNameUsed;
			OnlyLastName = onlyLastName;
		}
Exemplo n.º 3
0
		/// <summary>
		/// 	Возвращает в указанном падеже
		/// </summary>
		/// <param name="fioStruct"> </param>
		/// <param name="transformerOptions"> </param>
		/// <param name="padezh"> </param>
		/// <returns> </returns>
		public FioStruct GetWithPadezh(FioStruct fioStruct, FioTransformerOptions transformerOptions, Padezh padezh) {
			Rules = Rules ?? FioTransformerRuleSet.Default;
			if (padezh == Padezh.Imenit) {
				return fioStruct;
			}
			
			var result = new FioStruct {Name = fioStruct.Name, LastName = fioStruct.LastName, AddName = fioStruct.AddName};
			var sex = GetSex(fioStruct, transformerOptions?? new FioTransformerOptions
			{
			    AutoSex = true,
			    AutoTranslate = true,
			});
			foreach (var p in new[] {FioStructPart.LastName, FioStructPart.Name, FioStructPart.AddName,}) {
				var rule =
					Rules.Where(
						x => (x.Sex == sex || x.Sex == FioSex.Any) && x.Part == p && (x.Padezh == padezh || x.Padezh == Padezh.Any)
						&&(!x.Rewriter)).
						FirstOrDefault(x => x.Match(result));
				if (null != rule) {
					rule.Apply(result);
				}
				var fixerrules =
					Rules.Where(
						x => (x.Sex == sex || x.Sex == FioSex.Any) && x.Part == p && (x.Padezh == padezh || x.Padezh == Padezh.Any)
						     && (x.Rewriter)).Where(x => x.Match(result));
				foreach (var fixerrule in fixerrules) {
					fixerrule.Apply(result);
				}

			}
			return result;
		}