예제 #1
0
        internal void SpritesResolved(SpriteBlock block)
        {
            var relativeFiles = block.Sprites.Select(s => s.SpriteFilePath.Value).ToList();

            foreach (var file in relativeFiles)
            {
                var rebased = file.Replace('/', Path.DirectorySeparatorChar).RebaseFile(block.FilePath);
                if (!Current.FileLookup.Exists(rebased)) continue;

                Add(block.FilePath, rebased);
            }

            Exclusions.Add(block.OutputFile.Value.Replace('/', Path.DirectorySeparatorChar).RebaseFile(block.FilePath));
        }
예제 #2
0
        public void DependencyGraph()
        {
            Current.SetContext(new Context(new FileCache()));
            Current.SetFileLookup(new TestAllExistLookup());

            var parser = MoreInternals.Parser.Parser.CreateParser();
            var statements = parser.Parse("dummy-file.more", new StringReader("foo { bar: url('/ref.png'); }"));
            var sprite = new SpriteBlock(
                new QuotedStringValue("out.png"),
                    new List<SpriteRule> {
                        new SpriteRule("blah", new QuotedStringValue("/img/blah.png"), -1, -1, "fake.more")
                    },
                    -1,
                    -1,
                    "fake.more"
                );

            var graph = new DependencyGraph();
            graph.UsingResolved("used-file.more", "second-dep.css");
            graph.UsingResolved("dummy-file.more", "used-file.more");
            graph.FileCompiled("dummy-file.more", statements);
            graph.SpritesResolved(sprite);

            var a = graph.NeedRecompilation(new[] { @"\second-dep.css" }, new[] { "used-file.more", "out.png" });
            Assert.AreEqual(1, a.Count());
            Assert.AreEqual("used-file.more", a.Single());

            var b = graph.NeedRecompilation(new[] { @"\fizz.more", @"\img\blah.png" }, new[] { "fake.more", "used-file.more" });
            Assert.AreEqual(1, b.Count());
            Assert.AreEqual("fake.more", b.Single());

            var c = graph.NeedRecompilation(new[] { @"\ref.png" }, new[] { "dummy-file.more" });
            Assert.AreEqual(1, c.Count());
            Assert.AreEqual("dummy-file.more", c.Single());
        }