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))); } }
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)); } }
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)); }
/// <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); } } } }
/// <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); } } }
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)); }
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)); } }