예제 #1
0
        protected UnitName <S, T> GetUnitName(string data)
        {
            UnitPrefix <S, T>   prefix   = null;
            UnitBaseName <S, T> baseName = null;

            for (int index = 0; index < data.Length; index++)
            {
                var stringPrefix = data.Substring(0, index);
                var stringSuffix = data.Substring(index, data.Length - index);
                try
                {
                    prefix   = ConstantProvider.GetPrefixBySymbol(stringPrefix);
                    baseName = ConstantProvider.GetUnitBySymbol(stringSuffix);
                    if (prefix != null && baseName != null)
                    {
                        break;
                    }
                }
                catch (UnitNotFoundException)
                {
                }
            }
            if (prefix == null || baseName == null)
            {
                throw new UnitParserException(string.Format("Can't find any prefix+unit called [{0}].", data));
            }
            return(new UnitName <S, T>(prefix, baseName: baseName));
        }
예제 #2
0
        public void AsStringTest()
        {
            var unitBaseName = new UnitBaseName <ScalarFloat, float> {
                Name = "metre", AsciiSymbol = "m", Factor = new ScalarFloat(1), Symbol = "m"
            };
            var unitPrefix = new UnitPrefix <ScalarFloat, float> {
                Name = "kilo", Symbol = "k", AsciiSymbol = "k", Factor = new ScalarFloat(1000), Invert = false
            };

            var unitName = new UnitName <ScalarFloat, float>(unitPrefix, unitBaseName);

            Assert.AreEqual("km", unitName.AsString);
        }
예제 #3
0
 public UnitNamePower(UnitPrefix <S, T> prefix, UnitBaseName <S, T> baseName) : this(prefix, baseName, 1)
 {
 }
예제 #4
0
 public UnitNamePower(UnitPrefix <S, T> prefix, UnitBaseName <S, T> baseName, long power) : this(new UnitName <S, T>(prefix, baseName), power)
 {
 }
예제 #5
0
 protected void AddReference(UnitPrefix <S, T> unitPrefix, UnitBaseName <S, T> unitBaseName)
 {
     AddReference(new UnitNamePower <S, T>(unitPrefix, unitBaseName));
 }
예제 #6
0
 public UnitBaseName <S, T> Add(UnitBaseName <S, T> unitBaseName)
 {
     UnitByName[unitBaseName.Name]     = unitBaseName;
     UnitBySymbol[unitBaseName.Symbol] = unitBaseName;
     return(unitBaseName);
 }