private Person CreateGeorge(PlaceDescription birthPlace, PlaceDescription deathPlace) { Person person = new Person(); person.SetGender(new Gender(GenderType.Male)); Fact fact = new Fact(); fact.SetId("123"); fact.SetType(FactType.Birth); fact.SetDate(new DateInfo()); fact.Date.SetOriginal("February 22, 1732"); fact.Date.SetFormal("+1732-02-22"); fact.SetPlace(new PlaceReference()); fact.Place.SetOriginal(birthPlace.Names[0].Value.ToLower()); fact.Place.DescriptionRef = "#" + birthPlace.Id; person.AddFact(fact); fact = new Fact(); fact.SetId("456"); fact.SetType(FactType.Death); fact.SetDate(new DateInfo()); fact.Date.SetOriginal("December 14, 1799"); fact.Date.SetFormal("+1799-12-14T22:00:00"); fact.SetPlace(new PlaceReference()); fact.Place.SetOriginal(deathPlace.Names[0].Value.ToLower()); fact.Place.DescriptionRef = "#" + deathPlace.Id; person.AddFact(fact); List <Name> names = new List <Name>(); Name name = new Name(); NameForm nameForm = new NameForm(); nameForm.SetFullText("George Washington"); List <NamePart> parts = new List <NamePart>(); NamePart part = new NamePart(); part.SetType(NamePartType.Given); part.SetValue("George"); parts.Add(part); part = new NamePart(); part.SetType(NamePartType.Surname); part.SetValue("Washington"); parts.Add(part); nameForm.Parts = parts; name.SetNameForm(nameForm); name.SetId("789"); names.Add(name); person.Names = names; person.SetId("BBB-BBBB"); return(person); }
private Person CreateMartha(PlaceDescription birthPlace, PlaceDescription deathPlace) { Person person = new Person(); person.SetGender(new Gender(GenderType.Male)); Fact fact = new Fact(); fact.SetId("321"); fact.SetType(FactType.Birth); fact.SetDate(new DateInfo()); fact.Date.SetOriginal("June 2, 1731"); fact.Date.SetFormal("+1731-06-02"); fact.SetPlace(new PlaceReference()); fact.Place.SetOriginal(birthPlace.Names[0].Value.ToLower()); fact.Place.DescriptionRef = "#" + birthPlace.Id; person.AddFact(fact); fact = new Fact(); fact.SetId("654"); fact.SetType(FactType.Death); fact.SetDate(new DateInfo()); fact.Date.SetOriginal("May 22, 1802"); fact.Date.SetFormal("+1802-05-22"); fact.SetPlace(new PlaceReference()); fact.Place.SetOriginal(deathPlace.Names[0].Value.ToLower()); fact.Place.DescriptionRef = "#" + deathPlace.Id; person.AddFact(fact); List <Name> names = new List <Name>(); Name name = new Name(); NameForm nameForm = new NameForm(); nameForm.SetFullText("Martha Dandridge Custis"); List <NamePart> parts = new List <NamePart>(); NamePart part = new NamePart(); part.SetType(NamePartType.Given); part.SetValue("Martha Dandridge"); parts.Add(part); part = new NamePart(); part.SetType(NamePartType.Surname); part.SetValue("Custis"); parts.Add(part); nameForm.Parts = parts; name.SetNameForm(nameForm); name.SetId("987"); names.Add(name); person.Names = names; person.SetId("CCC-CCCC"); return(person); }
public static IEnumerable OpencorporaGenderDetectionData(string fileName, NamePart namePart) { using (StreamReader reader = new StreamReader(Path.Combine(NUnit.Framework.TestContext.CurrentContext.TestDirectory, "Data", fileName))) { string line; line = reader.ReadLine(); //skip header while ((line = reader.ReadLine()) != null) { if (string.IsNullOrWhiteSpace(line)) { continue; } string[] chunks = line.ToLower().Split('\t').Select(s => s.Trim()).ToArray(); Gender gender; switch (chunks[1]) { case "жр": gender = Gender.Female; break; case "мр": gender = Gender.Male; break; case "мр-жр": gender = Gender.Androgynous; break; default: throw new ApplicationException($"Unexpected gender string '{chunks[1]}'"); } yield return new object[] { chunks[0], namePart, gender}; } } }
private MatchedUser CreateMatchedUser(Tuple <uint, string, uint[]> match, string query) { var queryLength = (uint)query.Length; var userId = match.Item1; var fullName = match.Item2; var parts = fullName.Split(' '); var nameParts = new List <NamePart>(); for (var i = 0; i < parts.Length; i++) { var matchFound = match.Item3.Any(m => m == i + 1u); var namePart = new NamePart() { Text = parts[i], MatchedSymbolsCount = matchFound ? queryLength : 0 }; nameParts.Add(namePart); } var matchedUser = new MatchedUser { UserId = userId, NameParts = nameParts }; return(matchedUser); }
public static IEnumerable OpencorporaInflectionData(string fileName, NamePart namePart) { using (StreamReader reader = new StreamReader(Path.Combine(NUnit.Framework.TestContext.CurrentContext.TestDirectory, "Data", fileName))) { string line; line = reader.ReadLine(); //skip header while ((line = reader.ReadLine()) != null) { if (string.IsNullOrWhiteSpace(line)) { continue; } string[] chunks = line.ToLower().Split('\t').Select(s => s.Trim()).ToArray(); string[] chunks2 = chunks[2].Split(','); if (chunks2.Length > 3) { //weird lines "ЦЕЛИЙ ЦЕЛИЙ мр,имя,ед,им" continue; } Gender[] genders; switch (chunks2[0]) { case "жр": genders = FEMALE_GENDER_LIST; break; case "мр": genders = MALE_GENDER_LIST; break; case "мр-жр": genders = BOTH_GENDER_LIST; break; default: throw new ApplicationException($"Unexpected gender string '{chunks2[0]}'"); } if (chunks2[2] == "0") { //actually, '0' in 'case' column means that the test valid for all cases foreach (Gender gender in genders) { foreach (Case @case in Enum.GetValues(typeof(Case))) { yield return new object[] { chunks[0], namePart, gender, @case, chunks[1] }; } } } else { Case @case = Parse2LetterCase(chunks2[2]); foreach (Gender gender in genders) { yield return new object[] { chunks[0], namePart, gender, @case, chunks[1] }; } } } } }
private void ParseRuleSet() { string rulePartName = m_parser.GetNextPropertyName(); NamePart rulePart = ParseNamePart(rulePartName); PartRules rules = ParsePartRulesList(); m_data[rulePart] = rules; }
private void btnDown_Click(object sender, EventArgs e) { NamePart curr = partList[ltbField.SelectedIndex]; NamePart change = partList[ltbField.SelectedIndex + 1]; partList[ltbField.SelectedIndex] = change; partList[ltbField.SelectedIndex + 1] = curr; ltbField.SelectedIndex++; RunOrderedPreview(); }
private void ParseGenderRulesContainer() { m_parser.AssertNextTokenTypeAndConsume(JsonParser.TokenType.ObjectStart); while (!m_parser.CheckNextTokenTypeAndConsumeIfTrue(JsonParser.TokenType.ObjectEnd)) { string rulePartName = m_parser.GetNextPropertyName(); NamePart rulePart = ParseNamePart(rulePartName); ParseGenderRules(m_data.genderRules[rulePart]); } }
/// <summary> /// Находит имя/фамилию/отчество среди слов в массиве /// </summary> /// <param name="namePart">Что нужно найти</param> /// <returns>Слово</returns> public Word GetByNamePart(NamePart namePart) { for (int i = 0; i < length; i++) { if (words[i].NamePart == namePart) { return words[i]; } } return new Word(""); }
private string BlockCaps(string token, NamePart part) { if (String.IsNullOrEmpty(token)) return (token); foreach (var separator in new[] { '\'', '"', '-', '(', ')' }) { if (token.Contains(separator)) return ((String.Join(separator.ToString(), token.Split(new[] { separator }, StringSplitOptions.None).Select(subtoken => BlockCaps(subtoken, part)).ToArray()))); } token = token.ToLowerInvariant(); if (alwaysLowerCase.Contains(token)) return (token); if (specialMacs.Contains(token)) return (token.ToUpperInvariant()); if (token.StartsWith("mc")) return ("Mc") + token.Substring(2).ToUpperInvariant(); if (token.StartsWith("mac")) return ("Mac") + token.Substring(3).ToUpperInvariant(); return (token.ToUpperInvariant()); }
public Gender GetGender(string namePartValue, NamePart namePart) { if (namePartValue == null) { throw new ArgumentNullException(nameof(namePartValue)); } PartGenderRules rules = m_rules.genderRules[namePart]; Gender gender; if (rules.TryMatch(namePartValue, out gender)) { return(gender); } return(Gender.Androgynous); }
public Gender GetGender(string namePartValue, NamePart namePart) { if (namePartValue == null) { throw new ArgumentNullException(nameof(namePartValue)); } GenderRules rules = m_rules.genderRules[namePart]; foreach (KeyValuePair<string, Gender> pair in rules) { if (namePartValue.EndsWith(pair.Key, StringComparison.InvariantCultureIgnoreCase)) { return pair.Value; } } return Gender.Androgynous; }
/// <summary> /// Get a name from the database /// </summary> public static NameSet GetName(IDbConnection conn, IDbTransaction tx, decimal?nsSetId, bool loadFast) { IDbCommand cmd = CreateCommandStoredProc(conn, tx); try { cmd.CommandText = "get_name_set"; if (!loadFast) { cmd.CommandText += "_efft"; } cmd.Parameters.Add(CreateParameterIn(cmd, "name_set_id_in", DbType.Decimal, nsSetId)); // Execute a reader IDataReader reader = cmd.ExecuteReader(); NameSet retVal = new NameSet() { Use = NameSet.NameSetUse.Legal }; // Populate set while (reader.Read()) { NamePart part = new NamePart(); part.Value = Convert.ToString(reader["name_cmp_value"]); part.Type = (NamePart.NamePartType)Convert.ToInt32(reader["name_cmp_cls"]); retVal.Parts.Add(part); // Effective time if (!loadFast && retVal.EffectiveTime == default(DateTime) && reader["efft_utc"] != DBNull.Value) { retVal.EffectiveTime = Convert.ToDateTime(reader["efft_utc"]); if (!loadFast && reader["obslt_utc"] != DBNull.Value) { retVal.EffectiveTime = Convert.ToDateTime(reader["obslt_utc"]); } } } return(retVal); } finally { cmd.Dispose(); } }
private static string ParseNameExtracted(NamePart whichName) { string key = string.Empty; switch (whichName) { case NamePart.First: key = PersonNameParser.FirstName_Key; break; case NamePart.Middle: key = PersonNameParser.MiddleName_Key; break; case NamePart.Last: key = PersonNameParser.LastName_Key; break; } return(key); }
public string ParseName(NamePart whichName) { string description = ((NamePart)whichName).GetDescription(); string key = ParseNameExtracted(whichName); bool isRequired = whichName != NamePart.Middle; string parsedValue = null; if (!personFields.ContainsKey(key)) { if (isRequired) { AddMessage(string.Format(PersonNameParser.NameRequiredMessage, description)); } return(parsedValue); } parsedValue = personFields[key].ToString(); if (string.IsNullOrEmpty(parsedValue)) { if (isRequired) { AddMessage(string.Format(PersonNameParser.NameRequiredMessage, description)); } return(parsedValue); } if (parsedValue.Length < 2 || parsedValue.Length > 35) { AddMessage(string.Format(PersonNameParser.NameLengthMessage, description)); return(parsedValue); } if (!Regex.IsMatch(parsedValue, NameRegex)) { AddMessage(string.Format(PersonNameParser.NameCharacters, description)); return(parsedValue); } return(parsedValue); }
public string Inflect(string namePartValue, NamePart namePart, Case targetCase, Gender?gender = null) { if (namePartValue == null) { throw new ArgumentNullException(nameof(namePartValue)); } if (gender == null) { gender = GetGender(namePartValue, namePart); } PartRules partRules = m_rules[namePart]; string[] chunks = namePartValue.Split(NAME_CHUNK_SPLIT); for (int i = 0; i < chunks.Length; ++i) { Tags tags = i == 0 ? Tags.FirstWord : Tags.None; chunks[i] = partRules.InflectChunk(chunks[i], gender.Value, tags, targetCase); } return(String.Join("-", chunks)); }
public override string ToString() { var sb = new StringBuilder(); if (!NamePart.IsEmpty()) { sb.Append(NamePart); } if (!VersionPart.IsEmpty()) { if (!NamePart.IsEmpty()) { sb.Append("-"); } sb.Append(VersionPart); if (!PreReleasePart.IsEmpty()) { sb.Append("-").Append(PreReleasePart); } } return(sb.ToString()); }
public void Set(string nameTag, float priority, string name) { changed = true; if (Names.ContainsKey(nameTag)) { Names [nameTag] = new NamePart() { Part = name, Priority = priority } } ; else { Names.Add(nameTag, new NamePart() { Part = name, Priority = priority }); } if (Updated != null) { Updated(); } }
private void ReadBestMatch() { var bestMatchNode = XmlDocument.SelectSingleNode("//configuration/bestmatch"); var bestMatch = new BestMatch(); var nameParts = bestMatchNode.SelectNodes("//preferences/nameparts/namepart"); var preferences = new Preferences { IgnoreMustHaveForOneRom = GetInnerTextAsBool(bestMatchNode.SelectSingleNode("//preferences/ignore_musthaves_for_one_rom")), IgnoreNeverUseForOneRom = GetInnerTextAsBool(bestMatchNode.SelectSingleNode("//preferences/ignore_neveruse_for_one_rom")) }; foreach (XmlNode namePartNode in nameParts) { var name = GetAttributeAsString(namePartNode, "name"); var value = GetAttributeAsString(namePartNode, "value"); var system = GetAttributeAsString(namePartNode, "system"); var type = GetAttributeAsString(namePartNode, "type"); var description = GetAttributeAsString(namePartNode, "description"); var position = GetAttributeAsInt(namePartNode, "position", -1); var behaviour = GetAttributeAsString(namePartNode, "behaviour"); var namePart = new NamePart(name, value, system, type, description, position, behaviour); preferences.NameParts.Add(namePart); } RearangeElements(preferences); bestMatch.Preferences = preferences; bestMatch.RomSourceDirectory = GetAttributeAsString(bestMatchNode.SelectSingleNode("//rom_source_directory"), "value"); bestMatch.RomDestinationDirectory = GetAttributeAsString(bestMatchNode.SelectSingleNode("//rom_destination_directory"), "value"); _configuration.BestMatch = bestMatch; }
public void TestMultipleBySinglePartInflection(string value, NamePart part, Gender gender, Case targetCase, string expected) { switch (part) { case NamePart.LastName: { string result = petrovich.Inflect(new Petrovich.FIO() { lastName = value }, targetCase, gender).lastName; Assert.AreEqual(expected, result, string.Format("Part: {0}, Gender: {1}, Case: {2}", part, gender, targetCase)); } break; case NamePart.FirstName: { string result = petrovich.Inflect(new Petrovich.FIO() { firstName = value }, targetCase, gender).firstName; Assert.AreEqual(expected, result, string.Format("Part: {0}, Gender: {1}, Case: {2}", part, gender, targetCase)); } break; case NamePart.MiddleName: { string result = petrovich.Inflect(new Petrovich.FIO() { midName = value }, targetCase, gender).midName; Assert.AreEqual(expected, result, string.Format("Part: {0}, Gender: {1}, Case: {2}", part, gender, targetCase)); } break; } }
/// <summary>Helper: create a new instance to deserializing into</summary> public static NamePart DeserializeLengthDelimited(Stream stream) { NamePart instance = new NamePart(); DeserializeLengthDelimited(stream, instance); return instance; }
/// <summary>Helper: create a new instance to deserializing into</summary> public static NamePart DeserializeLength(Stream stream, int length) { NamePart instance = new NamePart(); DeserializeLength(stream, length, instance); return instance; }
/// <summary>Helper: put the buffer into a MemoryStream and create a new instance to deserializing into</summary> public static NamePart Deserialize(byte[] buffer) { NamePart instance = new NamePart(); using (var ms = new MemoryStream(buffer)) Deserialize(ms, instance); return instance; }
/// <summary>Helper: create a new instance to deserializing into</summary> public static NamePart Deserialize(Stream stream) { NamePart instance = new NamePart(); Deserialize(stream, instance); return instance; }
/// <summary>Serialize the instance into the stream</summary> public static void Serialize(Stream stream, NamePart instance) { var msField = global::SilentOrbit.ProtocolBuffers.ProtocolParser.Stack.Pop(); if (instance.NamePartField == null) throw new global::SilentOrbit.ProtocolBuffers.ProtocolBufferException("NamePartField is required by the proto specification."); // Key for field: 1, LengthDelimited stream.WriteByte(10); global::SilentOrbit.ProtocolBuffers.ProtocolParser.WriteBytes(stream, Encoding.UTF8.GetBytes(instance.NamePartField)); // Key for field: 2, Varint stream.WriteByte(16); global::SilentOrbit.ProtocolBuffers.ProtocolParser.WriteBool(stream, instance.IsExtension); global::SilentOrbit.ProtocolBuffers.ProtocolParser.Stack.Push(msField); }
private static string ParseNameExtracted(NamePart whichName) { string key = string.Empty; switch (whichName) { case NamePart.First: key = PersonNameParser.FirstName_Key; break; case NamePart.Middle: key = PersonNameParser.MiddleName_Key; break; case NamePart.Last: key = PersonNameParser.LastName_Key; break; } return key; }
public void TestGenderDetection(string value, NamePart part, Gender expected) { Gender gender = petrovich.GetGender(value, part); Assert.AreEqual(expected, gender, $"Value: {value} Part: {part}"); }
/// <summary>Helper: Serialize into a MemoryStream and return its byte array</summary> public static byte[] SerializeToBytes(NamePart instance) { using (var ms = new MemoryStream()) { Serialize(ms, instance); return ms.ToArray(); } }
public string ToTitleCase(string name, NamePart part) { return String.IsNullOrEmpty(name) ? (name) : (String.Join(" ", name.Split(' ').Select(token => TitleCase(token, part)).ToArray())); }
public void TestSinglePartInflection(string value, NamePart part, Gender gender, Case targetCase, string expected) { string result = petrovich.Inflect(value, part, targetCase, gender); Assert.AreEqual(expected, result, string.Format("Part: {0}, Gender: {1}, Case: {2}", part, gender, targetCase)); }
/// <summary>Serialize the instance into the stream</summary> public static void Serialize(Stream stream, NamePart instance) { if (instance.NamePartField == null) throw new ArgumentNullException("NamePartField", "Required by proto specification."); // Key for field: 1, LengthDelimited stream.WriteByte(10); global::SilentOrbit.ProtocolBuffers.ProtocolParser.WriteBytes(stream, Encoding.UTF8.GetBytes(instance.NamePartField)); // Key for field: 2, Varint stream.WriteByte(16); global::SilentOrbit.ProtocolBuffers.ProtocolParser.WriteBool(stream, instance.IsExtension); }
public string ParseName(NamePart whichName) { string description = ((NamePart) whichName).GetDescription(); string key = ParseNameExtracted(whichName); bool isRequired = whichName != NamePart.Middle; string parsedValue = null; if (!personFields.ContainsKey(key)) { if (isRequired) { AddMessage(string.Format(PersonNameParser.NameRequiredMessage, description)); } return parsedValue; } parsedValue = personFields[key].ToString(); if (string.IsNullOrEmpty(parsedValue)) { if (isRequired) { AddMessage(string.Format(PersonNameParser.NameRequiredMessage, description)); } return parsedValue; } if (parsedValue.Length < 2 || parsedValue.Length > 35) { AddMessage(string.Format(PersonNameParser.NameLengthMessage, description)); return parsedValue; } if(!Regex.IsMatch(parsedValue, NameRegex)) { AddMessage(string.Format(PersonNameParser.NameCharacters, description)); return parsedValue; } return parsedValue; }
/// <summary>Helper: Serialize with a varint length prefix</summary> public static void SerializeLengthDelimited(Stream stream, NamePart instance) { var data = SerializeToBytes(instance); global::SilentOrbit.ProtocolBuffers.ProtocolParser.WriteUInt32(stream, (uint)data.Length); stream.Write(data, 0, data.Length); }
private static IEnumerable ReadSinglePartData(string fileName, NamePart part) { using (StreamReader reader = new StreamReader(Path.Combine(NUnit.Framework.TestContext.CurrentContext.TestDirectory, "Data", fileName))) { string line; line = reader.ReadLine(); //skip header while ((line = reader.ReadLine()) != null) { if (string.IsNullOrWhiteSpace(line)) { continue; } string[] chunks = line.Split(',').Select(s => s.Trim()).ToArray(); Gender gender = (Gender)Enum.Parse(typeof(Gender), chunks[1]); Case @case = (Case)Enum.Parse(typeof(Case), chunks[2]); yield return new object[] { chunks[0], part, gender, @case, chunks[3] }; } } }
public void TestSinglePartGender(string value, NamePart part, Gender expected) { Gender? gender = petrovich.GetGender(value, part); Assert.AreEqual(expected, gender, string.Format("Part: {0}, Value: {1}", part, value)); }
public override void VisitNamePart(NamePart part) { BindIfNeeded(part); base.VisitNamePart(part); }
public string Inflect(string namePartValue, NamePart namePart, Case targetCase, Gender? gender = null) { if (namePartValue == null) { throw new ArgumentNullException(nameof(namePartValue)); } if (gender == null) { gender = GetGender(namePartValue, namePart); } PartRules partRules = m_rules[namePart]; string[] chunks = namePartValue.Split(NAME_CHUNK_SPLIT); for (int i = 0; i < chunks.Length; ++i) { Tags tags = i == 0 ? Tags.FirstWord : Tags.None; chunks[i] = partRules.InflectChunk(chunks[i], gender.Value, tags, targetCase); } return String.Join("-", chunks); }
internal PartGenderRules this[NamePart part] { get { return(m_rulesByNamePart[(int)part]); } }