/* * dbMango * * Copyright 2025 Deutsche Bank AG * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Rms.Risk.Mango.Language.Ast; public class AstExpressionNumber : AstExpression { public AstExpressionNumber(string value) { var d = double.Parse(value); if ( d == Math.Floor(d) ) { LongValue = (long)d; IsLong = true; } else DoubleValue = d; } public AstExpressionNumber(long value) { LongValue = value; IsLong = true; } public AstExpressionNumber(double value) { DoubleValue = value; } public bool IsLong { get;} public long LongValue { get; } public double DoubleValue { get; } public override void Append(StringBuilder sb, int indent) { if (IsLong) sb.Append(LongValue); else sb.Append(DoubleValue); } public override JsonNode? AsJson() { if (IsLong) return JsonValue.Create(LongValue); else return JsonValue.Create(DoubleValue); } }