private IRRuleToken ProcessRRulePart(string rrulePart) { var rruleKeyValue = SplitRRulePart(rrulePart); if (rruleKeyValue.Length != 2) { throw new RRuleTokenizeException( $"RRule part {rrulePart} contains more than key/value"); } var rruleKey = rruleKeyValue[0]; var rruleValue = rruleKeyValue[1]; var rruleToken = ERRuleToken.SearchRRuleToken(rruleKey); if (rruleToken == null) { throw new RRuleTokenizeException($"RRule key {rruleKey} not found"); } var valueInstance = ParseValue(rruleToken, rruleValue); if (valueInstance == null) { throw new RRuleTokenizeException($"RRule value {rruleValue} is not applicable for key {rruleKey}"); } return(rruleToken.GetTokenInstance(valueInstance)); }
private IRRuleToken ProcessRRulePart(string rrulePart) { var rruleKeyValue = SplitRRulePart(rrulePart); if (rruleKeyValue.Length != 2) { throw new RRuleTokenizeException(string.Format("RRule part {0} contains more than key/value", rrulePart)); } string rruleKey = rruleKeyValue[0]; string rruleValue = rruleKeyValue[1]; ERRuleToken rruleToken = ERRuleToken.SearchRRuleToken(rruleKey); if (rruleToken == null) { throw new RRuleTokenizeException(string.Format("RRule key {0} not found", rruleKey)); } object valueInstance = ParseValue(rruleToken, rruleValue); if (valueInstance == null) { throw new RRuleTokenizeException(string.Format("RRule value {0} is not applicable for key {1}", rruleValue, rruleKey)); } return(rruleToken.GetTokenInstance(valueInstance)); }
public object ParseValue(ERRuleToken rRuleToken, string value) { try { if (rRuleToken == ERRuleToken.Freq) { return(GetFreqValue(value)); } if (rRuleToken == ERRuleToken.Until) { return(GetUntilValue(value)); } if (rRuleToken == ERRuleToken.Count) { return(ParseInteger(value)); } if (rRuleToken == ERRuleToken.Interval) { return(ParseInteger(value)); } if (rRuleToken == ERRuleToken.ByDay) { return(GetByDay(value)); } if (rRuleToken == ERRuleToken.ByMonth) { return(ParseInteger(value)); } if (rRuleToken == ERRuleToken.ByMonthDay) { return(ParseInteger(value)); } if (rRuleToken == ERRuleToken.BySetPos) { return(ParseInteger(value)); } if (rRuleToken == ERRuleToken.Start) { return(GetUntilValue(value)); } throw new System.Exception($"Unknown token {rRuleToken.Name.ToUpperInvariant()}"); } catch (RRuleTokenizeException error) { throw new RRuleTokenizeException($"Value {value} is invalid for key {rRuleToken.Name.ToUpperInvariant()}: {error.Message}"); } catch (System.Exception error) { throw new RRuleTokenizeException($"Value {value} is invalid for key {rRuleToken.Name.ToUpperInvariant()}: {error.Message}"); } }
private object ParseValue(ERRuleToken rruleToken, string payload) { return(_valueParser.ParseValue(rruleToken, payload)); }