Exemplo n.º 1
0
        private static ILocValue FormatToString(CultureInfo culture, LocArgs args)
        {
            var arg = args.Args[0];
            var fmt = ((LocValueString)args.Args[1]).Value;

            var obj = arg.Value;

            if (obj is IFormattable formattable)
            {
                return(new LocValueString(formattable.ToString(fmt, culture)));
            }

            return(new LocValueString(obj?.ToString() ?? ""));
        }
Exemplo n.º 2
0
        private static ILocValue FormatUnitsGeneric(LocArgs args, string mode)
        {
            const int maxPlaces = 5; // Matches amount in _lib.ftl
            var       pressure  = ((LocValueNumber)args.Args[0]).Value;

            var places = 0;

            while (pressure > 1000 && places < maxPlaces)
            {
                pressure /= 1000;
                places   += 1;
            }

            return(new LocValueString(Loc.GetString(mode, ("divided", pressure), ("places", places))));
        }
Exemplo n.º 3
0
        private static ILocValue FormatUnits(LocArgs args)
        {
            if (!Units.Types.TryGetValue(((LocValueString)args.Args[0]).Value, out var ut))
            {
                throw new ArgumentException($"Unknown unit type {((LocValueString) args.Args[0]).Value}");
            }

            var fmtstr = ((LocValueString)args.Args[1]).Value;

            double max   = Double.NegativeInfinity;
            var    iargs = new double[args.Args.Count - 1];

            for (var i = 2; i < args.Args.Count; i++)
            {
                var n = ((LocValueNumber)args.Args[i]).Value;
                if (n > max)
                {
                    max = n;
                }

                iargs[i - 2] = n;
            }

            if (!ut !.TryGetUnit(max, out var mu))
            {
                throw new ArgumentException("Unit out of range for type");
            }

            var fargs = new object[iargs.Length];

            for (var i = 0; i < iargs.Length; i++)
            {
                fargs[i] = iargs[i] * mu.Factor;
            }

            fargs[^ 1] = Loc.GetString($"units-{mu.Unit.ToLower()}");
Exemplo n.º 4
0
 private static ILocValue FormatPowerJoules(LocArgs args)
 {
     return(FormatUnitsGeneric(args, "zzzz-fmt-power-joules"));
 }
Exemplo n.º 5
0
 private static ILocValue FormatPressure(LocArgs args)
 {
     return(FormatUnitsGeneric(args, "zzzz-fmt-pressure"));
 }
Exemplo n.º 6
0
        private static ILocValue FormatLoc(LocArgs args)
        {
            var id = ((LocValueString)args.Args[0]).Value;

            return(new LocValueString(Loc.GetString(id)));
        }