protected override void Invoke(object parameter) { if (SetterElement != null) { SetterElement.SetValue(Property, Value); } else { AssociatedObject.SetValue(Property, Value); } }
/// <summary>Apply settings to a linked Grammar.</summary> /// <returns></returns> private static bool ApplySettingsFromGrammar(Parser parser, CodeDocument doc, ParserStatus status) { bool ok = true; foreach (CodeElement SetterElement in doc.Codes(MetaParser.Setter_____)) { CodeElement elementId = SetterElement.Codes().First(); Rule rule = parser.Rules.FirstOrDefault(r => r.Name == elementId.Value); if (rule == null) { status.AddBuildError(() => MessageRes.itc26, elementId, elementId.Value); ok = false; continue; } foreach (CodeElement assignElement in SetterElement.Codes(MetaParser.Assignment_)) { List <CodeElement> assignNodes = assignElement.Codes().ToList(); CodeElement propName = assignNodes[0]; string propValue = assignNodes.Count > 1 ? assignNodes[1].Value : string.Empty; switch (propName.Value) { case MetaParser.Trust______: rule.Trust = propValue != "false"; break; case MetaParser.Collapse___: rule.Collapse = propValue != "false"; break; case MetaParser.Comment____: rule.Comment = propValue != "false"; break; default: // set the property on rule or sub elements. ok = rule.SetProperty(propName, propValue, status); if (!ok) { status.AddBuildError(() => MessageRes.itc27, propName, elementId.Value, propName.Value); } break; } } } return(ok); }