private void ProcessDocument(FileSystemWatcher fileWatcher, BuildContext context, ReferenceDocument document) { try { if (!document.BeginEdit(fileWatcher)) { return; } // For each configuration, retrieve the processor (visitor) and // process the document... int itemCount = _listConfigurations.Count; for (int i = 0; i < itemCount; i++) { BuildConfiguration configuration = _listConfigurations[i]; string configName = configuration.Name; if (_dictVisitors.ContainsKey(configName)) { ReferenceVisitor visitor = _dictVisitors[configName]; if (visitor != null && visitor.IsInitialized) { visitor.Visit(document); } } } } finally { document.EndEdit(); } }
private static void ResolveReference(ReferenceExpression reference, Expression root) { ReferenceVisitor visitor = new ReferenceVisitor(reference.Path); visitor.Visit(root); if (visitor.ReferencedExpression == null) { throw new ParseException("Unable to resolve reference to " + reference.Path); } reference.ReferencedExpression = visitor.ReferencedExpression; }
public static IReadOnlyList <IntermediateNodeReference> FindDescendantReferences <TNode>(this DocumentIntermediateNode document) where TNode : IntermediateNode { if (document == null) { throw new ArgumentNullException(nameof(document)); } var visitor = new ReferenceVisitor <TNode>(); visitor.Visit(document); return(visitor.References); }