Пример #1
0
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }
            if (this.GetType() != obj.GetType())
            {
                return(false);
            }
            Nugget other = (Nugget)obj;

            // Compare non-array members.
            if (MsgId != other.MsgId || // NB: the operator==() on string objects handles null value on either side just fine.
                Comment != other.Comment)
            {
                return(false);
            }
            // Compare arrays.
            if ((FormatItems == null) != (other.FormatItems == null) ||
                (FormatItems != null && !FormatItems.SequenceEqual(other.FormatItems)))
            {
                return(false);
            }
            return(true);
        }
        public static async Task SendEmailAsync_MessageHasExpectedFormatItems()
        {
            object[] formatItems = { 1, "2" };
            var      service     = new MockEmailService();
            var      template    = new EmailMessageTemplate(new EmailAddressTemplate("*****@*****.**"));

            await service.SendEmailAsync(template, new EmailAddress("*****@*****.**"), formatItems);

            service.SentMessage.HtmlBody !.FormatItems.Should().BeEquivalentTo(formatItems);
            service.SentMessage.TextBody !.FormatItems.Should().BeEquivalentTo(formatItems);
        }
Пример #3
0
        private static int GetValidArgumentsCount(FormatItems formatItems)
        {
            if (formatItems == null)
            return -1;

              IWithArguments withArguments = formatItems.ParentMethodCall;
              if (withArguments == null)
            return -1;

              int argsCount = withArguments.Args.Count;
              if (argsCount > 0)
              {
            if (PlugIn1.IsPrimitiveExpressionArg(withArguments.Args[0]))
              return argsCount;
            else
              return argsCount - 1; // skip IFormatter argument...
              }
              return -1;
        }
Пример #4
0
 public FormatItem(FormatItems parent, int id, IExpression argument)
 {
     Argument = argument;
       Parent = parent;
       Id = id;
 }
Пример #5
0
 public int CalculateCustomFormatScore(List <CustomFormat> formats)
 {
     return(FormatItems.Where(x => formats.Contains(x.Format)).Sum(x => x.Score));
 }
Пример #6
0
        /// <summary>
        /// Parses the text in the specified PrimitiveExpression, collecting and returning a dictionary of FormatItems, indexed by the format item number.
        /// </summary>
        public static FormatItems GetFormatItems(IPrimitiveExpression primitiveExpression)
        {
            FormatItems formatItems = new FormatItems();
              formatItems.ParentMethodCall = GetValidMethodCallExpression(primitiveExpression.Parent) as IWithArguments;
              int argumentCount = formatItems.ParentMethodCall.Args.Count;
              formatItems.PrimitiveExpression = primitiveExpression;
              if (primitiveExpression == null)
            return formatItems;
              string text = primitiveExpression.Value as string;
              if (String.IsNullOrEmpty(text))
            return formatItems;
              bool lastCharWasOpenBrace = false;
              bool insideFormatItem = false;
              bool collectingFormatItemNumber = false;
              string numberStr = String.Empty;
              int lastOpenBraceOffset = 0;
              int length = 0;
              for (int i = 0; i < text.Length; i++)
              {
            char thisChar = text[i];
            if (thisChar == '{')
            {
              lastCharWasOpenBrace = !lastCharWasOpenBrace;
              lastOpenBraceOffset = i;
            }
            else if (thisChar == '}')
            {
              if (insideFormatItem)
              {
            insideFormatItem = false;
            if (numberStr != String.Empty)
            {
              int number = int.Parse(numberStr);
              const int INT_CountForBraceDelimeters = 2;
              int argumentIndex = number + 1;
              IExpression argument = null;
              if (argumentIndex < argumentCount)
                argument = formatItems.ParentMethodCall.Args[argumentIndex];

              if (!formatItems.HasFormatItem(number))
                formatItems.AddFormatItem(number, argument);
              formatItems[number].AddPosition(lastOpenBraceOffset, length + INT_CountForBraceDelimeters);
            }
              }
            }
            else if (lastCharWasOpenBrace)
            {
              length = 0;
              lastCharWasOpenBrace = false;
              insideFormatItem = true;
              collectingFormatItemNumber = true;
              numberStr = String.Empty;
              if (char.IsDigit(thisChar))
            numberStr = thisChar.ToString();		// First digit...
            }
            else if (collectingFormatItemNumber)
            {
              if (char.IsDigit(thisChar))
            numberStr += thisChar.ToString();		// Subsequent digit...
              else
            collectingFormatItemNumber = false;
            }
            length++;
              }
              return formatItems;
        }