/// <summary> /// Parse a Xaml document from a TextReader /// </summary> internal bool ParseXamlDocument(TextReader reader, string desiredRule) { ErrorUtilities.VerifyThrowArgumentNull(reader, nameof(reader)); ErrorUtilities.VerifyThrowArgumentLength(desiredRule, nameof(desiredRule)); object rootObject = XamlServices.Load(reader); if (null != rootObject) { XamlTypes.ProjectSchemaDefinitions schemas = rootObject as XamlTypes.ProjectSchemaDefinitions; if (schemas != null) { foreach (XamlTypes.IProjectSchemaNode node in schemas.Nodes) { XamlTypes.Rule rule = node as XamlTypes.Rule; if (rule != null) { if (String.Equals(rule.Name, desiredRule, StringComparison.OrdinalIgnoreCase)) { return(ParseXamlDocument(rule)); } } } throw new XamlParseException(ResourceUtilities.FormatResourceStringStripCodeAndKeyword("Xaml.RuleNotFound", desiredRule)); } else { throw new XamlParseException(ResourceUtilities.GetResourceString("Xaml.InvalidRootObject")); } } return(false); }
public override bool Execute() { if (!String.IsNullOrEmpty(TrackerLogDirectory)) { TrackFileAccess = true; } object rootObject = XamlServices.Load(new StreamReader(Xaml)); XamlTypes.ProjectSchemaDefinitions schemas = rootObject as XamlTypes.ProjectSchemaDefinitions; if (schemas != null) { foreach (XamlTypes.IProjectSchemaNode node in schemas.Nodes) { XamlTypes.Rule rule = node as XamlTypes.Rule; if (rule != null) { parseParameters(rule); CommandLineGenerator generator = new CommandLineGenerator(rule, parameterValues); generator.CommandLineTemplate = this.CommandLineTemplate; generator.AdditionalOptions = AdditionalOptions; CommandLine = generator.GenerateCommandLine(); return(base.Execute()); } } } return(false); }
private static Dictionary <string, object> parseParameters(string xaml, Dictionary <string, string> strOptions) { object rootObject = XamlServices.Load(new StreamReader(xaml)); XamlTypes.ProjectSchemaDefinitions schemas = rootObject as XamlTypes.ProjectSchemaDefinitions; if (schemas != null) { foreach (XamlTypes.IProjectSchemaNode node in schemas.Nodes) { XamlTypes.Rule rule = node as XamlTypes.Rule; if (rule != null) { return(parseParameters(rule, strOptions)); } } } return(null); }
public string GenCmdLine(string xaml) { object rootObject = XamlServices.Load(new StreamReader(xaml)); XamlTypes.ProjectSchemaDefinitions schemas = rootObject as XamlTypes.ProjectSchemaDefinitions; if (schemas != null) { foreach (XamlTypes.IProjectSchemaNode node in schemas.Nodes) { XamlTypes.Rule rule = node as XamlTypes.Rule; if (rule != null) { var parameterValues = parseParameters(rule); CommandLineGenerator generator = new CommandLineGenerator(rule, parameterValues); generator.CommandLineTemplate = this.CommandLineTemplate; generator.AdditionalOptions = AdditionalOptions; return(generator.GenerateCommandLine()); } } } return(null); }