Skip to content

Commit

Permalink
fixed javascript error when custom functions have been added to Array…
Browse files Browse the repository at this point in the history
….prototype
  • Loading branch information
Andy Alm authored and RobertTheGrey committed Aug 2, 2010
1 parent 0b0db69 commit 94bda90
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 9 deletions.
13 changes: 13 additions & 0 deletions src/Spark.JsTests/CodeConstructsTests.html
Expand Up @@ -7,6 +7,7 @@
<script type="text/javascript" src="Generate.ashx/CodeConstructs/_Conditionals"></script>
<script type="text/javascript" src="Generate.ashx/CodeConstructs/_Iteration"></script>
<script type="text/javascript" src="Generate.ashx/CodeConstructs/_ForEachAutovariables"></script>
<script type="text/javascript" src="Generate.ashx/CodeConstructs/_IterationOfObjects"></script>

</head>
<body>
Expand Down Expand Up @@ -37,6 +38,18 @@
assertContains("<p class=\" last\">2/3:gamma</p>", contents);
}

function testIterationWithArrayPrototype()
{
Array.prototype.customFunc = function() { }

var contents = Spark.CodeConstructs._IterationOfObjects.RenderView({ stuff: [{ prop: 'alpha' }, { prop: 'beta' }, { prop: 'gamma'}] });
assertContains("<p>alpha</p>", contents);
assertContains("<p>beta</p>", contents);
assertContains("<p>gamma</p>", contents);

delete Array.prototype.customFunc;
}

</script>

</body>
Expand Down
3 changes: 2 additions & 1 deletion src/Spark.JsTests/Spark.JsTests.csproj
@@ -1,4 +1,4 @@
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
Expand Down Expand Up @@ -145,6 +145,7 @@
<None Include="Views\CodeConstructs\_ForEachAutovariables.spark" />
<None Include="Views\CodeConstructs\_Iteration.spark" />
<None Include="Views\CodeConstructs\_Conditionals.spark" />
<None Include="Views\CodeConstructs\_IterationOfObjects.spark" />
<None Include="Views\Macros\_SimpleMacros.spark" />
<None Include="Views\OutputContent\_BeforeAfterAndReplace.spark" />
<None Include="Views\OutputContent\_CaptureContentAsVariable.spark" />
Expand Down
@@ -0,0 +1,4 @@
<viewdata stuff=""/>
<for each="var item in stuff">
<p>${item.prop}</p>
</for>
Expand Up @@ -123,19 +123,26 @@ protected override void Visit(ForEachChunk chunk)
autoCount.Detected = true;
}

string iteratorName = "__iter__" + inspector.VariableName;

if (autoCount.Detected)
{
// var itemCount=0;for(var __iter__item in coll){++itemCount;}
// var itemCount=0;for(var __iter__item in coll){if(typeof(__iter__item)!='function'){++itemCount;}}
_source
.Append("var ")
.Append(inspector.VariableName)
.Append("Count=0;for(var __iter__")
.Append(inspector.VariableName)
.Append("Count=0;for(var ")
.Append(iteratorName)
.Append(" in ")
.Append(inspector.CollectionCode)
.Append("){++")
.Append("){ if(typeof(")
.Append(inspector.CollectionCode)
.Append("[")
.Append(iteratorName)
.Append("])!='function') {")
.Append("++")
.Append(inspector.VariableName)
.Append("Count;}");
.Append("Count;}}");
}

if (autoIndex.Detected)
Expand All @@ -152,8 +159,8 @@ protected override void Visit(ForEachChunk chunk)

// for(var __iter__item in coll) {
_source
.Append("for (var __iter__")
.Append(inspector.VariableName)
.Append("for (var ")
.Append(iteratorName)
.Append(" in ")
.Append(inspector.CollectionCode)
.Append(") {");
Expand All @@ -168,6 +175,11 @@ protected override void Visit(ForEachChunk chunk)
.Append(inspector.VariableName)
.Append("];");

// if(typeof(item)!='function') {
_source.Append("if(typeof(")
.Append(inspector.VariableName)
.Append(")!='function') {");

if (autoIsLast.Detected)
{
// var itemIsLast=(itemIndex==itemCount-1);
Expand Down Expand Up @@ -197,7 +209,7 @@ protected override void Visit(ForEachChunk chunk)
_source.Append("++").Append(inspector.VariableName).Append("Index;");
}

_source.AppendLine("}");
_source.AppendLine("}}");
}
else
{
Expand Down

0 comments on commit 94bda90

Please sign in to comment.