Пример #1
0
            private bool TryParseSub(string text)
            {
                MonitorBlockParser  mbp = Parser;
                MonitorBlockBuilder mbb = Builder;
                IMonitorBlock       monb;

                int i = 0;

                while (i < text.Length)
                {
                    try
                    {
                        i = mbp.Parse(text, i);
                    }
                    catch (MissingCharsException ex)
                    {
                        Echo("Parse Error : Missing characters (" + String.Join <char>(",", ex.Chars) + ")");
                        return(false);
                    }
                    catch (InvalidCharsException ex)
                    {
                        Echo("Parse Error : Invalid characters (" + String.Join <char>(",", ex.Chars) + ")");
                        return(false);
                    }
                    catch (Exception ex)
                    {
                        Echo("Parse Error : Caught exception (" + ex.Message + ":" + ex.ToString() + ")");
                        return(false);
                    }

                    monb = mbb.Build(mbp);
                    //if (DEBUG)
                    //{
                    //    if (monb != null)
                    //    {
                    //        Echo("Build monitor block: {");
                    //        Echo($"  BlockName={mbp.BlockName}");
                    //        Echo($"  TargetText={mbp.TargetText}");
                    //        Echo($"  OptionsText={mbp.OptionsText}");
                    //        Echo($"  ContentsText={mbp.ContentsText}");
                    //        Echo("}");
                    //    }
                    //}

                    if (monb != null)
                    {
                        if ((monb is TextBlock) && ((monb as TextBlock).Text == ""))
                        {
                            // skip "return only text block"
                        }
                        else
                        {
                            MonitorBlocks.Add(monb);
                        }
                    }
                }

                return(true);
            }
Пример #2
0
            protected StationMonitorCore(MyGridProgram program)
            {
                Program = program;

                MBParser  = new MonitorBlockParser(program);
                MBBuilder = new MonitorBlockBuilder(program)
                {
                    ["Test"] = (MonitorBlockParser parser) => { return(new TestBlock(Program, parser.Options, parser.ContentsText ?? "")); },
                    ["Text"] = (MonitorBlockParser parser) => { return(new TextBlock(Program, parser.Options, parser.ContentsText ?? "")); }
                };
            }
Пример #3
0
 public MonitorBlockBase(MonitorBlockParser parser) : this(parser.Program, parser.Target, parser.Options, parser.Contents)
 {
 }
Пример #4
0
 public MonitorBlock(MonitorBlockParser parser) : base(parser)
 {
 }
Пример #5
0
 public Monitor(MyGridProgram program, MonitorBlockParser parser, MonitorBlockBuilder builder)
 {
     Program = program;
     Parser  = parser;
     Builder = builder;
 }