Skip to content

Commit

Permalink
Merge branch 'esskar-master'
Browse files Browse the repository at this point in the history
  • Loading branch information
RobertTheGrey committed Feb 7, 2015
2 parents 24815a9 + 6d3788c commit 2c26e30
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 1 deletion.
26 changes: 26 additions & 0 deletions src/Spark.Tests/Parser/ViewLoaderTester.cs
Expand Up @@ -311,5 +311,31 @@ public void PartialsInCascadingBaseFoldersAndSharedFoldersAreDiscovered()
Assert.That(partials, Has.None.EqualTo("dontfind2"));
Assert.That(partials, Has.None.EqualTo("dontfind3"));
}

[Test]
public void LoadingEmptyFile()
{
var viewFolder = new InMemoryViewFolder
{
{Path.Combine("home", "empty.spark"), ""},
};
var viewLoader = new ViewLoader { SyntaxProvider = new DefaultSyntaxProvider(ParserSettings.DefaultBehavior), ViewFolder = viewFolder };
var chunks = viewLoader.Load(Path.Combine("home", "empty.spark"));
var everything = viewLoader.GetEverythingLoaded();
Assert.AreEqual(1, everything.Count());
}

[Test]
public void LoadingEmptyShadeFile()
{
var viewFolder = new InMemoryViewFolder
{
{Path.Combine("home", "empty.shade"), ""},
};
var viewLoader = new ViewLoader { SyntaxProvider = new DefaultSyntaxProvider(ParserSettings.DefaultBehavior), ViewFolder = viewFolder };
var chunks = viewLoader.Load(Path.Combine("home", "empty.shade"));
var everything = viewLoader.GetEverythingLoaded();
Assert.AreEqual(1, everything.Count());
}
}
}
2 changes: 1 addition & 1 deletion src/Spark/Parser/Grammar.cs
Expand Up @@ -184,7 +184,7 @@ public static ParseAction<IList<TValue>> Rep<TValue>(ParseAction<TValue> parse)

var rest = input;
var result = parse(rest);
while (result != null)
while (result != null && !rest.IsSamePosition(result.Rest))
{
list.Add(result.Value);
rest = result.Rest;
Expand Down
12 changes: 12 additions & 0 deletions src/Spark/Parser/Position.cs
Expand Up @@ -85,6 +85,18 @@ public Position(SourceContext sourceContext, int sourceContextLength, int offset
this.paintLink = paintLink;
}

public bool IsSamePosition(Position position)
{
if (position == null)
throw new ArgumentNullException("position");

if (object.ReferenceEquals(position, this)) //obviously
return true;
return position.Column == this.Column
&& position.Line == this.Line
&& position.Offset == this.Offset;
}

public SourceContext SourceContext
{
get
Expand Down

0 comments on commit 2c26e30

Please sign in to comment.