Beispiel #1
0
 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);
 }
Beispiel #2
0
        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);
        }