/// <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); }
/// <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); }
/// <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); }
/// <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); }
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")); }
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); }
/// <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); }
/// <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); }
/// <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); }
public void SaveToValuableTable(Expression valuable, UnitExpression unit) { ValuablesTable.Add(valuable, unit); }
/// <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; }
/// <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)); }
/// <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)); }