private string RenderNumber(Interpreter interpreter, INumberVariable number) { if (number.Min != number.Max) { var min = interpreter.Locale.FormatNumber(number.Min, Format); var max = interpreter.Locale.FormatNumber(number.Min, Format); var spaceBefore = number.Separator == '&'; var spaceAfter = number.Separator == ',' || number.Separator == '&'; return($"{min}{(spaceBefore ? " " : "")}{number.Separator}{(spaceAfter ? " " : "")}{max}"); } else { return(interpreter.Locale.FormatNumber(number.Min, Format)); } }
public override void EvaluateOverride(Interpreter interpreter, Citation citation) { if (Variable == null) { throw new System.Exception(); } var value = citation[Variable]; var text = value switch { ITextVariable textVariable => textVariable.Value, INumberVariable numberVariable => RenderNumber(interpreter, numberVariable), _ => null }; if (text != null) { interpreter.Push(text, this); } }