/// <summary> /// Transliterates <paramref name="input"/> string according to provided map. /// </summary> /// <param name="input">Text that will be transliterated.</param> public string Transliterate(string input) { if (string.IsNullOrEmpty(input)) { return null; } var processor = new TranslitProcessor(_translitData); var output = new StringBuilder(); int lastGrahemeLength = 0; foreach (char c in input) { var addResult = processor.AddChar(c); switch (addResult.Status) { case AddCharStatus.NoGraphemeFound: output.Append(c); lastGrahemeLength = 0; break; case AddCharStatus.NewGrapheme: output.Append(addResult.Grapheme); lastGrahemeLength = addResult.Grapheme.Length; break; case AddCharStatus.SubstitutePreviousGrapheme: output.Remove(output.Length - lastGrahemeLength, lastGrahemeLength); output.Append(addResult.Grapheme); lastGrahemeLength = addResult.Grapheme.Length; break; default: throw new ArgumentOutOfRangeException(); } } return output.ToString(); }
/// <summary> /// Creates an instance of <see cref="TransliteratorLive"/> class. /// </summary> /// <param name="mapJson"> /// Graphemes map in JSON format. Example: { "б": ["b"], "ё": ["jo", "yo"] } /// </param> public TransliteratorLive(string mapJson) { var translitData = new TranslitData(mapJson); _translitProcessor = new TranslitProcessor(translitData); }
public void Setup() { string jsonBody = ReadManifestData("YC.Transliteration", "lexicon.json"); _config= JsonConvert.DeserializeObject<LexiconConfig>(jsonBody); _tp = new TranslitProcessor(); }
/// <summary> /// Creates an instance of <see cref="TransliteratorLive"/> class. /// </summary> /// <param name="mapJson"> /// Graphemes map in JSON format. Example: { "б": ["b"], "ё": ["jo", "yo"] } /// </param> public TransliteratorLive(string mapJson) { var translitData = new TranslitData(mapJson); _translitProcessor = new TranslitProcessor(translitData); }