Exemplo n.º 1
0
        private void Button_Click_3(object sender, RoutedEventArgs e)
        {
            var node = lbNodes.SelectedItem as Node;

            if (node != null)
            {
                try
                {
                    if (_currentChangeAst == null)
                    {
                        _currentChangeAst = new ChangeAST(_nodeChangeItems);
                    }
                    _currentChangeAst.InsertAfter(node, tbNodeText.Text);
                }
                catch (Exception exception)
                {
                    MessageBox.Show(exception.ToString());
                }
            }
        }
Exemplo n.º 2
0
        public ChangeAST AddRemoveImports(ChangeAST change, IEnumerable <ImportedModule> toAdd, IEnumerable <ImportedModule> removedUsagesImports)
        {
            List <Imports> toChange   = new List <Imports>();
            var            allImports = new List <ImportedModule>();

            allImports.AddRange(toAdd.Select(n => new ImportedModule(n.Name, n.IsLocalImport ? n.Path.ToRelativeImportPath(this.FileName) : n.Path)));
            allImports.AddRange(removedUsagesImports);

            foreach (var byPath in allImports.GroupBy(i => i.Path))
            {
                var existingImportsForPath = Imports.SingleOrDefault(i => i.FilePath == byPath.Key && !i.ImportedModules.Any(m => m.IsNamespaceImport));
                if (existingImportsForPath != null)
                {
                    var newImports     = toAdd.Where(imp => !existingImportsForPath.ImportedModules.Any(i => i.Name.Equals(imp.Name)));
                    var removedImports = removedUsagesImports.Where(imp => existingImportsForPath.ImportedModules.Any(i => i.Name.Equals(imp.Name)));

                    existingImportsForPath.Add(newImports);
                    existingImportsForPath.Remove(removedImports);

                    toChange.Add(existingImportsForPath);
                }
                else
                {
                    toChange.Add(new Imports(this.FileName, this.Root, byPath.ToArray()));
                }
            }

            var lastImport = Imports.Last(i => i.ImportDeclaration != null);

            foreach (var import in toChange.Where(i => i.ImportDeclaration != null))
            {
                change.ChangeNode(import.ImportDeclaration, import.Serialize());
            }
            foreach (var import in toChange.Where(i => i.ImportDeclaration == null))
            {
                change.InsertAfter(lastImport.ImportDeclaration, $"\n{import.Serialize()}");
            }
            return(change);
        }