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); }
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 ?? "")); } }; }
public MonitorBlockBase(MonitorBlockParser parser) : this(parser.Program, parser.Target, parser.Options, parser.Contents) { }
public MonitorBlock(MonitorBlockParser parser) : base(parser) { }
public Monitor(MyGridProgram program, MonitorBlockParser parser, MonitorBlockBuilder builder) { Program = program; Parser = parser; Builder = builder; }