public static Unit FindUnit(string v, UnitsFactors fact) { if (fact != UnitsFactors.No) { foreach (Unit u in Units) { if (u.BaseUnit != null && u.Factor == fact) { if ((u.BaseUnit.FullnameCyr == v || u.BaseUnit.FullnameLat == v || u.BaseUnit.NameCyr == v) || u.BaseUnit.NameLat == v) { return(u); } } } } foreach (Unit u in Units) { if ((u.FullnameCyr == v || u.FullnameLat == v || u.NameCyr == v) || u.NameLat == v) { return(u); } } return(null); }
static Unit _addFactor(UnitsFactors f, Unit u0, string abbrCyr, string abbrLat, string namesRu, string namesUa, string namesEn) { string prefCyr = null; string prefLat = null; string prefRu = null; string prefUa = null; string prefEn = null; double mult = (double)1; switch (f) { case UnitsFactors.Centi: prefCyr = "С"; prefLat = "C"; prefRu = "САНТИ"; prefUa = "САНТИ"; prefEn = "CENTI"; mult = 0.1; break; case UnitsFactors.Deci: prefCyr = "Д"; prefLat = "D"; prefRu = "ДЕЦИ"; prefUa = "ДЕЦИ"; prefEn = "DECI"; mult = 0.01; break; case UnitsFactors.Giga: prefCyr = "Г"; prefLat = "G"; prefRu = "ГИГА"; prefUa = "ГІГА"; prefEn = "GIGA"; mult = 1000000000; break; case UnitsFactors.Kilo: prefCyr = "К"; prefLat = "K"; prefRu = "КИЛО"; prefUa = "КІЛО"; prefEn = "KILO"; mult = 1000; break; case UnitsFactors.Mega: prefCyr = "М"; prefLat = "M"; prefRu = "МЕГА"; prefUa = "МЕГА"; prefEn = "MEGA"; mult = 1000000; break; case UnitsFactors.Micro: prefCyr = "МК"; prefLat = "MK"; prefRu = "МИКРО"; prefUa = "МІКРО"; prefEn = "MICRO"; mult = 0.0001; break; case UnitsFactors.Milli: prefCyr = "М"; prefLat = "M"; prefRu = "МИЛЛИ"; prefUa = "МІЛІ"; prefEn = "MILLI"; mult = 0.001; break; case UnitsFactors.Nano: prefCyr = "Н"; prefLat = "N"; prefRu = "НАНО"; prefUa = "НАНО"; prefEn = "NANO"; mult = 0.0000000001; break; case UnitsFactors.Pico: prefCyr = "П"; prefLat = "P"; prefRu = "ПИКО"; prefUa = "ПІКО"; prefEn = "PICO"; mult = 0.0000000000001; break; case UnitsFactors.Tera: prefCyr = "Т"; prefLat = "T"; prefRu = "ТЕРА"; prefUa = "ТЕРА"; prefEn = "TERA"; mult = 1000000000000; break; } Unit u = new Unit(prefCyr.ToLower() + u0.NameCyr, prefLat.ToLower() + u0.NameLat, prefRu.ToLower() + u0.FullnameCyr, prefEn.ToLower() + u0.FullnameLat) { Factor = f, BaseMultiplier = mult, BaseUnit = u0, Kind = u0.Kind, Keywords = u0.Keywords }; if (f == UnitsFactors.Mega || f == UnitsFactors.Tera || f == UnitsFactors.Giga) { u.NameCyr = prefCyr + u0.NameCyr; u.NameLat = prefLat + u0.NameLat; } Units.Add(u); string[] nams = namesRu.Split(';'); Pullenti.Ner.Core.Termin t = new Pullenti.Ner.Core.Termin(prefRu + nams[0]) { Tag = u }; for (int i = 1; i < nams.Length; i++) { if (!string.IsNullOrEmpty(nams[i])) { t.AddVariant(prefRu + nams[i], false); } } foreach (string n in nams) { if (!string.IsNullOrEmpty(n)) { t.AddVariant(prefCyr + n, false); } } foreach (string n in namesUa.Split(';')) { if (!string.IsNullOrEmpty(n)) { t.AddVariant(prefUa + n, false); t.AddVariant(prefCyr + n, false); } } foreach (string n in namesEn.Split(';')) { if (!string.IsNullOrEmpty(n)) { t.AddVariant(prefEn + n, false); t.AddVariant(prefLat + n, false); } } foreach (string n in abbrCyr.Split(';')) { if (!string.IsNullOrEmpty(n)) { t.AddAbridge(prefCyr + n); } } foreach (string n in abbrLat.Split(';')) { if (!string.IsNullOrEmpty(n)) { t.AddAbridge(prefLat + n); } } Termins.Add(t); return(u); }