コード例 #1
0
ファイル: AskTickets.cs プロジェクト: rossspoon/bvcms
 public static AskTickets Parse(Parser parser)
 {
     var r = new AskTickets();
     parser.GetBool();
     r.Label = parser.GetLabel("No. of Items");
     return r;
 }
コード例 #2
0
ファイル: AskInstruction.cs プロジェクト: rossspoon/bvcms
 public static AskInstruction Parse(Parser parser)
 {
     var r = new AskInstruction();
     parser.GetBool();
     r.Label = parser.GetLabel("Instruction");
     return r;
 }
コード例 #3
0
ファイル: AskRequest.cs プロジェクト: rossspoon/bvcms
 public static AskRequest Parse(Parser parser)
 {
     var r = new AskRequest();
     parser.GetBool();
     r.Label = parser.GetLabel("Request");
     return r;
 }
コード例 #4
0
ファイル: AskHeader.cs プロジェクト: rossspoon/bvcms
 public static AskHeader Parse(Parser parser)
 {
     var r = new AskHeader();
     parser.GetBool();
     r.Label = parser.GetLabel("Header");
     return r;
 }
コード例 #5
0
ファイル: AskCheckboxes.cs プロジェクト: rossspoon/bvcms
 public static AskCheckboxes Parse(Parser parser)
 {
     var cb = new AskCheckboxes();
     cb.Label = parser.GetString("CheckBoxes");
     cb.Min = parser.GetInt(Parser.RegKeywords.Minimum);
     cb.Max = parser.GetInt(Parser.RegKeywords.Maximum);
     cb.Cols = parser.GetInt(Parser.RegKeywords.Columns) ?? 1;
     cb.list = new List<CheckboxItem>();
     if (parser.curr.indent == 0)
         return cb;
     var startindent = parser.curr.indent;
     while (parser.curr.indent == startindent)
     {
         var m = CheckboxItem.Parse(parser, startindent);
         cb.list.Add(m);
     }
     var q = (from i in cb.list
              where i.SmallGroup != "nocheckbox"
              where i.SmallGroup != "comment"
              group i by i.SmallGroup into g
              where g.Count() > 1
              select g.Key).ToList();
     if (q.Any())
         throw parser.GetException("Duplicate SmallGroup in Checkboxes: {0}".Fmt(string.Join(",", q)));
     return cb;
 }
コード例 #6
0
ファイル: AskSuggestedFee.cs プロジェクト: rossspoon/bvcms
 public static AskSuggestedFee Parse(Parser parser)
 {
     var r = new AskSuggestedFee();
     parser.GetBool();
     r.Label = parser.GetLabel("Suggested Amount");
     return r;
 }
コード例 #7
0
ファイル: OrgFees.cs プロジェクト: rossspoon/bvcms
 public static OrgFees Parse(Parser parser)
 {
     var ff = new OrgFees();
     parser.lineno++;
     var startindent = parser.curr.indent;
     while (parser.curr.indent == startindent)
     {
         var f = OrgFee.Parse(parser, startindent);
         ff.list.Add(f);
     }
     return ff;
 }
コード例 #8
0
ファイル: AskExtraQuestions.cs プロジェクト: rossspoon/bvcms
 public static AskExtraQuestions Parse(Parser parser)
 {
     var eq = new AskExtraQuestions();
     parser.lineno++;
     if (parser.curr.indent == 0)
         return eq;
     var startindent = parser.curr.indent;
     while (parser.curr.indent == startindent)
     {
         var q = ExtraQuestion.Parse(parser, startindent);
         eq.list.Add(q);
     }
     return eq;
 }
コード例 #9
0
ファイル: AskYesNoQuestions.cs プロジェクト: rossspoon/bvcms
 public static AskYesNoQuestions Parse(Parser parser)
 {
     var ynq = new AskYesNoQuestions();
     parser.lineno++;
     if (parser.curr.indent == 0)
         return ynq;
     var startindent = parser.curr.indent;
     while (parser.curr.indent == startindent)
     {
         var q = YesNoQuestion.Parse(parser, startindent);
         ynq.list.Add(q);
     }
     return ynq;
 }
コード例 #10
0
ファイル: AskGradeOptions.cs プロジェクト: rossspoon/bvcms
 public static AskGradeOptions Parse(Parser parser)
 {
     var go = new AskGradeOptions();
     go.Label = parser.GetString("AskGradeOptions");
     if (parser.curr.indent == 0)
         throw parser.GetException("expected indented Options");
     var startindent = parser.curr.indent;
     while (parser.curr.indent == startindent)
     {
         var option = GradeOption.Parse(parser, startindent);
         if(go.list.All(gg => gg.Code != option.Code))
             go.list.Add(option);
     }
     return go;
 }
コード例 #11
0
ファイル: TimeSlots.cs プロジェクト: rossspoon/bvcms
 public static TimeSlots Parse(Parser parser)
 {
     var ts = new TimeSlots();
     ts.TimeSlotLockDays = parser.GetNullInt();
     ts.list = new List<TimeSlot>();
     if (parser.curr.indent == 0)
         return ts;
     var startindent = parser.curr.indent;
     while (parser.curr.indent == startindent)
     {
         var s = TimeSlot.Parse(parser, startindent);
         ts.list.Add(s);
     }
     return ts;
 }
コード例 #12
0
ファイル: AskMenu.cs プロジェクト: rossspoon/bvcms
 public static AskMenu Parse(Parser parser)
 {
     var mi = new AskMenu();
     mi.Label = parser.GetString("Menu");
     mi.list = new List<MenuItem>();
     if (parser.curr.indent == 0)
         return mi;
     var startindent = parser.curr.indent;
     while (parser.curr.indent == startindent)
     {
         var m = MenuItem.Parse(parser, startindent);
         mi.list.Add(m);
     }
     var q = (from i in mi.list
              group i by i.SmallGroup into g
              where g.Count() > 1
              select g.Key).ToList();
     if (q.Any())
         throw parser.GetException("Duplicate SmallGroup in MenuItems: {0}".Fmt(string.Join(",", q)));
     return mi;
 }
コード例 #13
0
ファイル: AskDropdown.cs プロジェクト: rossspoon/bvcms
 public static AskDropdown Parse(Parser parser)
 {
     var dd = new AskDropdown();
     dd.Label = parser.GetString("Dropdown");
     dd.list = new List<DropdownItem>();
     if (parser.curr.indent == 0)
         return dd;
     var startindent = parser.curr.indent;
     while (parser.curr.indent == startindent)
     {
         var m = DropdownItem.Parse(parser, startindent);
         dd.list.Add(m);
     }
     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 parser.GetException("Duplicate SmallGroup in Dropdown: {0}".Fmt(string.Join(",", q)));
     return dd;
 }
コード例 #14
0
ファイル: Settings.cs プロジェクト: rossspoon/bvcms
        public Settings(string s, CMSDataContext Db, int OrgId)
            : this()
        {
            this.Db = Db;
            this.OrgId = OrgId;
            org = Db.LoadOrganizationById(OrgId);
            var parser = new Parser(s);

            while (parser.NextSection())
                ParseSection(parser);
            SetUniqueIds("AskDropdown");
            SetUniqueIds("AskExtraQuestions");
            SetUniqueIds("AskCheckboxes");
            SetUniqueIds("AskMenu");
            var sglist = new List<string>();
            AskItems.ForEach(a => sglist.AddRange(a.SmallGroups()));
            var q = sglist.GroupBy(mi => mi).Where(g => g.Count() > 1).Select(g => g.Key).ToList();
            if (q.Any())
                throw parser.GetException("Duplicate SmallGroup: " + string.Join(",", q));

            parser.data = null;
        }
コード例 #15
0
ファイル: AskSize.cs プロジェクト: rossspoon/bvcms
 public static AskSize Parse(Parser parser)
 {
     var r = new AskSize();
     parser.lineno++;
     r.Label = parser.GetLabel("Size");
     if (parser.curr.kw == Parser.RegKeywords.Fee)
         r.Fee = parser.GetDecimal();
     if (parser.curr.kw == Parser.RegKeywords.AllowLastYear)
         r.AllowLastYear = parser.GetBool();
     r.list = new List<Size>();
     if (parser.curr.indent == 0)
         return r;
     var startindent = parser.curr.indent;
     while (parser.curr.indent == startindent)
     {
         var m = Size.Parse(parser, startindent);
         r.list.Add(m);
     }
     var q = r.list.GroupBy(mi => mi.SmallGroup).Where(g => g.Count() > 1).Select(g => g.Key).ToList();
     if (q.Any())
         throw parser.GetException("Duplicate SmallGroup in Sizes: " + string.Join(",", q));
     return r;
 }
コード例 #16
0
ファイル: AskSize.cs プロジェクト: rossspoon/bvcms
 public static List<Size> ParseShirtSizes(Parser parser)
 {
     parser.lineno++;
     var list = new List<Size>();
     if (parser.curr.indent == 0)
         return list;
     var startindent = parser.curr.indent;
     while (parser.curr.indent == startindent)
     {
         var shirtsize = new Size();
         if (parser.curr.kw != Parser.RegKeywords.None)
             throw parser.GetException("unexpected line");
         shirtsize.Description = parser.GetLine();
         shirtsize.SmallGroup = shirtsize.Description;
         if (parser.curr.indent > startindent)
         {
             if (parser.curr.kw != Parser.RegKeywords.SmallGroup)
                 throw parser.GetException("expected SmallGroup keyword");
             shirtsize.SmallGroup = parser.GetString(shirtsize.SmallGroup);
         }
         list.Add(shirtsize);
     }
     return list;
 }
コード例 #17
0
ファイル: OrgFees.cs プロジェクト: rossspoon/bvcms
 public static OrgFee Parse(Parser parser, int startindent)
 {
     if (parser.curr.kw != Parser.RegKeywords.None)
         throw parser.GetException("expected orgid only");
     var oid = parser.GetInt();
     if (oid == 0)
     {
         parser.lineno--;
         throw parser.GetException("invalid orgid");
     }
     var f = new OrgFee { OrgId = oid };
     if (parser.curr.indent > startindent)
     {
         if (parser.curr.kw != Parser.RegKeywords.Fee)
             throw parser.GetException("expected fee");
         f.Fee = parser.GetDecimal();
     }
     return f;
 }
コード例 #18
0
ファイル: AskYesNoQuestions.cs プロジェクト: rossspoon/bvcms
 public static YesNoQuestion Parse(Parser parser, int startindent)
 {
     var q = new YesNoQuestion();
     if (parser.curr.kw != Parser.RegKeywords.None)
         throw parser.GetException("unexpected line");
     q.Question = parser.GetLine();
     if (parser.curr.indent <= startindent)
         throw parser.GetException("Expected SmallGroup indented");
     if (parser.curr.kw != Parser.RegKeywords.SmallGroup)
         throw parser.GetException("Expected SmallGroup keyword");
     if (!parser.curr.value.HasValue())
         throw parser.GetException("Expected SmallGroup value");
     q.SmallGroup = parser.GetString();
     return q;
 }
コード例 #19
0
ファイル: AskSize.cs プロジェクト: rossspoon/bvcms
 public static Size Parse(Parser parser, int startindent)
 {
     var i = new Size();
     if (parser.curr.kw != Parser.RegKeywords.None)
         throw parser.GetException("unexpected line in Size");
     i.Description = parser.GetLine();
     i.SmallGroup = i.Description;
     if (parser.curr.indent <= startindent)
         return i;
     var ind = parser.curr.indent;
     while (parser.curr.indent == ind)
     {
         if (parser.curr.kw != Parser.RegKeywords.SmallGroup)
             throw parser.GetException("unexpected line in Size");
         i.SmallGroup = parser.GetString(i.Description);
     }
     return i;
 }
コード例 #20
0
ファイル: AskGradeOptions.cs プロジェクト: rossspoon/bvcms
 public static GradeOption Parse(Parser parser, int startindent)
 {
     if (parser.curr.kw != Parser.RegKeywords.None)
         throw parser.GetException("expected description only");
     var option = new GradeOption();
     option.Description = parser.GetLine();
     if (parser.curr.indent <= startindent)
         throw parser.GetException("expected greater indent");
     if (parser.curr.kw != Parser.RegKeywords.Code)
         throw parser.GetException("expected Code");
     var code = parser.GetNullInt();
     if (!code.HasValue)
     {
         parser.lineno--;
         throw parser.GetException("expected integer code");
     }
     option.Code = code.Value;
     return option;
 }
コード例 #21
0
ファイル: Settings.cs プロジェクト: rossspoon/bvcms
 private void ParseReminder(Parser parser)
 {
     parser.lineno++;
     var startindent = parser.curr.indent;
     while (parser.curr.indent == startindent)
     {
         switch (parser.curr.kw)
         {
             case Parser.RegKeywords.Html:
                 parser.lineno++;
                 break;
             case Parser.RegKeywords.ReminderSubject:
                 ReminderSubject = parser.GetString();
                 break;
             case Parser.RegKeywords.ReminderBody:
                 ReminderBody = parser.GetString();
                 break;
             default:
                 throw parser.GetException("unexpected line in Reminder");
         }
     }
 }
コード例 #22
0
ファイル: Settings.cs プロジェクト: rossspoon/bvcms
 private void ParseAgeGroups(Parser parser)
 {
     parser.lineno++;
     if (parser.curr.indent == 0)
         return;
     var startindent = parser.curr.indent;
     while (parser.curr.indent == startindent)
     {
         var agegroup = new AgeGroup();
         if (parser.curr.kw != Parser.RegKeywords.None)
             throw parser.GetException("unexpected line");
         agegroup.SmallGroup = parser.GetLine();
         var m = parser.agerange.Match(agegroup.SmallGroup);
         if (!m.Success)
         {
             parser.lineno--;
             throw parser.GetException("expected age range like 0-12");
         }
         agegroup.StartAge = m.Groups["start"].Value.ToInt();
         agegroup.EndAge = m.Groups["end"].Value.ToInt();
         if (parser.curr.indent <= startindent)
             throw parser.GetException("expected either indented SmallGroup or Fee");
         var ind = parser.curr.indent;
         while (parser.curr.indent == ind)
         {
             switch (parser.curr.kw)
             {
                 case Parser.RegKeywords.SmallGroup:
                     agegroup.SmallGroup = parser.GetString(agegroup.SmallGroup);
                     break;
                 case Parser.RegKeywords.Fee:
                     agegroup.Fee = parser.GetDecimal();
                     break;
                 default:
                     throw parser.GetException("unexpected line");
             }
         }
         AgeGroups.Add(agegroup);
     }
 }
コード例 #23
0
ファイル: Ask.cs プロジェクト: rossspoon/bvcms
 public static Ask ParseAsk(Parser parser)
 {
     var r = new Ask(parser.curr.kw.ToString());
     parser.GetBool();
     return r;
 }
コード例 #24
0
ファイル: Settings.cs プロジェクト: rossspoon/bvcms
 private void ParseTerms(Parser parser)
 {
     Terms = parser.GetString();
     if (Terms.HasValue() || parser.curr.indent == 0)
         return;
     var startindent = parser.curr.indent;
     while (parser.curr.indent == startindent)
     {
         switch (parser.curr.kw)
         {
             case Parser.RegKeywords.Html:
                 parser.lineno++;
                 break;
             case Parser.RegKeywords.Body:
                 Terms = parser.GetString();
                 break;
             default:
                 throw parser.GetException("unexpected line");
         }
     }
 }
コード例 #25
0
ファイル: Settings.cs プロジェクト: rossspoon/bvcms
        void ParseSection(Parser parser)
        {
            switch (parser.curr.kw)
            {
                case Parser.RegKeywords.AskParents:
                case Parser.RegKeywords.AskDoctor:
                case Parser.RegKeywords.AskInsurance:
                case Parser.RegKeywords.AskEmContact:
                case Parser.RegKeywords.AskAllergies:
                case Parser.RegKeywords.AskChurch:
                case Parser.RegKeywords.AskTylenolEtc:
                case Parser.RegKeywords.AskCoaching:
                    AskItems.Add(Ask.ParseAsk(parser));
                    break;
                case Parser.RegKeywords.AskSuggestedFee:
                    AskItems.Add(AskSuggestedFee.Parse(parser));
                    break;
                case Parser.RegKeywords.AskTickets:
                    AskItems.Add(AskTickets.Parse(parser));
                    break;
                case Parser.RegKeywords.AskRequest:
                    AskItems.Add(AskRequest.Parse(parser));
                    break;
                case Parser.RegKeywords.AskHeader:
                    AskItems.Add(AskHeader.Parse(parser));
                    break;
                case Parser.RegKeywords.AskInstruction:
                    AskItems.Add(AskInstruction.Parse(parser));
                    break;
                case Parser.RegKeywords.Dropdown:
                case Parser.RegKeywords.AskOptions:
                case Parser.RegKeywords.ExtraOptions:
                case Parser.RegKeywords.Dropdown1:
                case Parser.RegKeywords.Dropdown2:
                case Parser.RegKeywords.Dropdown3:
                    AskItems.Add(AskDropdown.Parse(parser));
                    break;
                case Parser.RegKeywords.MenuItems:
                    AskItems.Add(AskMenu.Parse(parser));
                    break;
                case Parser.RegKeywords.ExtraQuestions:
                    AskItems.Add(AskExtraQuestions.Parse(parser));
                    break;
                case Parser.RegKeywords.Checkboxes:
                case Parser.RegKeywords.Checkboxes2:
                    AskItems.Add(AskCheckboxes.Parse(parser));
                    break;
                case Parser.RegKeywords.YesNoQuestions:
                    AskItems.Add(AskYesNoQuestions.Parse(parser));
                    break;
                case Parser.RegKeywords.AskGradeOptions:
                case Parser.RegKeywords.GradeOptions:
                    AskItems.Add(AskGradeOptions.Parse(parser));
                    break;
                case Parser.RegKeywords.AskSize:
                    AskItems.Add(AskSize.Parse(parser));
                    break;

                case Parser.RegKeywords.MemberOnly:
                    MemberOnly = parser.GetBool();
                    break;
                case Parser.RegKeywords.AskMedical:
                    parser.GetBool();
                    break;
                case Parser.RegKeywords.AskDonation:
                    AskDonation = parser.GetBool();
                    break;
                case Parser.RegKeywords.NotReqDOB:
                    NotReqDOB = parser.GetBool();
                    break;
                case Parser.RegKeywords.NotReqAddr:
                    NotReqAddr = parser.GetBool();
                    break;
                case Parser.RegKeywords.NotReqPhone:
                    NotReqPhone = parser.GetBool();
                    break;
                case Parser.RegKeywords.NotReqGender:
                    NotReqGender = parser.GetBool();
                    break;
                case Parser.RegKeywords.NotReqMarital:
                    NotReqMarital = parser.GetBool();
                    break;
                case Parser.RegKeywords.NotReqZip:
                    NotReqZip = parser.GetBool();
                    break;
                case Parser.RegKeywords.DonationFundId:
                    DonationFundId = parser.GetNullInt();
                    break;
                case Parser.RegKeywords.AccountingCode:
                    AccountingCode = parser.GetString();
                    break;
                case Parser.RegKeywords.DonationLabel:
                    DonationLabel = parser.GetString();
                    break;
                case Parser.RegKeywords.ExtraValueFeeName:
                    ExtraValueFeeName = parser.GetString();
                    break;
                case Parser.RegKeywords.GroupToJoin:
                    GroupToJoin = parser.GetString();
                    break;
                case Parser.RegKeywords.GiveOrgMembAccess:
                    GiveOrgMembAccess = parser.GetBool();
                    break;
                case Parser.RegKeywords.LinkGroupsFromOrgs:
                    LinkGroupsFromOrgs = (from i in parser.curr.value.Split(',')
                                          where i.ToInt() > 0
                                          select i.ToInt()).ToList();
                    parser.lineno++;
                    break;
                case Parser.RegKeywords.ValidateOrgs:
                    ValidateOrgs = parser.curr.value;
                    parser.lineno++;
                    break;
                case Parser.RegKeywords.Terms:
                    ParseTerms(parser);
                    break;
                case Parser.RegKeywords.Instructions:
                    ParseInstructions(parser);
                    break;
                case Parser.RegKeywords.Confirmation:
                    ParseConfirmation(parser);
                    break;
                case Parser.RegKeywords.Reminder:
                    ParseReminder(parser);
                    break;
                case Parser.RegKeywords.AgeGroups:
                    ParseAgeGroups(parser);
                    break;
                case Parser.RegKeywords.OrgMemberFees:
                case Parser.RegKeywords.OrgFees:
                    OrgFees = OrgFees.Parse(parser);
                    break;
                case Parser.RegKeywords.VoteTags:
                    ParseVoteTags(parser);
                    break;
                case Parser.RegKeywords.Title:
                    Title = parser.GetString();
                    break;
                case Parser.RegKeywords.Shell:
                    Shell = parser.GetString();
                    break;
                case Parser.RegKeywords.Fee:
                    Fee = parser.GetDecimal();
                    break;

            // BEGIN support for old Registration Documents
                case Parser.RegKeywords.AskGrade:
                    parser.GetBool();
                    parser.GetLabel("Grade");
                    break;

                case Parser.RegKeywords.AskShirtSize:
                    parser.GetBool();
                    asksize = new AskSize();
                    AskItems.Add(asksize);
                    break;
                case Parser.RegKeywords.ShirtSizes:
                    asksize.list = AskSize.ParseShirtSizes(parser);
                    break;
                case Parser.RegKeywords.AllowLastYearShirt:
                    asksize.AllowLastYear = parser.GetBool();
                    break;
                case Parser.RegKeywords.ShirtFee:
                    if (asksize == null)
                    {
                        asksize = new AskSize();
                        AskItems.Add(asksize);
                    }
                    asksize.Fee = parser.GetDecimal();
                    break;
            // END support for old Registration Documents

                case Parser.RegKeywords.Deposit:
                    Deposit = parser.GetDecimal();
                    break;
                case Parser.RegKeywords.ExtraFee:
                    ExtraFee = parser.GetDecimal();
                    break;
                case Parser.RegKeywords.MaximumFee:
                    MaximumFee = parser.GetDecimal();
                    break;
                case Parser.RegKeywords.AllowOnlyOne:
                    AllowOnlyOne = parser.GetBool();
                    break;
                case Parser.RegKeywords.OtherFeesAdded:
                case Parser.RegKeywords.OtherFeesAddedToOrgFee:
                    OtherFeesAddedToOrgFee = parser.GetBool();
                    break;
                case Parser.RegKeywords.IncludeOtherFeesWithDeposit:
                    IncludeOtherFeesWithDeposit = parser.GetBool();
                    break;
                case Parser.RegKeywords.ApplyMaxToOtherFees:
                    ApplyMaxToOtherFees = parser.GetBool();
                    break;
                case Parser.RegKeywords.AllowReRegister:
                    AllowReRegister = parser.GetBool();
                    break;
                case Parser.RegKeywords.TargetExtraValues:
                    TargetExtraValues = parser.GetBool();
                    break;
                case Parser.RegKeywords.TimeSlotLockDays:
                    TimeSlotLockDays = parser.GetNullInt();
                    break;
                case Parser.RegKeywords.TimeSlots:
                    TimeSlots = TimeSlots.Parse(parser);
                    if (TimeSlotLockDays.HasValue)
                        TimeSlots.TimeSlotLockDays = TimeSlotLockDays;
                    break;
            }
        }
コード例 #26
0
ファイル: TimeSlots.cs プロジェクト: rossspoon/bvcms
 public static TimeSlot Parse(Parser parser, int startindent)
 {
     var timeslot = new TimeSlot();
     if (parser.curr.kw != Parser.RegKeywords.None)
         throw parser.GetException("unexpected line in TimeSlots");
     timeslot.Description = parser.GetLine();
     if (parser.curr.indent <= startindent)
         return timeslot;
     var ind = parser.curr.indent;
     while (parser.curr.indent == ind)
     {
         switch (parser.curr.kw)
         {
             case Parser.RegKeywords.Time:
                 timeslot.Time = parser.GetTime();
                 break;
             case Parser.RegKeywords.DayOfWeek:
                 timeslot.DayOfWeek = parser.GetInt();
                 break;
             case Parser.RegKeywords.Limit:
                 timeslot.Limit = parser.GetInt();
                 break;
             default:
                 throw parser.GetException("unexpected line in TimeSlot");
         }
     }
     return timeslot;
 }
コード例 #27
0
ファイル: AskExtraQuestions.cs プロジェクト: rossspoon/bvcms
 public static ExtraQuestion Parse(Parser parser, int startindent)
 {
     if (parser.curr.kw != Parser.RegKeywords.None)
         throw parser.GetException("unexpected line");
     return new ExtraQuestion { Question = parser.GetLine() };
 }
コード例 #28
0
ファイル: Settings.cs プロジェクト: rossspoon/bvcms
 private void ParseInstructions(Parser parser)
 {
     parser.lineno++;
     if (parser.curr.indent == 0)
         return;
     var startindent = parser.curr.indent;
     while (parser.curr.indent == startindent)
     {
         switch (parser.curr.kw)
         {
             case Parser.RegKeywords.Html:
                 parser.lineno++;
                 break;
             case Parser.RegKeywords.Select:
                 InstructionSelect = parser.GetString();
                 break;
             case Parser.RegKeywords.Find:
                 InstructionFind = parser.GetString();
                 break;
             case Parser.RegKeywords.Options:
                 InstructionOptions = parser.GetString();
                 break;
             case Parser.RegKeywords.Special:
                 InstructionSpecial = parser.GetString();
                 break;
             case Parser.RegKeywords.Login:
                 InstructionLogin = parser.GetString();
                 break;
             case Parser.RegKeywords.Submit:
                 InstructionSubmit = parser.GetString();
                 break;
             case Parser.RegKeywords.Sorry:
                 InstructionSorry = parser.GetString();
                 break;
             case Parser.RegKeywords.Body:
                 InstructionAll = parser.GetString();
                 break;
             default:
                 throw parser.GetException("unexpected line");
         }
     }
 }
コード例 #29
0
ファイル: Settings.cs プロジェクト: rossspoon/bvcms
 private void ParseVoteTags(Parser parser)
 {
     parser.lineno++;
     if (parser.curr.indent == 0)
         return;
     var startindent = parser.curr.indent;
     while (parser.curr.indent == startindent)
     {
         if (parser.curr.kw != Parser.RegKeywords.Display)
             throw parser.GetException("unexpected line");
         parser.GetString();
         if (parser.curr.indent <= startindent)
             throw parser.GetException("expected indented Message,Confirm, or SmallGroup");
         var ind = parser.curr.indent;
         while (parser.curr.indent == ind)
         {
             switch (parser.curr.kw)
             {
                 case Parser.RegKeywords.Message:
                     parser.GetString();
                     break;
                 case Parser.RegKeywords.Confirm:
                     parser.GetBool();
                     break;
                 case Parser.RegKeywords.SmallGroup:
                     parser.GetString();
                     break;
                 default:
                     throw parser.GetException("unexpected line");
             }
         }
     }
 }
コード例 #30
0
ファイル: AskDropdown.cs プロジェクト: rossspoon/bvcms
 public static DropdownItem Parse(Parser parser, int startindent)
 {
     var i = new DropdownItem();
     if (parser.curr.kw != Parser.RegKeywords.None)
         throw parser.GetException("unexpected line in Dropdown");
     i.Description = parser.GetLine();
     i.SmallGroup = i.Description;
     if (parser.curr.indent <= startindent)
         return i;
     var ind = parser.curr.indent;
     while (parser.curr.indent == ind)
     {
         switch (parser.curr.kw)
         {
             case Parser.RegKeywords.SmallGroup:
                 i.SmallGroup = parser.GetString(i.Description);
                 break;
             case Parser.RegKeywords.Fee:
                 i.Fee = parser.GetDecimal();
                 break;
             case Parser.RegKeywords.Limit:
                 i.Limit = parser.GetNullInt();
                 break;
             case Parser.RegKeywords.Time:
                 i.MeetingTime = parser.GetDateTime();
                 break;
             default:
                 throw parser.GetException("unexpected line in DropdownItem");
         }
     }
     return i;
 }