Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
rytmis committed Nov 26, 2015
2 parents f828c83 + 265b669 commit ad44f87
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 9 deletions.
2 changes: 1 addition & 1 deletion src/dotless.Core/Parser/Tree/Import.cs
Expand Up @@ -172,7 +172,7 @@ public override Node Evaluate(Env env)

Accept(referenceVisitor);
}
NodeHelper.RecursiveExpandNodes<Import>(env, InnerRoot.Rules);
NodeHelper.RecursiveExpandNodes<Import>(env, InnerRoot);
}

var rulesList = new NodeList(InnerRoot.Rules).ReducedFrom<NodeList>(this);
Expand Down
19 changes: 12 additions & 7 deletions src/dotless.Core/Utils/NodeHelper.cs
Expand Up @@ -33,37 +33,42 @@ public static void ExpandNodes<TNode>(Env env, NodeList rules)
}
}

public static void RecursiveExpandNodes<TNode>(Env env, NodeList rules)
public static void RecursiveExpandNodes<TNode>(Env env, Ruleset parentRuleset)
where TNode : Node
{
for (var i = 0; i < rules.Count; i++)

env.Frames.Push(parentRuleset);

for (var i = 0; i < parentRuleset.Rules.Count; i++)
{
var node = rules[i];
var node = parentRuleset.Rules[i];

if (node is TNode)
{
var evaluated = node.Evaluate(env);
var nodes = evaluated as IEnumerable<Node>;
if (nodes != null)
{
rules.InsertRange(i + 1, nodes);
rules.RemoveAt(i);
parentRuleset.Rules.InsertRange(i + 1, nodes);
parentRuleset.Rules.RemoveAt(i);
i--;
}
else
{
rules[i] = evaluated;
parentRuleset.Rules[i] = evaluated;
}
}
else
{
var ruleset = node as Ruleset;
if (ruleset != null && ruleset.Rules != null)
{
RecursiveExpandNodes<TNode>(env, ruleset.Rules);
RecursiveExpandNodes<TNode>(env, ruleset);
}
}
}

env.Frames.Pop();
}

public static IEnumerable<Node> NonDestructiveExpandNodes<TNode>(Env env, NodeList rules)
Expand Down
27 changes: 26 additions & 1 deletion src/dotless.Test/Specs/ImportFixture.cs
Expand Up @@ -355,6 +355,15 @@ private static Parser GetParser(bool isUrlRewritingDisabled, bool importAllFiles
}
}";

imports["nested-import-interpolation-1.less"] = @"
@var: ""2"";
@import ""nested-import-interpolation-@{var}.less"";
";

imports["nested-import-interpolation-2.less"] = @"
body { background-color: blue; }
";

return new Parser {
Importer = new Importer(new DictionaryReader(imports)) {
IsUrlRewritingDisabled = isUrlRewritingDisabled,
Expand Down Expand Up @@ -1065,7 +1074,23 @@ public void VariableInterpolationInQuotedLessImport()

AssertLess(input, expected, GetParser());
}


[Test]
public void VariableInterpolationInNestedLessImport()
{
var input =
@"
@import ""nested-import-interpolation-1.less"";
";

var expected =
@"
body {
background-color: blue;
}";

AssertLess(input, expected, GetParser());
}

[Test]
public void ImportMultipleImportsMoreThanOnce()
Expand Down

0 comments on commit ad44f87

Please sign in to comment.