Exemple #1
0
        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);
        }