Exemple #1
0
 public void Output(StringBuilder sb, AskDropdown ask)
 {
     if (ask.list == null || ask.list.Count == 0)
     {
         return;
     }
     AddValueNoCk(0, sb, "Dropdown", ask.Label);
     foreach (var i in ask.list)
     {
         AddValueCk(1, sb, i.Description);
         AddValueCk(2, sb, "SmallGroup", i.SmallGroup);
         AddValueCk(2, sb, "Fee", i.Fee);
         AddValueCk(2, sb, "Limit", i.Limit);
         AddValueCk(2, sb, "Time", i.MeetingTime.ToString2("s"));
     }
     sb.AppendLine();
 }
Exemple #2
0
        public AskDropdown ParseAskDropdown()
        {
            var dd = new AskDropdown();

            dd.Label = GetString("Dropdown");
            dd.list  = new List <AskDropdown.DropdownItem>();
            if (curr.indent == 0)
            {
                return(dd);
            }
            var startindent = curr.indent;

            while (curr.indent == startindent)
            {
                var i = new AskDropdown.DropdownItem();
                if (curr.kw != Parser.RegKeywords.None)
                {
                    throw GetException("unexpected line in Dropdown");
                }
                i.Description = GetLine();
                i.SmallGroup  = i.Description;
                if (curr.indent <= startindent)
                {
                    dd.list.Add(i);
                    continue;
                }
                var ind = curr.indent;
                while (curr.indent == ind)
                {
                    switch (curr.kw)
                    {
                    case RegKeywords.SmallGroup:
                        i.SmallGroup = GetString(i.Description);
                        break;

                    case RegKeywords.Fee:
                        i.Fee = GetDecimal();
                        break;

                    case RegKeywords.Limit:
                        i.Limit = GetNullInt();
                        break;

                    case RegKeywords.Time:
                        i.MeetingTime = GetDateTime();
                        break;

                    default:
                        throw GetException("unexpected line in DropdownItem");
                    }
                }
                dd.list.Add(i);
            }
            var q = (from i in dd.list
                     group i by i.SmallGroup into g
                     where g.Count() > 1
                     select g.Key).ToList();

            if (q.Any())
            {
                throw GetException($"Duplicate SmallGroup in Dropdown: {string.Join(",", q)}");
            }
            return(dd);
        }