public static IEnumerable <FormatEvent> CreateCommandEvent(string format = null)
        {
            if (format == null || string.IsNullOrWhiteSpace(format))
            {
                yield break;
            }

            if (CasingHelper.Check(out var cmd1, format) && (cmd1 == 'U' || cmd1 == 'w'))
            {
                yield return(new FormatEvent(cmd1, 10000, CasingHelper.Format()(cmd1)));
            }

            if (PaddingHelper.Check(out var cmd2, out var width, format) && (cmd2 == 'r' || cmd2 == 'l'))
            {
                yield return(new FormatEvent(cmd2, 10001, PaddingHelper.Format()(cmd2)(width)));
            }

            if (CallerInfoHelper.Check(out var cmd3, format) && !string.IsNullOrWhiteSpace(cmd3))
            {
                yield return(new FormatEvent(cmd3, 9998, CallerInfoHelper.Format()(cmd3)));
            }

            if (EventInfoHelper.Check(out var cmd4, format) && !string.IsNullOrWhiteSpace(cmd4))
            {
                yield return(new FormatEvent(cmd4, 9999, EventInfoHelper.Format()(cmd4)));
            }
        }
Exemplo n.º 2
0
        public void ZeroTest()
        {
            var original = new byte[]
            {
                66, 17, 81, 164, 89, 250, 234, 222,
                61, 36, 113, 21, 249, 74, 237, 174,
                66, 49, 129, 36, 9, 90, 250, 190,
                77, 20, 81, 165, 89, 250, 237, 238
            };

            var expected = new byte[]
            {
                66, 17, 81, 164, 89, 250, 234, 222,
                61, 36, 113, 21, 249, 74, 237, 174,
                66, 49, 129, 36, 9, 90, 250, 190,
                77, 20, 81, 165, 89, 250, 237, 238,
                0, 0, 0, 0, 0, 0, 0, 0,
                0, 0, 0, 0, 0, 0, 0, 0,
                0, 0, 0, 0, 0, 0, 0, 0,
                0, 0, 0, 0, 0, 0, 0, 0
            };

            var paddedOriginal = PaddingHelper.AddZero(original, 64);

            Assert.AreEqual(paddedOriginal.Length, 64);
            CollectionAssert.AreEqual(expected, paddedOriginal);

            var cleared = PaddingHelper.RemoveZero(paddedOriginal);

            Assert.AreEqual(cleared.Length, 32);
            CollectionAssert.AreEqual(original, cleared);
        }
        public static IEnumerable <Func <object, IFormatProvider, object> > CreateCommandFunc(string format = null)
        {
            if (format == null || string.IsNullOrWhiteSpace(format))
            {
                yield break;
            }

            if (CallerInfoHelper.Check(out var cmd3, format) && !string.IsNullOrWhiteSpace(cmd3))
            {
                yield return(CallerInfoHelper.Format()(cmd3));
            }

            if (EventInfoHelper.Check(out var cmd4, format) && !string.IsNullOrWhiteSpace(cmd4))
            {
                yield return(EventInfoHelper.Format()(cmd4));
            }

            if (CasingHelper.Check(out var cmd1, format) && (cmd1 == 'U' || cmd1 == 'w'))
            {
                yield return(CasingHelper.Format()(cmd1));
            }

            if (PaddingHelper.Check(out var cmd2, out var width, format) && (cmd2 == 'r' || cmd2 == 'l'))
            {
                yield return(PaddingHelper.Format()(cmd2)(width));
            }
        }
Exemplo n.º 4
0
        public override CompileResult Execute(IEnumerable <FunctionArgument> arguments, ParsingContext context)
        {
            ValidateArguments(arguments, 1);
            var number  = ArgToInt(arguments, 0);
            var padding = default(int?);

            if (arguments.Count() > 1)
            {
                padding = ArgToInt(arguments, 1);
                if (padding.Value < 0 ^ padding.Value > 10)
                {
                    return(CreateResult(eErrorType.Num));
                }
            }
            var result = Convert.ToString(number, 2);

            if (padding.HasValue)
            {
                result = PaddingHelper.EnsureLength(result, padding.Value, "0");
            }
            else
            {
                result = PaddingHelper.EnsureMinLength(result, 10);
            }
            return(CreateResult(result, DataType.String));
        }
Exemplo n.º 5
0
        /// <summary>
        /// Create command event
        /// </summary>
        /// <param name="format"></param>
        /// <returns></returns>
        public static IEnumerable <FormatEvent> CreateCommandEvent(string format = null)
        {
            if (format == null || string.IsNullOrWhiteSpace(format))
            {
                yield break;
            }

            if (CasingHelper.Check(out var cmd1, format) && (cmd1 == 'U' || cmd1 == 'w'))
            {
                yield return(new FormatEvent(cmd1, 10000, CasingHelper.Format()(cmd1)));
            }

            if (PaddingHelper.Check(out var cmd2, out var width, format) && (cmd2 == 'r' || cmd2 == 'l'))
            {
                yield return(new FormatEvent(cmd2, 10001, PaddingHelper.Format()(cmd2)(width)));
            }

            if (JsonHelper.Check(format))
            {
                yield return(new FormatEvent('j', 99999, JsonHelper.Format));
            }

            foreach (var provider in CustomFormatProviderManager.Get())
            {
                if (provider != null)
                {
                    var additionalFormats = provider.Invoke(format);
                    foreach (var f in additionalFormats)
                    {
                        yield return(f);
                    }
                }
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// Create command func
        /// </summary>
        /// <param name="format"></param>
        /// <param name="customFormatProvider"></param>
        /// <returns></returns>
        public static IEnumerable <Func <object, IFormatProvider, object> > CreateCommandFunc(
            string format = null,
            Func <string, IEnumerable <Func <object, IFormatProvider, object> > > customFormatProvider = null)
        {
            if (format == null || string.IsNullOrWhiteSpace(format))
            {
                yield break;
            }

            if (CasingHelper.Check(out var cmd1, format) && (cmd1 == 'U' || cmd1 == 'w'))
            {
                yield return(CasingHelper.Format()(cmd1));
            }

            if (PaddingHelper.Check(out var cmd2, out var width, format) && (cmd2 == 'r' || cmd2 == 'l'))
            {
                yield return(PaddingHelper.Format()(cmd2)(width));
            }

            if (JsonHelper.Check(format))
            {
                yield return(JsonHelper.Format);
            }

            if (customFormatProvider != null)
            {
                var additionalFormatFuncs = customFormatProvider.Invoke(format);
                foreach (var f in additionalFormatFuncs)
                {
                    yield return(f);
                }
            }
        }
Exemplo n.º 7
0
        public override CompileResult Execute(IEnumerable <FunctionArgument> arguments, ParsingContext context)
        {
            ValidateArguments(arguments, 1);
            var number  = ArgToString(arguments, 0);
            var padding = default(int?);

            if (arguments.Count() > 1)
            {
                padding = ArgToInt(arguments, 1);
                if (padding.Value < 0 ^ padding.Value > 10)
                {
                    return(CreateResult(eErrorType.Num));
                }
            }
            if (number.Length > 10)
            {
                return(CreateResult(eErrorType.Num));
            }
            var octStr = string.Empty;

            if (number.Length < 10)
            {
                var n = Convert.ToInt32(number, 2);
                octStr = Convert.ToString(n, 8);
            }
            else
            {
                if (!BinaryHelper.TryParseBinaryToDecimal(number, 2, out int result))
                {
                    return(CreateResult(eErrorType.Num));
                }
                octStr = Convert.ToString(result, 8);
            }
            if (padding.HasValue)
            {
                octStr = PaddingHelper.EnsureLength(octStr, 10, "0");
            }
            return(CreateResult(octStr, DataType.String));
        }
Exemplo n.º 8
0
        public override CompileResult Execute(IEnumerable <FunctionArgument> arguments, ParsingContext context)
        {
            ValidateArguments(arguments, 1);
            var number       = ArgToString(arguments, 0);
            var formatString = "X";

            if (arguments.Count() > 1)
            {
                var padding = ArgToInt(arguments, 1);
                if (padding < 0 ^ padding > 10)
                {
                    return(CreateResult(eErrorType.Num));
                }
                formatString += padding;
            }
            if (number.Length > 10)
            {
                return(CreateResult(eErrorType.Num));
            }
            if (number.Length < 10)
            {
                var n = Convert.ToInt32(number, 2);
                return(CreateResult(n.ToString(formatString), DataType.Decimal));
            }
            else
            {
                if (!BinaryHelper.TryParseBinaryToDecimal(number, 2, out int result))
                {
                    return(CreateResult(eErrorType.Num));
                }
                var hexStr = result.ToString(formatString);
                if (result < 0)
                {
                    hexStr = PaddingHelper.EnsureLength(hexStr, 10, "F");
                }
                return(CreateResult(hexStr, DataType.String));
            }
        }