public bool AddFromString(BaseUtils.StringParser p, FromMode fm, Dictionary <string, string> altops = null) { Dictionary <string, string> newvars = ReadFromString(p, fm, altops); if (newvars != null) { Add(newvars); } return(newvars != null); }
public ConditionVariables(string s, FromMode fm) //v=1,v=2 no brackets { FromString(s, fm); }
private Dictionary <string, string> ReadFromString(BaseUtils.StringParser p, FromMode fm, Dictionary <string, string> altops = null) { Dictionary <string, string> newvars = new Dictionary <string, string>(); while (!p.IsEOL) { string varname = p.NextQuotedWord("= "); if (varname == null) { return(null); } if (altops != null) // with extended ops, the ops are returned in the altops function, one per variable found { // used only with let and set.. if (varname.EndsWith("$+")) { varname = varname.Substring(0, varname.Length - 2); altops[varname] = "$+="; } else if (varname.EndsWith("$")) { varname = varname.Substring(0, varname.Length - 1); altops[varname] = "$="; } else if (varname.EndsWith("+")) { varname = varname.Substring(0, varname.Length - 1); altops[varname] = "+="; } else { altops[varname] = "="; // varname is good, it ended with a = or space, default is = bool dollar = p.IsCharMoveOn('$'); // check for varname space $+ bool add = p.IsCharMoveOn('+'); if (dollar && add) { altops[varname] = "$+="; } else if (dollar) { altops[varname] = "$="; } else if (add) { altops[varname] = "+="; } } } if (!p.IsCharMoveOn('=')) { return(null); } string value = (fm == FromMode.OnePerLine) ? p.NextQuotedWordOrLine() : p.NextQuotedWord((fm == FromMode.MultiEntryComma) ? ", " : ",) "); if (value == null) { return(null); } newvars[varname] = value; if (fm == FromMode.MultiEntryCommaBracketEnds && p.PeekChar() == ')') // bracket, stop don't remove.. outer bit wants to check its there.. { return(newvars); } else if (fm == FromMode.OnePerLine && !p.IsEOL) // single entry, must be eol now { return(null); } else if (!p.IsEOL && !p.IsCharMoveOn(',')) // if not EOL, but not comma, incorrectly formed list { return(null); } } return(newvars); }
public bool FromString(string s, FromMode fm) // string, not bracketed. { BaseUtils.StringParser p = new BaseUtils.StringParser(s); return(FromString(p, fm)); }