public void Unsupported_language_test() { const string input = "Неподдерживаемый язык транслитерации"; var сultureInfo = CultureInfo.InvariantCulture; var transliterator = new Transliterator(сultureInfo); Assert.AreEqual(input, transliterator.Transliterate(input)); }
public void TestOptimizer() { string rules = "a > b; b > c;"; // convert a's to b's and b's to c's Transliterator custom = Transliterator.CreateFromRules("test", rules, Transliterator.Forward); assertTrue(custom.Filter == null); new ICUTransformFilter(new KeywordTokenizer(new StringReader("")), custom); assertTrue(custom.Filter.Equals(new UnicodeSet("[ab]"))); }
// TODO: Add variants for tr/az, lt, default = default locale: ICU ticket #12720 /// <summary> /// System registration hook. /// </summary> internal static void Register() { Transliterator.RegisterFactory(_ID, new Transliterator.Factory(getInstance: (id) => { return(new TitlecaseTransliterator(ULocale.US)); })); RegisterSpecialInverse("Title", "Lower", false); }
// TODO: Add variants for tr/az, lt, default = default locale: ICU ticket #12720 /// <summary> /// System registration hook. /// </summary> internal static void Register() { Transliterator.RegisterFactory(_ID, new Transliterator.Factory(getInstance: (id) => { return(new LowercaseTransliterator(ULocale.US)); })); Transliterator.RegisterSpecialInverse("Lower", "Upper", true); }
// TODO: Add variants for tr/az, lt, default = default locale: ICU ticket #12720 /// <summary> /// System registration hook. /// </summary> internal static void Register() { Transliterator.RegisterFactory(_ID, new Transliterator.Factory(getInstance: (id) => { return(new TitlecaseTransliterator(new UCultureInfo("en_US"))); })); RegisterSpecialInverse("Title", "Lower", false); }
/// <summary> /// Multiplies the specified token. /// </summary> /// <param name="token">The token.</param> /// <returns>The original token and eventually its transliterated form. /// </returns> public IEnumerable <string> Multiply(string token) { if (!string.IsNullOrEmpty(token) && token.Any(c => UniData.IsInGreekRange(c))) { return(new[] { token, Transliterator.Transliterate(token) }); } return(new[] { token }); }
public void TestOptimizerSurrogate() { string rules = "\\U00020087 > x;"; // convert CJK UNIFIED IDEOGRAPH-20087 to an x Transliterator custom = Transliterator.CreateFromRules("test", rules, Transliterator.Forward); assertTrue(custom.Filter == null); new ICUTransformFilter(new KeywordTokenizer(new StringReader("")), custom); assertTrue(custom.Filter.Equals(new UnicodeSet("[\\U00020087]"))); }
// TODO: Add variants for tr, az, lt, default = default locale /// <summary> /// System registration hook. /// </summary> internal static void Register() { Transliterator.RegisterFactory(_ID, new Transliterator.Factory(getInstance: (id) => { return(new CaseFoldTransliterator()); })); Transliterator.RegisterSpecialInverse("CaseFold", "Upper", false); }
/* * Предыдущая секция нужна в случае если конвертитуется обрезок, т.к. * его размер должен включать размер реза, который находится перед ним. */ private Lane ConvertSection(Section input, Section prevSection, Section nextSection) { Lane result = new Lane(); result.Size = input.Size; switch (input.SectionType) { case SectionType.Cut: result.LaneType = LaneType.Cut; result.SizeType = SizeType.Automatic; break; case SectionType.Element: result.LaneType = LaneType.Detail; result.SizeType = SizeType.Changeable; result.Name = DetailNameFixer.Convert(Transliterator.Convert(input.Label)); break; case SectionType.NewLine: result.LaneType = LaneType.Lane; result.SizeType = SizeType.Changeable; break; case SectionType.Remain: result.LaneType = LaneType.Rest; result.SizeType = SizeType.Changeable; break; case SectionType.Scrap: result.LaneType = LaneType.Cutoff; result.SizeType = SizeType.Automatic; if (prevSection != null && prevSection.SectionType == SectionType.Cut) { result.Size = input.Size + prevSection.Size; } if (nextSection != null && nextSection.SectionType == SectionType.Cut) { result.Size = input.Size + nextSection.Size; } break; case SectionType.Free: result.LaneType = LaneType.Cutoff; result.SizeType = SizeType.Automatic; if (prevSection != null && prevSection.SectionType == SectionType.Cut) { result.Size = input.Size + prevSection.Size; } if (nextSection != null && nextSection.SectionType == SectionType.Cut) { result.Size = input.Size + nextSection.Size; } break; } return(result); }
public void Test5789() { String rules = "IETR > IET | \\' R; # (1) do split ietr between t and r\r\n" + "I[EH] > I; # (2) friedrich"; Transliterator trans = Transliterator.CreateFromRules("foo", rules, Transliterator.FORWARD); String result = trans.Transliterate("BLENKDIETRICH"); assertEquals("Rule breakage", "BLENKDIET'RICH", result); }
private void loadTransliterator() { Task.Run(() => { transliterator = new Transliterator(new SqlRepository(), repository.srcLanguage.Code, "SR"); txtTransliteration.Dispatcher.Invoke( () => { txtTransliteration.Text = transliterator.Transliterate(txtWord.Text); }); }); }
public override DocumentBase GetInternational() { InternationalInvoice internationalInvoice = new InternationalInvoice(); CopyTo(internationalInvoice); internationalInvoice.operation = operation; internationalInvoice.LoadOperationDetailInfo(operation.DetailsBase); Transliterator.TransliterateProperties(internationalInvoice); return(internationalInvoice); }
private void _TestTransliterate ( [NotNull] string word, [NotNull] string expected ) { string actual = Transliterator.Transliterate(word); Assert.AreEqual(expected, actual); }
public void TestRandomStrings() { Transliterator transform = Transliterator.GetInstance("Any-Latin"); using Analyzer a = Analyzer.NewAnonymous(createComponents: (fieldName, reader) => { Tokenizer tokenizer = new MockTokenizer(reader, MockTokenizer.WHITESPACE, false); return(new TokenStreamComponents(tokenizer, new ICUTransformFilter(tokenizer, transform))); }); CheckRandomData(Random, a, 1000 * RandomMultiplier); }
/// <summary> /// Implements <see cref="Transliterator.HandleTransliterate(IReplaceable, Position, bool)"/>. /// </summary> protected override void HandleTransliterate(IReplaceable text, Position pos, bool isIncremental) { int allStart = pos.Start; int allLimit = pos.Limit; ScriptRunIterator it = new ScriptRunIterator(text, pos.ContextStart, pos.ContextLimit); while (it.Next()) { // Ignore runs in the ante context if (it.Limit <= allStart) { continue; } // Try to instantiate transliterator from it.scriptCode to // our target or target/variant Transliterator t = GetTransliterator(it.ScriptCode); if (t == null) { // We have no transliterator. Do nothing, but keep // pos.start up to date. pos.Start = it.Limit; continue; } // If the run end is before the transliteration limit, do // a non-incremental transliteration. Otherwise do an // incremental one. bool incremental = isIncremental && (it.Limit >= allLimit); pos.Start = Math.Max(allStart, it.Start); pos.Limit = Math.Min(allLimit, it.Limit); int limit = pos.Limit; t.FilteredTransliterate(text, pos, incremental); int delta = pos.Limit - limit; allLimit += delta; it.AdjustLimit(delta); // We're done if we enter the post context if (it.Limit >= allLimit) { break; } } // Restore limit. pos.start is fine where the last transliterator // left it, or at the end of the last run. pos.Limit = allLimit; }
public override void Run() { Transliterator tx = Transliterator.GetInstance("Latin-Thai"); for (int loop = 0; loop < outerInstance.iterationCount; loop++) { foreach (String s in WORDS) { count += tx.Transliterate(s).Length; } } }
/// <summary> /// Проверка возможности конвертации в SWIFT-формат: /// Пример /// :72:/ACC/ /// /PHONBEN/TEL:2352626556 /// //ICBKCNBJAHI, ANHUI, /// //PROVINCIAL BRANCH /// -} /// </summary> public override bool Check(out string result, out string message) { result = Transliterator.Transliterate ( CurrencyConversion + Environment.NewLine + "/PHONBEN/TEL:" + BeneficiaryPhone + Environment.NewLine + "//" + this.SwiftCode ); bool isChecked = (result.Length <= this.Leght) && BeneficiaryPhone.CountryPhoneCode == Enums.CountryPhoneCode.CHN; message = isChecked ? string.Empty : String.Format(CHECK_MESSAGE, this.GetType().Name, this.Leght, ""); return(isChecked); }
// TODO: add support for custom rules /// <summary>Creates a new <see cref="ICUTransformFilterFactory"/>.</summary> public ICUTransformFilterFactory(IDictionary <string, string> args) : base(args) { string id = Require(args, "id"); string direction = Get(args, "direction", new string[] { "forward", "reverse" }, "forward", false); TransliterationDirection dir = "forward".Equals(direction) ? Transliterator.Forward : Transliterator.Reverse; transliterator = Transliterator.GetInstance(id, dir); if (args.Count != 0) { throw new ArgumentException("Unknown parameters: " + args); } }
// TODO: add support for custom rules /// <summary>Creates a new <see cref="ICUTransformFilterFactory"/>.</summary> public ICUTransformFilterFactory(IDictionary <string, string> args) : base(args) { string id = Require(args, "id"); string direction = Get(args, "direction", new string[] { "forward", "reverse" }, "forward", false); TransliterationDirection dir = "forward".Equals(direction, StringComparison.Ordinal) ? Transliterator.Forward : Transliterator.Reverse; transliterator = Transliterator.GetInstance(id, dir); if (args.Count > 0) { throw new ArgumentException(string.Format(J2N.Text.StringFormatter.CurrentCulture, "Unknown parameters: {0}", args)); } }
public void Transliterate_CompoundTransliterateSameLength(int multiplier) { const string source = @"Κοντογιαννάτος, Βασίλης"; const string target = @"Kontogiannatos, Basiles"; using (var traceListener = new TestableTraceListener()) { Trace.Listeners.Add(traceListener); _trans = Transliterator.CreateInstance("Any-Latin; Latin-ASCII"); Assert.That(_trans.Transliterate(source, multiplier), Is.EqualTo(target)); Assert.That(traceListener._output.ToString(), Is.EqualTo("")); } }
public void TransliteratorFrontTest() { try { string result = Transliterator.Transliterate("Иванов Иван Иваныч, г.Москва, Солнцевский пр-т, д. 7, к.1, кв. 86"); Assert.IsTrue(true); } catch (Exception e) { Assert.Fail(e.ToString()); } }
private void CreateChildsDefaultContent(long content_root) { bool content_in_sitemap = false; bool content_export_rss = false; bool content_active = true; bool content_main = false; bool content_allow_deleted = true; bool content_allow_redirect = false; bool content_redirect_permanent = false; using (ContentRepository content_repository = new ContentRepository()) { using (TemplateRepository template_repository = new TemplateRepository()) { var current_content = content_repository.GetByID(content_root); var current_template = template_repository.GetByID(current_content.content_template); var child_templates = template_repository.GetByIDs(current_template.template_templates); foreach (var child_template in child_templates) { string content_url = child_template.template_friendly_name; long content_id = content_repository.CreateGlobalID(); string parent_url = current_content.content_url; string new_url = parent_url + "/" + Transliterator.Translite(content_url.Substring(0, (content_url.Length > 100 ? 100 : content_url.Length))); if (content_repository.Exists(new_url, CurrentUser.domain_id)) { new_url = new_url + "-" + content_id.ToString(); } bool content_publish; string user_data = GetUserData(child_template.template_fields, out content_publish); long?template_view = null; if (child_template.template_views != null) { string[] view_ids = child_template.template_views.Split(new char[] { ',' }); if (view_ids.Length > 0) { template_view = Int64.Parse(view_ids[0]); } } content_repository.Create(content_id, content_in_sitemap, content_export_rss, content_active, content_main, content_allow_deleted, child_template.template_friendly_name, template_view, new_url, current_content.content_block, child_template.template_friendly_name, null, null, child_template.template_friendly_name, child_template.template_friendly_name, null, null, content_publish ? (DateTime?)DateTime.Now.Date : (DateTime?)null, content_root, child_template.template_id, content_allow_redirect, content_redirect_permanent, null, child_template.template_friendly_name, null, null, CurrentUser.domain_id, user_data); } } } }
/// <summary> /// Проверка возможности конвертации в SWIFT-формат: не более 140 символов суммарно по всем полям /// Пример: /// :50K://Wisel Andrea /// Yun Ding str Puskin bld. zip: /// twn.Aleksandro-Nevsky RUS /// </summary> public override bool Check(out string result, out string message) { result = Transliterator.Transliterate ( "//" + Name + Environment.NewLine + Passport + Environment.NewLine + Address ); bool isChecked = (result.Length <= this.Leght); message = isChecked ? string.Empty : String.Format(CHECK_MESSAGE, this.GetType().Name, this.Leght, ""); return(isChecked); }
private void ReverseTransliteration_Click(object sender, RoutedEventArgs e) { repository.SwapSourceAndDestination(); Transliterator reverseTransliterator = new Transliterator(repository, repository.srcLanguage.Code, repository.dstLanguage.Code); RuleCollection ruleCollection = (RuleCollection)(dataGridRules.ItemsSource); RuleCollection newRuleCollection = new RuleCollection(); var rules = repository.ListRules(true); foreach (var rule in rules) { if (rule.Destination.Length == 0) { continue; } string newSource = rule.Destination, newDestination = rule.Source; if (newDestination.StartsWith("|")) { newSource = "|" + newSource; newDestination = newDestination.Substring(1); } if (newDestination.EndsWith("|")) { newSource = newSource + "|"; newDestination = newDestination.Substring(0, newDestination.Length - 1); } if (!ruleCollection.All(r => newSource != r.Source)) { continue; } newRuleCollection.Add(new TransliterationRule(newSource, newDestination, reverseTransliterator.Transliterate(rule.Examples) )); } // Show the dialog RuleCollection oldRules = (RuleCollection)(dataGridRules.ItemsSource); var reverseTransliterationWindow = new ReverseTransliteration(newRuleCollection, oldRules); reverseTransliterationWindow.ShowDialog(); repository.SwapSourceAndDestination(); }
public void TestBasicFunctionality() { CheckToken(Transliterator.GetInstance("Traditional-Simplified"), "簡化字", "简化字"); CheckToken(Transliterator.GetInstance("Katakana-Hiragana"), "ヒラガナ", "ひらがな"); CheckToken(Transliterator.GetInstance("Fullwidth-Halfwidth"), "アルアノリウ", "アルアノリウ"); CheckToken(Transliterator.GetInstance("Any-Latin"), "Αλφαβητικός Κατάλογος", "Alphabētikós Katálogos"); CheckToken(Transliterator.GetInstance("NFD; [:Nonspacing Mark:] Remove"), "Alphabētikós Katálogos", "Alphabetikos Katalogos"); CheckToken(Transliterator.GetInstance("Han-Latin"), "中国", "zhōng guó"); }
/** * Registers standard variants with the system. Called by * Transliterator during initialization. */ internal static void Register() { // false means that it is invisible Transliterator trans = new BreakTransliterator("Any-BreakInternal", null); Transliterator.RegisterInstance(trans, false); /* * Transliterator.registerFactory("Any-Break", new Transliterator.Factory() { * public Transliterator getInstance(String ID) { * return new BreakTransliterator("Any-Break", null); * } * }); */ }
/// <summary> /// Registers standard transliterators with the system. Called by /// <see cref="Transliterator"/> during initialization. Scan all current targets /// and register those that are scripts T as Any-T/V. /// </summary> internal static void Register() { IDictionary <string, ISet <string> > seen = new Dictionary <string, ISet <string> >(); // old code used set, but was dependent on order foreach (string source in Transliterator.GetAvailableSources()) { // Ignore the "Any" source if (source.Equals(ANY, StringComparison.OrdinalIgnoreCase)) { continue; } foreach (string target in Transliterator.GetAvailableTargets(source)) { // Get the script code for the target. If not a script, ignore. int targetScript = ScriptNameToCode(target); if (targetScript == UScript.InvalidCode) { continue; } ISet <string> seenVariants = seen.Get(target); if (seenVariants == null) { seen[target] = seenVariants = new HashSet <string>(); } foreach (string variant in Transliterator.GetAvailableVariants(source, target)) { // Only process each target/variant pair once if (seenVariants.Contains(variant)) { continue; } seenVariants.Add(variant); string id; id = TransliteratorIDParser.STVtoID(ANY, target, variant); AnyTransliterator trans = new AnyTransliterator(id, target, variant, targetScript); Transliterator.RegisterInstance(trans); Transliterator.RegisterSpecialInverse(target, NULL_ID, false); } } } }
private void expect(Transliterator t, String source, String expectedResult) { String result = t.Transliterate(source); expectAux(t.ID + ":String", source, result, expectedResult); ReplaceableString rsource = new ReplaceableString(source); t.Transliterate(rsource); result = rsource.ToString(); expectAux(t.ID + ":Replaceable", source, result, expectedResult); // Test keyboard (incremental) transliteration -- this result // must be the same after we finalize (see below). rsource.Replace(0, rsource.Length, ""); TransliterationPosition index = new TransliterationPosition(); StringBuffer log = new StringBuffer(); for (int i = 0; i < source.Length; ++i) { if (i != 0) { log.Append(" + "); } log.Append(source[i]).Append(" -> "); t.Transliterate(rsource, index, source[i] + ""); // Append the string buffer with a vertical bar '|' where // the committed index is. String s = rsource.ToString(); log.Append(s.Substring(0, index.Start)). // ICU4N: Checked 2nd parameter Append('|'). Append(s.Substring(index.Start)); } // As a final step in keyboard transliteration, we must call // transliterate to finish off any pending partial matches that // were waiting for more input. t.FinishTransliteration(rsource, index); result = rsource.ToString(); log.Append(" => ").Append(rsource.ToString()); expectAux(t.ID + ":Keyboard", log.ToString(), result.Equals(expectedResult), expectedResult); }
/// <summary> /// Проверка возможности конвертации в SWIFT-формат: не более 35 символов на каждое поле. /// Пример: /// :59:/9558820402002075269 /// Pei Diu(0015 0012) /// str.Str bld. zip: twn.Guangzhou C /// ID 230206197101290216 /// </summary> public override bool Check(out string result, out string message) { result = Transliterator.Transliterate ( "/" + AccountNumber + Environment.NewLine + base.FullName() + Environment.NewLine + Address ); bool isChecked = (result.Length <= this.Leght) && (this.AccountNumber.Length == 16 || this.AccountNumber.Length == 19); message = isChecked ? string.Empty : String.Format(CHECK_MESSAGE, this.GetType().Name, this.Leght, "Номер счёта в Китае должен быть равен 16 либо 19 символов"); return(isChecked); }
public void TestCommonDigits() { UnicodeSet westernDigitSet = new UnicodeSet("[0-9]"); UnicodeSet westernDigitSetAndMarks = new UnicodeSet("[[0-9][:Mn:]]"); UnicodeSet arabicDigitSet = new UnicodeSet("[[:Nd:]&[:block=Arabic:]]"); Transliterator latin = Transliterator.GetInstance("Any-Latn"); Transliterator arabic = Transliterator.GetInstance("Any-Arabic"); String westernDigits = getList(westernDigitSet); String arabicDigits = getList(arabicDigitSet); String fromArabic = latin.Transform(arabicDigits); assertContainsAll("Any-Latin transforms Arabic digits", westernDigitSetAndMarks, fromArabic); if (false) { // we don't require conversion to Arabic digits String fromLatin = arabic.Transform(westernDigits); assertContainsAll("Any-Arabic transforms Western digits", arabicDigitSet, fromLatin); } }
public ActionResult AddSeparate() { string block_friendly_name = "Разделитель"; using (BlockRepository block_repository = new BlockRepository()) { long block_id = block_repository.CreateGlobalID(); string new_block_name = Transliterator.Translite(block_friendly_name); if (block_repository.Exists(new_block_name, CurrentUser.user_domain)) { new_block_name = new_block_name + "-" + block_id.ToString(); } block_repository.Create(block_id, new_block_name, block_friendly_name, string.Empty, null, null, null, null, false, string.Empty, true, CurrentUser.user_domain); } return(RedirectToAction("Index")); }
public void Init() { this.transliterator = new Transliterator(); }
private void TransliterateButtonClick() { if (string.IsNullOrWhiteSpace(InputData)) { OutputData = string.Empty; return; } var stopwatch = new Stopwatch(); var cultureInfo = GetSelectedCultureInfo(); stopwatch.Start(); var translit = new Transliterator(cultureInfo); var output = translit.Transliterate(InputData); stopwatch.Stop(); OutputData = string.Format( "Elapsed milliseconds: {0}\nInput length: {1}\nOutput length: {2}\n\n{3}", stopwatch.ElapsedMilliseconds, InputData.Length, output.Length, output); }
public void CultureInfo_argument_null_test() { var transliterator = new Transliterator(null); transliterator.Transliterate(null); }
public void SetUp() { _t = new Transliterator(EnRu.MapJson); }