/// <exception cref="CommandSyntaxException"></exception>
        public override float Parse(IStringReader reader)
        {
            var start  = reader.Cursor;
            var result = reader.ReadFloat();

            if (result < _minimum)
            {
                reader.Cursor = start;
                throw CommandSyntaxException.BuiltInExceptions.FloatTooLow().CreateWithContext(reader, result, _minimum);
            }
            if (result > _maximum)
            {
                reader.Cursor = start;
                throw CommandSyntaxException.BuiltInExceptions.FloatTooHigh().CreateWithContext(reader, result, _maximum);
            }
            return(result);
        }
Exemple #2
0
        public ReadResults Parse(IStringReader reader, DispatcherResources resources, out float result)
        {
            int         start       = reader.GetCursor();
            ReadResults readResults = reader.ReadFloat(out result);

            if (readResults.Successful)
            {
                if (result < Minimum)
                {
                    reader.SetCursor(start);
                    return(ReadResults.Failure(CommandError.FloatTooLow(result, Minimum).WithContext(reader)));
                }

                if (result > Maximum)
                {
                    reader.SetCursor(start);
                    return(ReadResults.Failure(CommandError.FloatTooHigh(result, Maximum).WithContext(reader)));
                }
            }

            return(readResults);
        }