private static void HandleCreateOperatorCode(object sender, OperatorHints.CreateOperatorCodeEventArgs e) { if (!e.ShouldITryToCreate(nameof(Def_Power_Length_LinearPowerLoss))) { return; } e.Result.Comment = e.Input.DebugIs; var input = e.Input; var result = e.Result; if (input.Is <UnitA, UnitB, UnitC>("/")) { e.SetHandled(); result.SetComment(); result.Comment += " " + nameof(Def_Power_Length_LinearPowerLoss); result.ResultUnit = $"new {ValueC}Unit({ValueA.FirstLower()}.Unit, {ValueB.FirstLower()}.Unit)"; return; } if (input.Is <UnitC, UnitB, UnitA>("*")) { e.SetHandled(); result.SetComment(); result.Comment += " " + nameof(Def_Power_Length_LinearPowerLoss); result.ConvertRight($"{ValueC.FirstLower()}.Unit.DenominatorUnit"); result.ResultUnit = $"{ValueC.FirstLower()}.Unit.CounterUnit"; } }
private static void HandleCreateOperatorCode(object sender, OperatorHints.CreateOperatorCodeEventArgs e) { if (!e.ShouldITryToCreate(nameof(Def_LinearPowerLoss_Length_Irradiance))) { return; } e.Result.Comment = e.Input.DebugIs; var input = e.Input; var result = e.Result; if (input.Is <UnitA, UnitB, UnitC>("/")) { e.SetHandled(); result.SetComment(); result.AddVariable("lengthUnit", "linearPowerLoss.Unit.DenominatorUnit"); result.AddVariable("areaUnit", "lengthUnit.GetAreaUnit()"); result.AddVariable("powerUnit", $"{ValueA.FirstLower()}.Unit.CounterUnit"); result.Comment += " " + nameof(Def_LinearPowerLoss_Length_Irradiance); result.ConvertRight("lengthUnit"); result.WithResultUnit <UnitCUnit>("powerUnit", "areaUnit"); return; } if (input.Is <UnitA, UnitC, UnitB>("/")) { e.SetHandled(); result.SetComment(); result.AddVariable("resultUnit", "linearPowerLoss.Unit.DenominatorUnit"); result.AddVariable("areaUnit", "resultUnit.GetAreaUnit()"); // result.AddVariable<IrradianceUnit>("irradianceUnit", "irradiance.Unit.CounterUnit", "areaUnit"); result.Comment += " " + nameof(Def_LinearPowerLoss_Length_Irradiance); result.ConvertRight_WithDenominatorUnit("areaUnit"); result.ResultUnit = "resultUnit"; return; } if (input.Is <UnitC, UnitB, UnitA>("*")) { e.SetHandled(); result.SetComment(); result.Comment += " " + nameof(Def_LinearPowerLoss_Length_Irradiance); result.ConvertRight($"{ValueC.FirstLower()}.Unit.DenominatorUnit.GetLengthUnit()"); result.WithResultUnit <LinearPowerLossUnit>("irradiance.Unit.CounterUnit", "lengthConverted.Unit"); } if (input.Is <UnitB, UnitC, UnitA>("*")) { e.SetHandled(); result.SetComment(); result.Comment += " " + nameof(Def_LinearPowerLoss_Length_Irradiance); result.AddVariable("areaUnit", "length.Unit.GetAreaUnit()"); result.ConvertRight_WithDenominatorUnit("areaUnit"); result.WithResultUnit <LinearPowerLossUnit>($"{ValueC.FirstLower()}.Unit.CounterUnit", $"{ValueB.FirstLower()}.Unit"); } }