/// <summary>
 /// Visits a <see cref="UnitExpression" />.
 /// </summary>
 /// <param name="unitExpression">The unit expression.</param>
 /// <param name="notationParameters">The notation parameters.</param>
 /// <param name="notationVariables">The notation variables.</param>
 public void Unit(
     UnitExpression unitExpression,
     NotationParameters notationParameters,
     NotationVariables notationVariables)
 {
     notationParameters.StringBuilder.Append(unitExpression.Unit.Notation);
 }
Exemplo n.º 2
0
 /// <summary>
 /// Units the specified unit expression.
 /// </summary>
 /// <param name="unitExpression">The unit expression.</param>
 /// <param name="rewritingParameters">The rewriting parameters.</param>
 /// <param name="currentResult">The current result.</param>
 public void Unit(
     UnitExpression unitExpression,
     RewritingParameters rewritingParameters,
     Reference <Expression> currentResult)
 {
     currentResult.Value = rewritingParameters.FlatRepresentationConsumer.GetResultingExpression(unitExpression, rewritingParameters.ReduceByBaseUnit);
 }
Exemplo n.º 3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MethodUnit" /> class.
 /// </summary>
 /// <param name="prefix">The prefix.</param>
 /// <param name="toBase">To base.</param>
 /// <param name="fromBase">From base.</param>
 /// <param name="notation">The notation.</param>
 /// <param name="expression">The expression.</param>
 public MethodUnit(
     Prefix prefix,
     Func <double, double> toBase,
     Func <double, double> fromBase,
     string notation,
     Expression expression)
 {
     this.prefix         = prefix ?? Prefix.None;
     this.toBase         = toBase;
     this.fromBase       = fromBase;
     this.notation       = notation;
     this.expression     = expression;
     this.BaseUnit       = new DerivedBaseUnit(expression);
     this.unitExpression = new UnitExpression(this);
 }
Exemplo n.º 4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MethodUnit" /> class.
 /// </summary>
 /// <param name="prefix">The prefix.</param>
 /// <param name="toBase">To base.</param>
 /// <param name="fromBase">From base.</param>
 /// <param name="notation">The notation.</param>
 /// <param name="expression">The expression.</param>
 public MethodUnit(
     Prefix prefix,
     Func<double, double> toBase,
     Func<double, double> fromBase,
     string notation,
     Expression expression)
 {
     this.prefix = prefix ?? Prefix.None;
     this.toBase = toBase;
     this.fromBase = fromBase;
     this.notation = notation;
     this.expression = expression;
     this.BaseUnit = new DerivedBaseUnit(expression);
     this.unitExpression = new UnitExpression(this);
 }
        public void UnitExpressionTest()
        {
            PseudonymMapper pseudonymMap = new PseudonymMapper();
            RomanConverter  converter    = new RomanConverter();
            MetalMapper     metalMap     = new MetalMapper();

            pseudonymMap.AddPseudonym("GLOB", "I");
            pseudonymMap.AddPseudonym("pish", "X");
            ExpressionValidationHelper helper     = new ExpressionValidationHelper(pseudonymMap, metalMap);
            UnitExpression             expression = new UnitExpression(pseudonymMap, metalMap, converter, helper);

            expression.Execute("pish glob Iron is 110 Credits");
            Assert.True(metalMap.Exists("Iron"));
            Assert.Equal <double>(10, metalMap.GetPriceByMetal("Iron"));
            expression.Execute("glob pish Iron is 6300 Credits");
            Assert.Equal <double>(700, metalMap.GetPriceByMetal("Iron"));
        }
        public void UnitExpressionTest()
        {
            AliasMapper    aliasMap       = new AliasMapper();
            RomanConverter converter      = new RomanConverter();
            CommodityIndex commodityIndex = new CommodityIndex();

            aliasMap.AddAlias("glob", "C");
            aliasMap.AddAlias("pish", "X");
            ExpressionValidationHelper helper     = new ExpressionValidationHelper(aliasMap, commodityIndex);
            UnitExpression             expression = new UnitExpression(commodityIndex, aliasMap, converter, helper);

            expression.Execute("pish glob Iron is 7020 Credits");
            Assert.IsTrue(commodityIndex.Exists("Iron"));
            Assert.AreEqual <double>(commodityIndex.GetPriceByCommodity("Iron"), 78);
            expression.Execute("pish glob Iron is 6300 Credits");
            Assert.AreEqual <double>(commodityIndex.GetPriceByCommodity("Iron"), 70);
        }
Exemplo n.º 7
0
        public void UnitExpressionTest()
        {
            AliasMapper    AliasMap  = new AliasMapper();
            RomanConverter converter = new RomanConverter();
            MetalMapper    metalMap  = new MetalMapper();

            AliasMap.AddAlias("glob", "I");
            AliasMap.AddAlias("pish", "X");
            ExpressionValidationHelper helper     = new ExpressionValidationHelper(AliasMap, metalMap);
            UnitExpression             expression = new UnitExpression(AliasMap, metalMap, converter, helper);

            expression.Execute("glob pish Iron is 900 Credits");
            Assert.True(metalMap.Exists("Iron"));
            Assert.Equal <double>(100, metalMap.GetPriceByMetal("Iron"));

            expression.Execute("pish pish Iron is 400 Credits");
            Assert.Equal <double>(20, metalMap.GetPriceByMetal("Iron"));
        }
Exemplo n.º 8
0
        public void UnitExpressionTest()
        {
            AliasMapper    aliasMap       = new AliasMapper();
            RomanConverter converter      = new RomanConverter();
            CommodityIndex commodityIndex = new CommodityIndex();

            aliasMap.AddAlias("glob", "I");
            aliasMap.AddAlias("prok", "V");
            aliasMap.AddAlias("pish", "X");
            aliasMap.AddAlias("tegj", "L");

            ExpressionValidationHelper helper     = new ExpressionValidationHelper(aliasMap, commodityIndex);
            UnitExpression             expression = new UnitExpression(commodityIndex, aliasMap, converter, helper);

            expression.Execute("glob glob silver is 34 Credits");
            Assert.True(commodityIndex.Exists("silver"));
            Assert.Equal <double>(17, commodityIndex.GetPriceByCommodity("silver"));
            expression.Execute("glob prok iron is 400 Credits");
            Assert.Equal <double>(100, commodityIndex.GetPriceByCommodity("iron"));
        }
        /// <summary>
        /// Adds the specified unit expression.
        /// </summary>
        /// <param name="unitExpression">The unit expression.</param>
        /// <param name="reduceUsingBaseUnits">If set to <c>true</c> reduction will be done using base units.</param>
        /// <param name="exponent">The exponent.</param>
        public void Add(UnitExpression unitExpression, bool reduceUsingBaseUnits, double exponent)
        {
            var unit = unitExpression.Unit;
            var unitNotation = unit.Notation;
            if (reduceUsingBaseUnits)
            {
                unitNotation = unit.BaseUnit.Notation;
            }

            UnitFlatIdentifierRepresentation flatExpressionRepresentation;
            if (this.unitFlatIdentifierRepresentations.TryGetValue(unitNotation, out flatExpressionRepresentation))
            {
                this.OnUnitReduced(flatExpressionRepresentation.UnitExpression, unitExpression);
                unitExpression = flatExpressionRepresentation.UnitExpression;
                exponent += flatExpressionRepresentation.Exponent;
            }

            this.unitFlatIdentifierRepresentations[unitNotation] = new UnitFlatIdentifierRepresentation(
                unitExpression,
                exponent);
        }
Exemplo n.º 10
0
        /// <summary>
        /// Adds the specified unit expression.
        /// </summary>
        /// <param name="unitExpression">The unit expression.</param>
        /// <param name="reduceUsingBaseUnits">If set to <c>true</c> reduction will be done using base units.</param>
        /// <param name="exponent">The exponent.</param>
        public void Add(UnitExpression unitExpression, bool reduceUsingBaseUnits, double exponent)
        {
            var unit         = unitExpression.Unit;
            var unitNotation = unit.Notation;

            if (reduceUsingBaseUnits)
            {
                unitNotation = unit.BaseUnit.Notation;
            }

            UnitFlatIdentifierRepresentation flatExpressionRepresentation;

            if (this.unitFlatIdentifierRepresentations.TryGetValue(unitNotation, out flatExpressionRepresentation))
            {
                this.OnUnitReduced(flatExpressionRepresentation.UnitExpression, unitExpression);
                unitExpression = flatExpressionRepresentation.UnitExpression;
                exponent      += flatExpressionRepresentation.Exponent;
            }

            this.unitFlatIdentifierRepresentations[unitNotation] = new UnitFlatIdentifierRepresentation(
                unitExpression,
                exponent);
        }
Exemplo n.º 11
0
 /// <summary>
 /// Called when a unit has been reduced.
 /// </summary>
 /// <param name="targetUnitExpression">The target unit expression.</param>
 /// <param name="reducedUnitExpression">The reduced unit expression.</param>
 protected override void OnUnitReduced(UnitExpression targetUnitExpression, UnitExpression reducedUnitExpression)
 {
     base.OnUnitReduced(targetUnitExpression, reducedUnitExpression);
     this.reductions.AddLast(new Reduction(targetUnitExpression.Unit, reducedUnitExpression.Unit));
     this.HasReductions = true;
 }
 /// <summary>
 /// Called when a unit has been reduced.
 /// </summary>
 /// <param name="targetUnitExpression">The target unit expression.</param>
 /// <param name="reducedUnitExpression">The reduced unit expression.</param>
 protected override void OnUnitReduced(UnitExpression targetUnitExpression, UnitExpression reducedUnitExpression)
 {
     base.OnUnitReduced(targetUnitExpression, reducedUnitExpression);
     this.reductions.AddLast(new Reduction(targetUnitExpression.Unit, reducedUnitExpression.Unit));
     this.HasReductions = true;
 }
 /// <summary>
 /// Visits a <see cref="UnitExpression" />.
 /// </summary>
 /// <param name="unitExpression">The unit expression.</param>
 /// <param name="conversionParameters">The conversion parameters.</param>
 /// <param name="conversionVariables">The conversion variables.</param>
 public void Unit(UnitExpression unitExpression, ConversionParameters conversionParameters, ConversionVariables conversionVariables)
 {
     conversionParameters.FlatRepresentationBuilder.Add(unitExpression, conversionParameters.ReduceUsingBaseUnits, conversionVariables.Exponent);
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="PrefixedBaseUnit" /> class.
 /// </summary>
 /// <param name="prefix">The prefix.</param>
 /// <param name="notation">The notation.</param>
 public PrefixedBaseUnit(Prefix prefix, string notation)
 {
     this.prefix         = prefix;
     this.notation       = notation;
     this.unitExpression = new UnitExpression(this);
 }
Exemplo n.º 15
0
 /// <summary>
 /// Visits a <see cref="UnitExpression" />.
 /// </summary>
 /// <param name="unitExpression">The unit expression.</param>
 /// <param name="_">The ignored.</param>
 /// <param name="currentResult">The current result.</param>
 public void Unit(UnitExpression unitExpression, ˍ _, Reference <Expression> currentResult)
 {
     currentResult.Value = unitExpression.Unit.BaseUnit.GetExpression();
 }
 /// <summary>
 /// Called when units are reduced.
 /// </summary>
 /// <param name="targetUnitExpression">The target unit expression.</param>
 /// <param name="reducedUnitExpression">The reduced unit expression.</param>
 protected virtual void OnUnitReduced(UnitExpression targetUnitExpression, UnitExpression reducedUnitExpression)
 {
 }
 /// <summary>
 /// Gets the resulting expression.
 /// </summary>
 /// <param name="unitExpression">The unit expression.</param>
 /// <param name="reduceByBaseUnit">If set to <c>true</c> reduction will be done using base units.</param>
 /// <returns>An <see cref="Expression"/>.</returns>
 public Expression GetResultingExpression(UnitExpression unitExpression, bool reduceByBaseUnit)
 {
     var unitNotation = reduceByBaseUnit ? unitExpression.Unit.BaseUnit.Notation : unitExpression.Unit.Notation;
     return this.GetResultingExpression(unitNotation);
 }
 /// <summary>
 /// Visits a <see cref="UnitExpression"/>.
 /// </summary>
 /// <param name="unitExpression">The unit expression.</param>
 /// <param name="value">The value.</param>
 /// <param name="currentResult">The current result.</param>
 public void Unit(UnitExpression unitExpression, double value, Reference <double> currentResult)
 {
     currentResult.Value = unitExpression.Unit.ToBase(value);
 }
Exemplo n.º 19
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Unit" /> class.
 /// </summary>
 /// <param name="prefix">The prefix.</param>
 /// <param name="notation">The notation.</param>
 public Unit(Prefix prefix, string notation)
 {
     this.prefix = prefix ?? Prefix.None;
     this.notation = notation;
     this.unitExpression = new UnitExpression(this);
 }
Exemplo n.º 20
0
 /// <summary>
 /// Called when units are reduced.
 /// </summary>
 /// <param name="targetUnitExpression">The target unit expression.</param>
 /// <param name="reducedUnitExpression">The reduced unit expression.</param>
 protected virtual void OnUnitReduced(UnitExpression targetUnitExpression, UnitExpression reducedUnitExpression)
 {
 }
Exemplo n.º 21
0
 public void SaveToValuableTable(Expression valuable, UnitExpression unit)
 {
     ValuablesTable.Add(valuable, unit);
 }
Exemplo n.º 22
0
 /// <summary>
 /// Visits a <see cref="UnitExpression"/>.
 /// </summary>
 /// <param name="unitExpression">The unit expression.</param>
 /// <param name="value">The value.</param>
 /// <param name="currentResult">The current result.</param>
 public void Unit(UnitExpression unitExpression, double value, Reference <double> currentResult)
 {
     currentResult.Value = unitExpression.Unit.PrefixFactor;
 }
Exemplo n.º 23
0
 /// <summary>
 /// Initializes a new instance of the <see cref="UnitFlatIdentifierRepresentation"/> class.
 /// </summary>
 /// <param name="unitExpression">The unit expression.</param>
 /// <param name="exponent">The exponent.</param>
 public UnitFlatIdentifierRepresentation(UnitExpression unitExpression, double exponent)
 {
     this.Exponent       = exponent;
     this.UnitExpression = unitExpression;
 }
 /// <summary>
 /// Adds a <see cref="UnitExpression"/> via the mi tag.
 /// </summary>
 /// <param name="unitExpression">The unit expression.</param>
 /// <param name="multiplicationSign">The multiplication sign.</param>
 /// <param name="xElement">The x element.</param>
 public void Unit(UnitExpression unitExpression, MultiplicationSign multiplicationSign, XElement xElement)
 {
     xElement.Add(new XElement(MathML.Mi, unitExpression.Unit, MathML.MathVariantNormal, MathML.ClassUnit));
 }
Exemplo n.º 25
0
        /// <summary>
        /// Gets the resulting expression.
        /// </summary>
        /// <param name="unitExpression">The unit expression.</param>
        /// <param name="reduceByBaseUnit">If set to <c>true</c> reduction will be done using base units.</param>
        /// <returns>An <see cref="Expression"/>.</returns>
        public Expression GetResultingExpression(UnitExpression unitExpression, bool reduceByBaseUnit)
        {
            var unitNotation = reduceByBaseUnit ? unitExpression.Unit.BaseUnit.Notation : unitExpression.Unit.Notation;

            return(this.GetResultingExpression(unitNotation));
        }
Exemplo n.º 26
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PrefixedBaseUnit" /> class.
 /// </summary>
 /// <param name="prefix">The prefix.</param>
 /// <param name="notation">The notation.</param>
 public PrefixedBaseUnit(Prefix prefix, string notation)
 {
     this.prefix = prefix;
     this.notation = notation;
     this.unitExpression = new UnitExpression(this);
 }
Exemplo n.º 27
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Unit" /> class.
 /// </summary>
 /// <param name="prefix">The prefix.</param>
 /// <param name="notation">The notation.</param>
 public Unit(Prefix prefix, string notation)
 {
     this.prefix         = prefix ?? Prefix.None;
     this.notation       = notation;
     this.unitExpression = new UnitExpression(this);
 }