private static SeperatedCssViewModel Run(string[] testData)
        {
            var obj = new PageCssSeperationEvaluator(new CssBlockContentEvaluator(), new CssFileNameEvaluator(new SolutionRelativeDirectoryEvaluator()));

            return(obj.Evaluate(testData, @"C:\dir1\dir2\dir3", @"C:\dir1\dir2\dir3\Content\BlockCss\Search", @"LoggingResultGrid.cshtml", true));
        }
Exemplo n.º 2
0
        public void Split(bool mergeBlocks)
        {
            if (MessageBox.Show("Are you sure?", "Refactor CSS", MessageBoxButton.YesNo, MessageBoxImage.Warning) != MessageBoxResult.Yes)
            {
                return;
            }

            var refactorTarget = Properties.Settings.Default.RefactorPath;

            var newPath = GetNewPath();

            if (!Proceed(refactorTarget))
            {
                return;
            }

            var filesToRefactor = Directory.GetFiles(refactorTarget).Where(x => x.EndsWith(".cshtml"));

            foreach (var file in filesToRefactor)
            {
                Ux.WriteLine(string.Format("Refactoring {0}", file));

                SeperatedCssViewModel seperatedCssViewModel;

                try
                {
                    seperatedCssViewModel = PageCssSeperationEvaluator.Evaluate(File.ReadAllLines(file), Properties.Settings.Default.SolutionPath, newPath, file, mergeBlocks);
                }
                catch (Exception)
                {
                    var x = string.Format("---ERROR: Unable to process {0}---", file);
                    Ux.WriteLine(x);
                    Ux.WriteLine("");
                    MessageBox.Show(x, "OPERATION HALTED", MessageBoxButton.OK, MessageBoxImage.Stop);
                    return;
                }


                if (seperatedCssViewModel.ExtractedCssBlocks.Any())
                {
                    foreach (var newCssFile in seperatedCssViewModel.ExtractedCssBlocks)
                    {
                        var url = newPath + "\\" + newCssFile.ProposedFileName;

                        if (!Directory.Exists(newPath))
                        {
                            Directory.CreateDirectory(newPath);
                        }

                        if (File.Exists(url))
                        {
                            MessageBox.Show("PLEASE REVIEW THIS FILE MANUALLY - " + url);
                            Ux.WriteLine("ERROR - TASK STOPPED");
                            Ux.WriteLine("");
                            return;
                        }

                        File.WriteAllLines(url, newCssFile.Lines);

                        var atSigns       = newCssFile.Lines.Count(x => x.Contains("@"));
                        var dotDotSlashes = newCssFile.Lines.Count(x => x.Contains("../"));
                        if (atSigns > 0)
                        {
                            Ux.WriteLine(string.Format("---WARNING: {0} lines containing @ were detected", atSigns));
                        }
                        if (dotDotSlashes > 0)
                        {
                            Ux.WriteLine(string.Format("---WARNING: {0} lines containing ../ were detected", dotDotSlashes));
                        }
                    }
                    Ux.WriteLine("Created " + seperatedCssViewModel.ExtractedCssBlocks.Count() + " new files");
                    File.WriteAllLines(file, seperatedCssViewModel.StripedContent);
                }
            }

            Ux.WriteLine("Operation complete.");
            Ux.WriteLine("");
        }