Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

First Commit

  • Loading branch information...
commit 6747d15f248b54b2a364b731f8249e7f56f3d859 1 parent dbe6e9b
@brooklynDev authored
Showing with 76,353 additions and 0 deletions.
  1. +46 −0 .gitignore
  2. +25 −0 NGon.SampleApplication/Controllers/HomeController.cs
  3. +1 −0  NGon.SampleApplication/Global.asax
  4. +38 −0 NGon.SampleApplication/Global.asax.cs
  5. +126 −0 NGon.SampleApplication/NGon.SampleApplication.csproj
  6. +35 −0 NGon.SampleApplication/Properties/AssemblyInfo.cs
  7. +17 −0 NGon.SampleApplication/Views/Home/Index.cshtml
  8. +14 −0 NGon.SampleApplication/Views/Shared/_Layout.cshtml
  9. +58 −0 NGon.SampleApplication/Views/Web.config
  10. +3 −0  NGon.SampleApplication/Views/_ViewStart.cshtml
  11. +30 −0 NGon.SampleApplication/Web.Debug.config
  12. +31 −0 NGon.SampleApplication/Web.Release.config
  13. +54 −0 NGon.SampleApplication/Web.config
  14. +9 −0 NGon.SampleApplication/packages.config
  15. +77 −0 NGon.Tests/NGon.Tests.csproj
  16. +106 −0 NGon.Tests/NGonTests.cs
  17. +36 −0 NGon.Tests/Properties/AssemblyInfo.cs
  18. +5 −0 NGon.Tests/packages.config
  19. +32 −0 NGon.sln
  20. +42 −0 NGon/HtmlHelperExtensions.cs
  21. +59 −0 NGon/NGon.csproj
  22. +14 −0 NGon/NGonActionFilterAttribute.cs
  23. +36 −0 NGon/Properties/AssemblyInfo.cs
  24. BIN  packages/EntityFramework.4.1.10331.0/EntityFramework.4.1.10331.0.nupkg
  25. BIN  packages/EntityFramework.4.1.10331.0/lib/EntityFramework.dll
  26. +13,206 −0 packages/EntityFramework.4.1.10331.0/lib/EntityFramework.xml
  27. +969 −0 packages/Modernizr.1.7/Content/Scripts/modernizr-1.7.js
  28. +10 −0 packages/Modernizr.1.7/Content/Scripts/modernizr-1.7.min.js
  29. BIN  packages/Modernizr.1.7/Modernizr.1.7.nupkg
  30. +39 −0 packages/Moq.4.0.10827/License.txt
  31. BIN  packages/Moq.4.0.10827/Moq.4.0.10827.nupkg
  32. BIN  packages/Moq.4.0.10827/Moq.chm
  33. BIN  packages/Moq.4.0.10827/lib/NET35/Moq.dll
  34. BIN  packages/Moq.4.0.10827/lib/NET35/Moq.pdb
  35. +5,768 −0 packages/Moq.4.0.10827/lib/NET35/Moq.xml
  36. BIN  packages/Moq.4.0.10827/lib/NET40/Moq.dll
  37. BIN  packages/Moq.4.0.10827/lib/NET40/Moq.pdb
  38. +5,120 −0 packages/Moq.4.0.10827/lib/NET40/Moq.xml
  39. BIN  packages/Moq.4.0.10827/lib/Silverlight4/Castle.Core.dll
  40. BIN  packages/Moq.4.0.10827/lib/Silverlight4/Moq.Silverlight.dll
  41. BIN  packages/Moq.4.0.10827/lib/Silverlight4/Moq.Silverlight.pdb
  42. +5,101 −0 packages/Moq.4.0.10827/lib/Silverlight4/Moq.Silverlight.xml
  43. BIN  packages/NUnit.2.5.10.11092/Logo.ico
  44. BIN  packages/NUnit.2.5.10.11092/NUnit.2.5.10.11092.nupkg
  45. +277 −0 packages/NUnit.2.5.10.11092/NUnitFitTests.html
  46. +342 −0 packages/NUnit.2.5.10.11092/fit-license.txt
  47. BIN  packages/NUnit.2.5.10.11092/lib/nunit.framework.dll
  48. +10,407 −0 packages/NUnit.2.5.10.11092/lib/nunit.framework.xml
  49. BIN  packages/NUnit.2.5.10.11092/lib/nunit.mocks.dll
  50. BIN  packages/NUnit.2.5.10.11092/lib/pnunit.framework.dll
  51. +15 −0 packages/NUnit.2.5.10.11092/license.txt
  52. +124 −0 packages/NUnit.2.5.10.11092/tools/NUnitTests.VisualState.xml
  53. +85 −0 packages/NUnit.2.5.10.11092/tools/NUnitTests.config
  54. +14 −0 packages/NUnit.2.5.10.11092/tools/NUnitTests.nunit
  55. +4 −0 packages/NUnit.2.5.10.11092/tools/agent.conf
  56. +18 −0 packages/NUnit.2.5.10.11092/tools/agent.log.conf
  57. +18 −0 packages/NUnit.2.5.10.11092/tools/launcher.log.conf
  58. BIN  packages/NUnit.2.5.10.11092/tools/lib/Failure.png
  59. BIN  packages/NUnit.2.5.10.11092/tools/lib/Ignored.png
  60. BIN  packages/NUnit.2.5.10.11092/tools/lib/Inconclusive.png
  61. BIN  packages/NUnit.2.5.10.11092/tools/lib/Skipped.png
  62. BIN  packages/NUnit.2.5.10.11092/tools/lib/Success.png
  63. BIN  packages/NUnit.2.5.10.11092/tools/lib/fit.dll
  64. BIN  packages/NUnit.2.5.10.11092/tools/lib/log4net.dll
  65. BIN  packages/NUnit.2.5.10.11092/tools/lib/nunit-console-runner.dll
  66. BIN  packages/NUnit.2.5.10.11092/tools/lib/nunit-gui-runner.dll
  67. BIN  packages/NUnit.2.5.10.11092/tools/lib/nunit.core.dll
  68. BIN  packages/NUnit.2.5.10.11092/tools/lib/nunit.core.interfaces.dll
  69. BIN  packages/NUnit.2.5.10.11092/tools/lib/nunit.fixtures.dll
  70. BIN  packages/NUnit.2.5.10.11092/tools/lib/nunit.uiexception.dll
  71. BIN  packages/NUnit.2.5.10.11092/tools/lib/nunit.uikit.dll
  72. BIN  packages/NUnit.2.5.10.11092/tools/lib/nunit.util.dll
  73. BIN  packages/NUnit.2.5.10.11092/tools/nunit-agent-x86.exe
  74. +69 −0 packages/NUnit.2.5.10.11092/tools/nunit-agent-x86.exe.config
  75. BIN  packages/NUnit.2.5.10.11092/tools/nunit-agent.exe
  76. +69 −0 packages/NUnit.2.5.10.11092/tools/nunit-agent.exe.config
  77. BIN  packages/NUnit.2.5.10.11092/tools/nunit-console-x86.exe
  78. +69 −0 packages/NUnit.2.5.10.11092/tools/nunit-console-x86.exe.config
  79. BIN  packages/NUnit.2.5.10.11092/tools/nunit-console.exe
  80. +69 −0 packages/NUnit.2.5.10.11092/tools/nunit-console.exe.config
  81. BIN  packages/NUnit.2.5.10.11092/tools/nunit-x86.exe
  82. +83 −0 packages/NUnit.2.5.10.11092/tools/nunit-x86.exe.config
  83. BIN  packages/NUnit.2.5.10.11092/tools/nunit.exe
  84. +83 −0 packages/NUnit.2.5.10.11092/tools/nunit.exe.config
  85. BIN  packages/NUnit.2.5.10.11092/tools/nunit.framework.dll
  86. BIN  packages/NUnit.2.5.10.11092/tools/pnunit-agent.exe
  87. +77 −0 packages/NUnit.2.5.10.11092/tools/pnunit-agent.exe.config
  88. BIN  packages/NUnit.2.5.10.11092/tools/pnunit-launcher.exe
  89. +77 −0 packages/NUnit.2.5.10.11092/tools/pnunit-launcher.exe.config
  90. BIN  packages/NUnit.2.5.10.11092/tools/pnunit.framework.dll
  91. BIN  packages/NUnit.2.5.10.11092/tools/pnunit.tests.dll
  92. BIN  packages/NUnit.2.5.10.11092/tools/runFile.exe
  93. +43 −0 packages/NUnit.2.5.10.11092/tools/runFile.exe.config
  94. +2 −0  packages/NUnit.2.5.10.11092/tools/runpnunit.bat
  95. +24 −0 packages/NUnit.2.5.10.11092/tools/test.conf
  96. +8,325 −0 packages/jQuery.1.5.1/Content/Scripts/jquery-1.5.1.js
  97. +19 −0 packages/jQuery.1.5.1/Content/Scripts/jquery-1.5.1.min.js
  98. BIN  packages/jQuery.1.5.1/jQuery.1.5.1.nupkg
  99. BIN  packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png
  100. BIN  packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_flat_75_ffffff_40x100.png
  101. BIN  packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png
  102. BIN  packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_glass_65_ffffff_1x400.png
  103. BIN  packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_glass_75_dadada_1x400.png
  104. BIN  packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png
  105. BIN  packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png
  106. BIN  packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png
  107. BIN  packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-icons_222222_256x240.png
  108. BIN  packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-icons_2e83ff_256x240.png
  109. BIN  packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-icons_454545_256x240.png
  110. BIN  packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-icons_888888_256x240.png
  111. BIN  packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/images/ui-icons_cd0a0a_256x240.png
  112. +24 −0 packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.accordion.css
  113. +16 −0 packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.all.css
  114. +62 −0 packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.autocomplete.css
  115. +11 −0 packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.base.css
  116. +43 −0 packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.button.css
  117. +46 −0 packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.core.css
  118. +73 −0 packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.datepicker.css
  119. +26 −0 packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.dialog.css
  120. +16 −0 packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.progressbar.css
  121. +25 −0 packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.resizable.css
  122. +15 −0 packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.selectable.css
  123. +29 −0 packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.slider.css
  124. +23 −0 packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.tabs.css
  125. +257 −0 packages/jQuery.UI.Combined.1.8.11/Content/Content/themes/base/jquery.ui.theme.css
  126. +11,700 −0 packages/jQuery.UI.Combined.1.8.11/Content/Scripts/jquery-ui-1.8.11.js
  127. +938 −0 packages/jQuery.UI.Combined.1.8.11/Content/Scripts/jquery-ui-1.8.11.min.js
  128. BIN  packages/jQuery.UI.Combined.1.8.11/jQuery.UI.Combined.1.8.11.nupkg
  129. +1,299 −0 packages/jQuery.Validation.1.8.0/Content/Scripts/jquery.validate-vsdoc.js
  130. +1,162 −0 packages/jQuery.Validation.1.8.0/Content/Scripts/jquery.validate.js
  131. +53 −0 packages/jQuery.Validation.1.8.0/Content/Scripts/jquery.validate.min.js
  132. BIN  packages/jQuery.Validation.1.8.0/jQuery.Validation.1.8.0.nupkg
  133. +9,110 −0 packages/jQuery.vsdoc.1.5.1/Content/Scripts/jquery-1.5.1-vsdoc.js
  134. BIN  packages/jQuery.vsdoc.1.5.1/jQuery.vsdoc.1.5.1.nupkg
  135. +5 −0 packages/repositories.config
View
46 .gitignore
@@ -0,0 +1,46 @@
+#OS junk files
+[Tt]humbs.db
+*.DS_Store
+
+#Visual Studio files
+*.[Oo]bj
+*.user
+*.aps
+*.pch
+*.vspscc
+*.vssscc
+*_i.c
+*_p.c
+*.ncb
+*.suo
+*.tlb
+*.tlh
+*.bak
+*.[Cc]ache
+*.ilk
+*.log
+*.lib
+*.sbr
+*.sdf
+*.opensdf
+*.unsuccessfulbuild
+ipch/
+obj/
+[Bb]in
+[Dd]ebug*/
+[Rr]elease*/
+Ankh.NoLoad
+
+#Tooling
+_ReSharper*/
+*.resharper
+[Tt]est[Rr]esult*
+
+#Project files
+[Bb]uild/
+
+#Subversion files
+.svn
+
+# Office Temp Files
+~$*
View
25 NGon.SampleApplication/Controllers/HomeController.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.Mvc;
+
+namespace NGon.SampleApplication.Controllers
+{
+ public class HomeController : Controller
+ {
+ public ActionResult Index()
+ {
+ var person = new Person { FirstName = "John", LastName = "Doe", Age = 30 };
+ ViewBag.NGon.Person = person;
+ return View();
+ }
+ }
+
+ public class Person
+ {
+ public string FirstName { get; set; }
+ public string LastName { get; set; }
+ public int Age { get; set; }
+ }
+}
View
1  NGon.SampleApplication/Global.asax
@@ -0,0 +1 @@
+<%@ Application Codebehind="Global.asax.cs" Inherits="NGon.SampleApplication.MvcApplication" Language="C#" %>
View
38 NGon.SampleApplication/Global.asax.cs
@@ -0,0 +1,38 @@
+using System.Web.Mvc;
+using System.Web.Routing;
+
+namespace NGon.SampleApplication
+{
+ // Note: For instructions on enabling IIS6 or IIS7 classic mode,
+ // visit http://go.microsoft.com/?LinkId=9394801
+
+ public class MvcApplication : System.Web.HttpApplication
+ {
+ public static void RegisterGlobalFilters(GlobalFilterCollection filters)
+ {
+ filters.Add(new HandleErrorAttribute());
+ }
+
+ public static void RegisterRoutes(RouteCollection routes)
+ {
+ routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
+
+ routes.MapRoute(
+ "Default", // Route name
+ "{controller}/{action}/{id}", // URL with parameters
+ new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
+ );
+
+ }
+
+ protected void Application_Start()
+ {
+ AreaRegistration.RegisterAllAreas();
+
+ GlobalFilters.Filters.Add(new NGonActionFilterAttribute());
+
+ RegisterGlobalFilters(GlobalFilters.Filters);
+ RegisterRoutes(RouteTable.Routes);
+ }
+ }
+}
View
126 NGon.SampleApplication/NGon.SampleApplication.csproj
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>
+ </ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{6B4601DB-23C8-497E-8545-CDB3075C40A2}</ProjectGuid>
+ <ProjectTypeGuids>{E53F8FEA-EAE0-44A6-8774-FFD645390401};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NGon.SampleApplication</RootNamespace>
+ <AssemblyName>NGon.SampleApplication</AssemblyName>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <MvcBuildViews>false</MvcBuildViews>
+ <UseIISExpress>false</UseIISExpress>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="EntityFramework">
+ <HintPath>..\packages\EntityFramework.4.1.10331.0\lib\EntityFramework.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Data.Entity" />
+ <Reference Include="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
+ <Reference Include="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
+ <Reference Include="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Drawing" />
+ <Reference Include="System.Web.DynamicData" />
+ <Reference Include="System.Web.Entity" />
+ <Reference Include="System.Web.ApplicationServices" />
+ <Reference Include="System.ComponentModel.DataAnnotations" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Web" />
+ <Reference Include="System.Web.Extensions" />
+ <Reference Include="System.Web.Abstractions" />
+ <Reference Include="System.Web.Routing" />
+ <Reference Include="System.Xml" />
+ <Reference Include="System.Configuration" />
+ <Reference Include="System.Web.Services" />
+ <Reference Include="System.EnterpriseServices" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Controllers\HomeController.cs" />
+ <Compile Include="Global.asax.cs">
+ <DependentUpon>Global.asax</DependentUpon>
+ </Compile>
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <Content Include="Global.asax" />
+ <Content Include="Web.config" />
+ <Content Include="Web.Debug.config">
+ <DependentUpon>Web.config</DependentUpon>
+ </Content>
+ <Content Include="Web.Release.config">
+ <DependentUpon>Web.config</DependentUpon>
+ </Content>
+ <Content Include="Views\Web.config" />
+ <Content Include="Views\_ViewStart.cshtml" />
+ <Content Include="Views\Shared\_Layout.cshtml" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\NGon\NGon.csproj">
+ <Project>{59A8F487-179F-47AE-8631-0AAF99E89DE4}</Project>
+ <Name>NGon</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <Content Include="packages.config" />
+ </ItemGroup>
+ <ItemGroup>
+ <Content Include="Views\Home\Index.cshtml" />
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+ <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target> -->
+ <Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
+ <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
+ </Target>
+ <ProjectExtensions>
+ <VisualStudio>
+ <FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
+ <WebProjectProperties>
+ <UseIIS>False</UseIIS>
+ <AutoAssignPort>True</AutoAssignPort>
+ <DevelopmentServerPort>38588</DevelopmentServerPort>
+ <DevelopmentServerVPath>/</DevelopmentServerVPath>
+ <IISUrl>
+ </IISUrl>
+ <NTLMAuthentication>False</NTLMAuthentication>
+ <UseCustomServer>False</UseCustomServer>
+ <CustomServerUrl>
+ </CustomServerUrl>
+ <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
+ </WebProjectProperties>
+ </FlavorProperties>
+ </VisualStudio>
+ </ProjectExtensions>
+</Project>
View
35 NGon.SampleApplication/Properties/AssemblyInfo.cs
@@ -0,0 +1,35 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("NGon.SampleApplication")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Microsoft")]
+[assembly: AssemblyProduct("NGon.SampleApplication")]
+[assembly: AssemblyCopyright("Copyright © Microsoft 2012")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("2b85f213-cf43-4126-9e2f-be3dfd3787ba")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
View
17 NGon.SampleApplication/Views/Home/Index.cshtml
@@ -0,0 +1,17 @@
+<h2>Home Page</h2>
+
+<script type="text/javascript">
+ $(function () {
+ $("#button").click(function () {
+ var person = ngon.Person;
+ var div = $("#output");
+ div.html('');
+ div.append("FirstName: " + person.FirstName);
+ div.append(", LastName: " + person.LastName);
+ div.append(", Age: " + person.Age);
+ });
+ });
+</script>
+
+<input type="button" value="Show person data" id="button"/>
+<div id="output"></div>
View
14 NGon.SampleApplication/Views/Shared/_Layout.cshtml
@@ -0,0 +1,14 @@
+@using NGon
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8" />
+ <title>@ViewBag.Title</title>
+ <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
+ @Html.IncludeNGon()
+</head>
+
+<body>
+ @RenderBody()
+</body>
+</html>
View
58 NGon.SampleApplication/Views/Web.config
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+
+<configuration>
+ <configSections>
+ <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
+ <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
+ <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
+ </sectionGroup>
+ </configSections>
+
+ <system.web.webPages.razor>
+ <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
+ <pages pageBaseType="System.Web.Mvc.WebViewPage">
+ <namespaces>
+ <add namespace="System.Web.Mvc" />
+ <add namespace="System.Web.Mvc.Ajax" />
+ <add namespace="System.Web.Mvc.Html" />
+ <add namespace="System.Web.Routing" />
+ </namespaces>
+ </pages>
+ </system.web.webPages.razor>
+
+ <appSettings>
+ <add key="webpages:Enabled" value="false" />
+ </appSettings>
+
+ <system.web>
+ <httpHandlers>
+ <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
+ </httpHandlers>
+
+ <!--
+ Enabling request validation in view pages would cause validation to occur
+ after the input has already been processed by the controller. By default
+ MVC performs request validation before a controller processes the input.
+ To change this behavior apply the ValidateInputAttribute to a
+ controller or action.
+ -->
+ <pages
+ validateRequest="false"
+ pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
+ pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
+ userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
+ <controls>
+ <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
+ </controls>
+ </pages>
+ </system.web>
+
+ <system.webServer>
+ <validation validateIntegratedModeConfiguration="false" />
+
+ <handlers>
+ <remove name="BlockViewHandler"/>
+ <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
+ </handlers>
+ </system.webServer>
+</configuration>
View
3  NGon.SampleApplication/Views/_ViewStart.cshtml
@@ -0,0 +1,3 @@
+@{
+ Layout = "~/Views/Shared/_Layout.cshtml";
+}
View
30 NGon.SampleApplication/Web.Debug.config
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+
+<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->
+
+<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
+ <!--
+ In the example below, the "SetAttributes" transform will change the value of
+ "connectionString" to use "ReleaseSQLServer" only when the "Match" locator
+ finds an atrribute "name" that has a value of "MyDB".
+
+ <connectionStrings>
+ <add name="MyDB"
+ connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
+ xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
+ </connectionStrings>
+ -->
+ <system.web>
+ <!--
+ In the example below, the "Replace" transform will replace the entire
+ <customErrors> section of your web.config file.
+ Note that because there is only one customErrors section under the
+ <system.web> node, there is no need to use the "xdt:Locator" attribute.
+
+ <customErrors defaultRedirect="GenericError.htm"
+ mode="RemoteOnly" xdt:Transform="Replace">
+ <error statusCode="500" redirect="InternalError.htm"/>
+ </customErrors>
+ -->
+ </system.web>
+</configuration>
View
31 NGon.SampleApplication/Web.Release.config
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+
+<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->
+
+<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
+ <!--
+ In the example below, the "SetAttributes" transform will change the value of
+ "connectionString" to use "ReleaseSQLServer" only when the "Match" locator
+ finds an atrribute "name" that has a value of "MyDB".
+
+ <connectionStrings>
+ <add name="MyDB"
+ connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
+ xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
+ </connectionStrings>
+ -->
+ <system.web>
+ <compilation xdt:Transform="RemoveAttributes(debug)" />
+ <!--
+ In the example below, the "Replace" transform will replace the entire
+ <customErrors> section of your web.config file.
+ Note that because there is only one customErrors section under the
+ <system.web> node, there is no need to use the "xdt:Locator" attribute.
+
+ <customErrors defaultRedirect="GenericError.htm"
+ mode="RemoteOnly" xdt:Transform="Replace">
+ <error statusCode="500" redirect="InternalError.htm"/>
+ </customErrors>
+ -->
+ </system.web>
+</configuration>
View
54 NGon.SampleApplication/Web.config
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<!--
+ For more information on how to configure your ASP.NET application, please visit
+ http://go.microsoft.com/fwlink/?LinkId=152368
+ -->
+
+<configuration>
+ <appSettings>
+ <add key="webpages:Version" value="1.0.0.0"/>
+ <add key="ClientValidationEnabled" value="true"/>
+ <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
+ </appSettings>
+
+ <system.web>
+ <compilation debug="true" targetFramework="4.0">
+ <assemblies>
+ <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
+ <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
+ <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
+ <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
+ <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
+ </assemblies>
+ </compilation>
+
+ <authentication mode="Forms">
+ <forms loginUrl="~/Account/LogOn" timeout="2880" />
+ </authentication>
+
+ <pages>
+ <namespaces>
+ <add namespace="System.Web.Helpers" />
+ <add namespace="System.Web.Mvc" />
+ <add namespace="System.Web.Mvc.Ajax" />
+ <add namespace="System.Web.Mvc.Html" />
+ <add namespace="System.Web.Routing" />
+ <add namespace="System.Web.WebPages"/>
+ </namespaces>
+ </pages>
+ </system.web>
+
+ <system.webServer>
+ <validation validateIntegratedModeConfiguration="false"/>
+ <modules runAllManagedModulesForAllRequests="true"/>
+ </system.webServer>
+
+ <runtime>
+ <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+ <dependentAssembly>
+ <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
+ <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
+ </dependentAssembly>
+ </assemblyBinding>
+ </runtime>
+</configuration>
View
9 NGon.SampleApplication/packages.config
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+ <package id="EntityFramework" version="4.1.10331.0" />
+ <package id="jQuery" version="1.5.1" />
+ <package id="jQuery.UI.Combined" version="1.8.11" />
+ <package id="jQuery.Validation" version="1.8.0" />
+ <package id="jQuery.vsdoc" version="1.5.1" />
+ <package id="Modernizr" version="1.7" />
+</packages>
View
77 NGon.Tests/NGon.Tests.csproj
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.30703</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{16AFD75A-1563-474C-90BB-6E1B9785EBA0}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NGon.Tests</RootNamespace>
+ <AssemblyName>NGon.Tests</AssemblyName>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="Moq">
+ <HintPath>..\packages\Moq.4.0.10827\lib\NET40\Moq.dll</HintPath>
+ </Reference>
+ <Reference Include="nunit.framework">
+ <HintPath>..\packages\NUnit.2.5.10.11092\lib\nunit.framework.dll</HintPath>
+ </Reference>
+ <Reference Include="nunit.mocks">
+ <HintPath>..\packages\NUnit.2.5.10.11092\lib\nunit.mocks.dll</HintPath>
+ </Reference>
+ <Reference Include="pnunit.framework">
+ <HintPath>..\packages\NUnit.2.5.10.11092\lib\pnunit.framework.dll</HintPath>
+ </Reference>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Web" />
+ <Reference Include="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="NGonTests.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="packages.config" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\NGon\NGon.csproj">
+ <Project>{59A8F487-179F-47AE-8631-0AAF99E89DE4}</Project>
+ <Name>NGon</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project>
View
106 NGon.Tests/NGonTests.cs
@@ -0,0 +1,106 @@
+using System;
+using System.Dynamic;
+using System.IO;
+using System.Web;
+using System.Web.Mvc;
+using System.Web.Routing;
+using Moq;
+using NUnit.Framework;
+
+namespace NGon.Tests
+{
+ [TestFixture]
+ public class NGonTests
+ {
+ private ControllerBase _controller;
+ private HtmlHelper _helper;
+ private const string StartScriptTagFormat = @"<script type=""text/javascript"">window.{0}={{}};";
+ private const string EndScriptTag = @"</script>";
+
+ [SetUp]
+ public void Setup()
+ {
+ var controllerContext = new ControllerContext(new Mock<HttpContextBase>().Object, new RouteData(), new Mock<ControllerBase>().Object);
+ controllerContext.Controller.ViewData = new ViewDataDictionary { { "NGon", new ExpandoObject() } };
+ var viewContext = new ViewContext(controllerContext, new Mock<IView>().Object, controllerContext.Controller.ViewData, new TempDataDictionary(), new Mock<TextWriter>().Object);
+ var mockViewDataContainer = new Mock<IViewDataContainer>();
+ mockViewDataContainer.Setup(v => v.ViewData).Returns(controllerContext.Controller.ViewData);
+ _controller = controllerContext.Controller;
+ _helper = new HtmlHelper(viewContext, mockViewDataContainer.Object);
+ }
+
+ [Test]
+ public void SimpleStringPropertyTest()
+ {
+ //arrange
+ _controller.ViewBag.NGon.Foo = "100";
+
+ //act
+ var result = _helper.IncludeNGon();
+
+ //assert
+ var expected = String.Concat(String.Format(StartScriptTagFormat, "ngon"), @"ngon.Foo=""100"";", EndScriptTag);
+ var actual = result.ToString();
+ Assert.AreEqual(expected, actual);
+ }
+
+ [Test]
+ public void SimpleIntPropertyTest()
+ {
+ //arrange
+ _controller.ViewBag.NGon.Foo = 100;
+
+ //act
+ var result = _helper.IncludeNGon();
+
+ //assert
+ var expected = String.Concat(String.Format(StartScriptTagFormat, "ngon"), @"ngon.Foo=100;", EndScriptTag);
+ var actual = result.ToString();
+ Assert.AreEqual(expected, actual);
+ }
+
+ [Test]
+ public void PocoObjectJsonTest()
+ {
+ var person = new { FirstName = "John", LastName = "Doe", Age = 45 };
+
+ //arrange
+ _controller.ViewBag.NGon.Person = person;
+
+ //act
+ var result = _helper.IncludeNGon();
+
+ //assert
+ var expected = String.Concat(String.Format(StartScriptTagFormat, "ngon"), @"ngon.Person={""FirstName"":""John"",""LastName"":""Doe"",""Age"":45};", EndScriptTag);
+ var actual = result.ToString();
+ Assert.AreEqual(expected, actual);
+ }
+
+ [Test]
+ public void NamespaceTest()
+ {
+ const string @namespace = "test";
+ //arrange
+ _controller.ViewBag.NGon.Foo = 100;
+
+ //act
+ var result = _helper.IncludeNGon(@namespace);
+
+ //assert
+ var expected = String.Concat(String.Format(StartScriptTagFormat, @namespace), @namespace, @".Foo=100;", EndScriptTag);
+ var actual = result.ToString();
+ Assert.AreEqual(expected, actual);
+ }
+
+ [Test]
+ public void MissingNGonInViewBagThrowsException()
+ {
+ //arrange
+ _controller.ViewData.Clear();
+
+ //act
+ //assert
+ Assert.Throws<InvalidOperationException>(() => _helper.IncludeNGon());
+ }
+ }
+}
View
36 NGon.Tests/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("NGon.Tests")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Microsoft")]
+[assembly: AssemblyProduct("NGon.Tests")]
+[assembly: AssemblyCopyright("Copyright © Microsoft 2012")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("ae53aa0d-27f9-4035-8bd2-5bd35fb0a8c4")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
View
5 NGon.Tests/packages.config
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+ <package id="Moq" version="4.0.10827" />
+ <package id="NUnit" version="2.5.10.11092" />
+</packages>
View
32 NGon.sln
@@ -0,0 +1,32 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NGon", "NGon\NGon.csproj", "{59A8F487-179F-47AE-8631-0AAF99E89DE4}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NGon.Tests", "NGon.Tests\NGon.Tests.csproj", "{16AFD75A-1563-474C-90BB-6E1B9785EBA0}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NGon.SampleApplication", "NGon.SampleApplication\NGon.SampleApplication.csproj", "{6B4601DB-23C8-497E-8545-CDB3075C40A2}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {59A8F487-179F-47AE-8631-0AAF99E89DE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {59A8F487-179F-47AE-8631-0AAF99E89DE4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {59A8F487-179F-47AE-8631-0AAF99E89DE4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {59A8F487-179F-47AE-8631-0AAF99E89DE4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {16AFD75A-1563-474C-90BB-6E1B9785EBA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {16AFD75A-1563-474C-90BB-6E1B9785EBA0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {16AFD75A-1563-474C-90BB-6E1B9785EBA0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {16AFD75A-1563-474C-90BB-6E1B9785EBA0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6B4601DB-23C8-497E-8545-CDB3075C40A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6B4601DB-23C8-497E-8545-CDB3075C40A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6B4601DB-23C8-497E-8545-CDB3075C40A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6B4601DB-23C8-497E-8545-CDB3075C40A2}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
View
42 NGon/HtmlHelperExtensions.cs
@@ -0,0 +1,42 @@
+using System;
+using System.Collections.Generic;
+using System.Dynamic;
+using System.Text;
+using System.Web;
+using System.Web.Mvc;
+using System.Web.Script.Serialization;
+
+namespace NGon
+{
+ public static class HtmlHelperExtensions
+ {
+ public static IHtmlString IncludeNGon(this HtmlHelper helper, string @namespace = "ngon")
+ {
+ var viewData = helper.ViewContext.ViewData;
+ if (viewData == null)
+ {
+ return MvcHtmlString.Empty;
+ }
+
+ var ngon = viewData["NGon"] as ExpandoObject;
+ if (ngon == null)
+ {
+ throw new InvalidOperationException("Cannot find NGon in ViewBag. Did you remember to add the global NGonActionFilterAttribute?");
+ }
+
+ var tag = new TagBuilder("script");
+ tag.Attributes.Add(new KeyValuePair<string, string>("type", "text/javascript"));
+ var builder = new StringBuilder();
+ builder.AppendFormat("window.{0}={{}};", @namespace);
+
+ var serializer = new JavaScriptSerializer();
+ foreach (var prop in ngon)
+ {
+ builder.AppendFormat("{0}.{1}={2};", @namespace, prop.Key, helper.Raw(serializer.Serialize(prop.Value)));
+ }
+
+ tag.InnerHtml = builder.ToString();
+ return new HtmlString(tag.ToString());
+ }
+ }
+}
View
59 NGon/NGon.csproj
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>8.0.30703</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{59A8F487-179F-47AE-8631-0AAF99E89DE4}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>NGon</RootNamespace>
+ <AssemblyName>NGon</AssemblyName>
+ <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Web" />
+ <Reference Include="System.Web.Extensions" />
+ <Reference Include="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
+ <Reference Include="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="HtmlHelperExtensions.cs" />
+ <Compile Include="NGonActionFilterAttribute.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project>
View
14 NGon/NGonActionFilterAttribute.cs
@@ -0,0 +1,14 @@
+using System.Dynamic;
+using System.Web.Mvc;
+
+namespace NGon
+{
+ public class NGonActionFilterAttribute : ActionFilterAttribute
+ {
+ public override void OnActionExecuting(ActionExecutingContext filterContext)
+ {
+ filterContext.Controller.ViewBag.NGon = new ExpandoObject();
+ base.OnActionExecuting(filterContext);
+ }
+ }
+}
View
36 NGon/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("NGon")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Microsoft")]
+[assembly: AssemblyProduct("NGon")]
+[assembly: AssemblyCopyright("Copyright © Microsoft 2012")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("c45ae998-1409-4ea9-a0b0-847c439b3cce")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
View
BIN  packages/EntityFramework.4.1.10331.0/EntityFramework.4.1.10331.0.nupkg
Binary file not shown
View
BIN  packages/EntityFramework.4.1.10331.0/lib/EntityFramework.dll
Binary file not shown
View
13,206 packages/EntityFramework.4.1.10331.0/lib/EntityFramework.xml
13,206 additions, 0 deletions not shown
View
969 packages/Modernizr.1.7/Content/Scripts/modernizr-1.7.js
@@ -0,0 +1,969 @@
+/*!
+* Note: While Microsoft is not the author of this file, Microsoft is
+* offering you a license subject to the terms of the Microsoft Software
+* License Terms for Microsoft ASP.NET Model View Controller 3.
+* Microsoft reserves all other rights. The notices below are provided
+* for informational purposes only and are not the license terms under
+* which Microsoft distributed this file.
+*
+* Modernizr v1.7
+* http://www.modernizr.com
+*
+* Developed by:
+* - Faruk Ates http://farukat.es/
+* - Paul Irish http://paulirish.com/
+*
+* Copyright (c) 2009-2011
+*/
+
+
+/*
+ * Modernizr is a script that detects native CSS3 and HTML5 features
+ * available in the current UA and provides an object containing all
+ * features with a true/false value, depending on whether the UA has
+ * native support for it or not.
+ *
+ * Modernizr will also add classes to the <html> element of the page,
+ * one for each feature it detects. If the UA supports it, a class
+ * like "cssgradients" will be added. If not, the class name will be
+ * "no-cssgradients". This allows for simple if-conditionals in your
+ * CSS, giving you fine control over the look & feel of your website.
+ *
+ * @author Faruk Ates
+ * @author Paul Irish
+ * @copyright (c) 2009-2011 Faruk Ates.
+ * @contributor Ben Alman
+ */
+
+window.Modernizr = (function(window,document,undefined){
+
+ var version = '1.7',
+
+ ret = {},
+
+ /**
+ * !! DEPRECATED !!
+ *
+ * enableHTML5 is a private property for advanced use only. If enabled,
+ * it will make Modernizr.init() run through a brief while() loop in
+ * which it will create all HTML5 elements in the DOM to allow for
+ * styling them in Internet Explorer, which does not recognize any
+ * non-HTML4 elements unless created in the DOM this way.
+ *
+ * enableHTML5 is ON by default.
+ *
+ * The enableHTML5 toggle option is DEPRECATED as per 1.6, and will be
+ * replaced in 2.0 in lieu of the modular, configurable nature of 2.0.
+ */
+ enableHTML5 = true,
+
+
+ docElement = document.documentElement,
+ docHead = document.head || document.getElementsByTagName('head')[0],
+
+ /**
+ * Create our "modernizr" element that we do most feature tests on.
+ */
+ mod = 'modernizr',
+ modElem = document.createElement( mod ),
+ m_style = modElem.style,
+
+ /**
+ * Create the input element for various Web Forms feature tests.
+ */
+ inputElem = document.createElement( 'input' ),
+
+ smile = ':)',
+
+ tostring = Object.prototype.toString,
+
+ // List of property values to set for css tests. See ticket #21
+ prefixes = ' -webkit- -moz- -o- -ms- -khtml- '.split(' '),
+
+ // Following spec is to expose vendor-specific style properties as:
+ // elem.style.WebkitBorderRadius
+ // and the following would be incorrect:
+ // elem.style.webkitBorderRadius
+
+ // Webkit ghosts their properties in lowercase but Opera & Moz do not.
+ // Microsoft foregoes prefixes entirely <= IE8, but appears to
+ // use a lowercase `ms` instead of the correct `Ms` in IE9
+
+ // More here: http://github.com/Modernizr/Modernizr/issues/issue/21
+ domPrefixes = 'Webkit Moz O ms Khtml'.split(' '),
+
+ ns = {'svg': 'http://www.w3.org/2000/svg'},
+
+ tests = {},
+ inputs = {},
+ attrs = {},
+
+ classes = [],
+
+ featurename, // used in testing loop
+
+
+
+ // todo: consider using http://javascript.nwbox.com/CSSSupport/css-support.js instead
+ testMediaQuery = function(mq){
+
+ var st = document.createElement('style'),
+ div = document.createElement('div'),
+ ret;
+
+ st.textContent = mq + '{#modernizr{height:3px}}';
+ docHead.appendChild(st);
+ div.id = 'modernizr';
+ docElement.appendChild(div);
+
+ ret = div.offsetHeight === 3;
+
+ st.parentNode.removeChild(st);
+ div.parentNode.removeChild(div);
+
+ return !!ret;
+
+ },
+
+
+ /**
+ * isEventSupported determines if a given element supports the given event
+ * function from http://yura.thinkweb2.com/isEventSupported/
+ */
+ isEventSupported = (function(){
+
+ var TAGNAMES = {
+ 'select':'input','change':'input',
+ 'submit':'form','reset':'form',
+ 'error':'img','load':'img','abort':'img'
+ };
+
+ function isEventSupported(eventName, element) {
+
+ element = element || document.createElement(TAGNAMES[eventName] || 'div');
+ eventName = 'on' + eventName;
+
+ // When using `setAttribute`, IE skips "unload", WebKit skips "unload" and "resize", whereas `in` "catches" those
+ var isSupported = (eventName in element);
+
+ if (!isSupported) {
+ // If it has no `setAttribute` (i.e. doesn't implement Node interface), try generic element
+ if (!element.setAttribute) {
+ element = document.createElement('div');
+ }
+ if (element.setAttribute && element.removeAttribute) {
+ element.setAttribute(eventName, '');
+ isSupported = is(element[eventName], 'function');
+
+ // If property was created, "remove it" (by setting value to `undefined`)
+ if (!is(element[eventName], undefined)) {
+ element[eventName] = undefined;
+ }
+ element.removeAttribute(eventName);
+ }
+ }
+
+ element = null;
+ return isSupported;
+ }
+ return isEventSupported;
+ })();
+
+
+ // hasOwnProperty shim by kangax needed for Safari 2.0 support
+ var _hasOwnProperty = ({}).hasOwnProperty, hasOwnProperty;
+ if (!is(_hasOwnProperty, undefined) && !is(_hasOwnProperty.call, undefined)) {
+ hasOwnProperty = function (object, property) {
+ return _hasOwnProperty.call(object, property);
+ };
+ }
+ else {
+ hasOwnProperty = function (object, property) { /* yes, this can give false positives/negatives, but most of the time we don't care about those */
+ return ((property in object) && is(object.constructor.prototype[property], undefined));
+ };
+ }
+
+ /**
+ * set_css applies given styles to the Modernizr DOM node.
+ */
+ function set_css( str ) {
+ m_style.cssText = str;
+ }
+
+ /**
+ * set_css_all extrapolates all vendor-specific css strings.
+ */
+ function set_css_all( str1, str2 ) {
+ return set_css(prefixes.join(str1 + ';') + ( str2 || '' ));
+ }
+
+ /**
+ * is returns a boolean for if typeof obj is exactly type.
+ */
+ function is( obj, type ) {
+ return typeof obj === type;
+ }
+
+ /**
+ * contains returns a boolean for if substr is found within str.
+ */
+ function contains( str, substr ) {
+ return (''+str).indexOf( substr ) !== -1;
+ }
+
+ /**
+ * test_props is a generic CSS / DOM property test; if a browser supports
+ * a certain property, it won't return undefined for it.
+ * A supported CSS property returns empty string when its not yet set.
+ */
+ function test_props( props, callback ) {
+ for ( var i in props ) {
+ if ( m_style[ props[i] ] !== undefined && ( !callback || callback( props[i], modElem ) ) ) {
+ return true;
+ }
+ }
+ }
+
+ /**
+ * test_props_all tests a list of DOM properties we want to check against.
+ * We specify literally ALL possible (known and/or likely) properties on
+ * the element including the non-vendor prefixed one, for forward-
+ * compatibility.
+ */
+ function test_props_all( prop, callback ) {
+
+ var uc_prop = prop.charAt(0).toUpperCase() + prop.substr(1),
+ props = (prop + ' ' + domPrefixes.join(uc_prop + ' ') + uc_prop).split(' ');
+
+ return !!test_props( props, callback );
+ }
+
+
+ /**
+ * Tests
+ * -----
+ */
+
+ tests['flexbox'] = function() {
+ /**
+ * set_prefixed_value_css sets the property of a specified element
+ * adding vendor prefixes to the VALUE of the property.
+ * @param {Element} element
+ * @param {string} property The property name. This will not be prefixed.
+ * @param {string} value The value of the property. This WILL be prefixed.
+ * @param {string=} extra Additional CSS to append unmodified to the end of
+ * the CSS string.
+ */
+ function set_prefixed_value_css(element, property, value, extra) {
+ property += ':';
+ element.style.cssText = (property + prefixes.join(value + ';' + property)).slice(0, -property.length) + (extra || '');
+ }
+
+ /**
+ * set_prefixed_property_css sets the property of a specified element
+ * adding vendor prefixes to the NAME of the property.
+ * @param {Element} element
+ * @param {string} property The property name. This WILL be prefixed.
+ * @param {string} value The value of the property. This will not be prefixed.
+ * @param {string=} extra Additional CSS to append unmodified to the end of
+ * the CSS string.
+ */
+ function set_prefixed_property_css(element, property, value, extra) {
+ element.style.cssText = prefixes.join(property + ':' + value + ';') + (extra || '');
+ }
+
+ var c = document.createElement('div'),
+ elem = document.createElement('div');
+
+ set_prefixed_value_css(c, 'display', 'box', 'width:42px;padding:0;');
+ set_prefixed_property_css(elem, 'box-flex', '1', 'width:10px;');
+
+ c.appendChild(elem);
+ docElement.appendChild(c);
+
+ var ret = elem.offsetWidth === 42;
+
+ c.removeChild(elem);
+ docElement.removeChild(c);
+
+ return ret;
+ };
+
+ // On the S60 and BB Storm, getContext exists, but always returns undefined
+ // http://github.com/Modernizr/Modernizr/issues/issue/97/
+
+ tests['canvas'] = function() {
+ var elem = document.createElement( 'canvas' );
+ return !!(elem.getContext && elem.getContext('2d'));
+ };
+
+ tests['canvastext'] = function() {
+ return !!(ret['canvas'] && is(document.createElement( 'canvas' ).getContext('2d').fillText, 'function'));
+ };
+
+ // This WebGL test false positives in FF depending on graphics hardware. But really it's quite impossible to know
+ // wether webgl will succeed until after you create the context. You might have hardware that can support
+ // a 100x100 webgl canvas, but will not support a 1000x1000 webgl canvas. So this feature inference is weak,
+ // but intentionally so.
+ tests['webgl'] = function(){
+ return !!window.WebGLRenderingContext;
+ };
+
+ /*
+ * The Modernizr.touch test only indicates if the browser supports
+ * touch events, which does not necessarily reflect a touchscreen
+ * device, as evidenced by tablets running Windows 7 or, alas,
+ * the Palm Pre / WebOS (touch) phones.
+ *
+ * Additionally, Chrome (desktop) used to lie about its support on this,
+ * but that has since been rectified: http://crbug.com/36415
+ *
+ * We also test for Firefox 4 Multitouch Support.
+ *
+ * For more info, see: http://modernizr.github.com/Modernizr/touch.html
+ */
+
+ tests['touch'] = function() {
+
+ return ('ontouchstart' in window) || testMediaQuery('@media ('+prefixes.join('touch-enabled),(')+'modernizr)');
+
+ };
+
+
+ /**
+ * geolocation tests for the new Geolocation API specification.
+ * This test is a standards compliant-only test; for more complete
+ * testing, including a Google Gears fallback, please see:
+ * http://code.google.com/p/geo-location-javascript/
+ * or view a fallback solution using google's geo API:
+ * http://gist.github.com/366184
+ */
+ tests['geolocation'] = function() {
+ return !!navigator.geolocation;
+ };
+
+ // Per 1.6:
+ // This used to be Modernizr.crosswindowmessaging but the longer
+ // name has been deprecated in favor of a shorter and property-matching one.
+ // The old API is still available in 1.6, but as of 2.0 will throw a warning,
+ // and in the first release thereafter disappear entirely.
+ tests['postmessage'] = function() {
+ return !!window.postMessage;
+ };
+
+ // Web SQL database detection is tricky:
+
+ // In chrome incognito mode, openDatabase is truthy, but using it will
+ // throw an exception: http://crbug.com/42380
+ // We can create a dummy database, but there is no way to delete it afterwards.
+
+ // Meanwhile, Safari users can get prompted on any database creation.
+ // If they do, any page with Modernizr will give them a prompt:
+ // http://github.com/Modernizr/Modernizr/issues/closed#issue/113
+
+ // We have chosen to allow the Chrome incognito false positive, so that Modernizr
+ // doesn't litter the web with these test databases. As a developer, you'll have
+ // to account for this gotcha yourself.
+ tests['websqldatabase'] = function() {
+ var result = !!window.openDatabase;
+ /* if (result){
+ try {
+ result = !!openDatabase( mod + "testdb", "1.0", mod + "testdb", 2e4);
+ } catch(e) {
+ }
+ } */
+ return result;
+ };
+
+ // Vendors have inconsistent prefixing with the experimental Indexed DB:
+ // - Firefox is shipping indexedDB in FF4 as moz_indexedDB
+ // - Webkit's implementation is accessible through webkitIndexedDB
+ // We test both styles.
+ tests['indexedDB'] = function(){
+ for (var i = -1, len = domPrefixes.length; ++i < len; ){
+ var prefix = domPrefixes[i].toLowerCase();
+ if (window[prefix + '_indexedDB'] || window[prefix + 'IndexedDB']){
+ return true;
+ }
+ }
+ return false;
+ };
+
+ // documentMode logic from YUI to filter out IE8 Compat Mode
+ // which false positives.
+ tests['hashchange'] = function() {
+ return isEventSupported('hashchange', window) && ( document.documentMode === undefined || document.documentMode > 7 );
+ };
+
+ // Per 1.6:
+ // This used to be Modernizr.historymanagement but the longer
+ // name has been deprecated in favor of a shorter and property-matching one.
+ // The old API is still available in 1.6, but as of 2.0 will throw a warning,
+ // and in the first release thereafter disappear entirely.
+ tests['history'] = function() {
+ return !!(window.history && history.pushState);
+ };
+
+ tests['draganddrop'] = function() {
+ return isEventSupported('dragstart') && isEventSupported('drop');
+ };
+
+ tests['websockets'] = function(){
+ return ('WebSocket' in window);
+ };
+
+
+ // http://css-tricks.com/rgba-browser-support/
+ tests['rgba'] = function() {
+ // Set an rgba() color and check the returned value
+
+ set_css( 'background-color:rgba(150,255,150,.5)' );
+
+ return contains( m_style.backgroundColor, 'rgba' );
+ };
+
+ tests['hsla'] = function() {
+ // Same as rgba(), in fact, browsers re-map hsla() to rgba() internally,
+ // except IE9 who retains it as hsla
+
+ set_css('background-color:hsla(120,40%,100%,.5)' );
+
+ return contains( m_style.backgroundColor, 'rgba' ) || contains( m_style.backgroundColor, 'hsla' );
+ };
+
+ tests['multiplebgs'] = function() {
+ // Setting multiple images AND a color on the background shorthand property
+ // and then querying the style.background property value for the number of
+ // occurrences of "url(" is a reliable method for detecting ACTUAL support for this!
+
+ set_css( 'background:url(//:),url(//:),red url(//:)' );
+
+ // If the UA supports multiple backgrounds, there should be three occurrences
+ // of the string "url(" in the return value for elem_style.background
+
+ return new RegExp("(url\\s*\\(.*?){3}").test(m_style.background);
+ };
+
+
+ // In testing support for a given CSS property, it's legit to test:
+ // `elem.style[styleName] !== undefined`
+ // If the property is supported it will return an empty string,
+ // if unsupported it will return undefined.
+
+ // We'll take advantage of this quick test and skip setting a style
+ // on our modernizr element, but instead just testing undefined vs
+ // empty string.
+
+
+ tests['backgroundsize'] = function() {
+ return test_props_all( 'backgroundSize' );
+ };
+
+ tests['borderimage'] = function() {
+ return test_props_all( 'borderImage' );
+ };
+
+
+ // Super comprehensive table about all the unique implementations of
+ // border-radius: http://muddledramblings.com/table-of-css3-border-radius-compliance
+
+ tests['borderradius'] = function() {
+ return test_props_all( 'borderRadius', '', function( prop ) {
+ return contains( prop, 'orderRadius' );
+ });
+ };
+
+ // WebOS unfortunately false positives on this test.
+ tests['boxshadow'] = function() {
+ return test_props_all( 'boxShadow' );
+ };
+
+ // FF3.0 will false positive on this test
+ tests['textshadow'] = function(){
+ return document.createElement('div').style.textShadow === '';
+ };
+
+
+ tests['opacity'] = function() {
+ // Browsers that actually have CSS Opacity implemented have done so
+ // according to spec, which means their return values are within the
+ // range of [0.0,1.0] - including the leading zero.
+
+ set_css_all( 'opacity:.55' );
+
+ // The non-literal . in this regex is intentional:
+ // German Chrome returns this value as 0,55
+ // https://github.com/Modernizr/Modernizr/issues/#issue/59/comment/516632
+ return /^0.55$/.test(m_style.opacity);
+ };
+
+
+ tests['cssanimations'] = function() {
+ return test_props_all( 'animationName' );
+ };
+
+
+ tests['csscolumns'] = function() {
+ return test_props_all( 'columnCount' );
+ };
+
+
+ tests['cssgradients'] = function() {
+ /**
+ * For CSS Gradients syntax, please see:
+ * http://webkit.org/blog/175/introducing-css-gradients/
+ * https://developer.mozilla.org/en/CSS/-moz-linear-gradient
+ * https://developer.mozilla.org/en/CSS/-moz-radial-gradient
+ * http://dev.w3.org/csswg/css3-images/#gradients-
+ */
+
+ var str1 = 'background-image:',
+ str2 = 'gradient(linear,left top,right bottom,from(#9f9),to(white));',
+ str3 = 'linear-gradient(left top,#9f9, white);';
+
+ set_css(
+ (str1 + prefixes.join(str2 + str1) + prefixes.join(str3 + str1)).slice(0,-str1.length)
+ );
+
+ return contains( m_style.backgroundImage, 'gradient' );
+ };
+
+
+ tests['cssreflections'] = function() {
+ return test_props_all( 'boxReflect' );
+ };
+
+
+ tests['csstransforms'] = function() {
+ return !!test_props([ 'transformProperty', 'WebkitTransform', 'MozTransform', 'OTransform', 'msTransform' ]);
+ };
+
+
+ tests['csstransforms3d'] = function() {
+
+ var ret = !!test_props([ 'perspectiveProperty', 'WebkitPerspective', 'MozPerspective', 'OPerspective', 'msPerspective' ]);
+
+ // Webkit’s 3D transforms are passed off to the browser's own graphics renderer.
+ // It works fine in Safari on Leopard and Snow Leopard, but not in Chrome in
+ // some conditions. As a result, Webkit typically recognizes the syntax but
+ // will sometimes throw a false positive, thus we must do a more thorough check:
+ if (ret && 'webkitPerspective' in docElement.style){
+
+ // Webkit allows this media query to succeed only if the feature is enabled.
+ // `@media (transform-3d),(-o-transform-3d),(-moz-transform-3d),(-ms-transform-3d),(-webkit-transform-3d),(modernizr){ ... }`
+ ret = testMediaQuery('@media ('+prefixes.join('transform-3d),(')+'modernizr)');
+ }
+ return ret;
+ };
+
+
+ tests['csstransitions'] = function() {
+ return test_props_all( 'transitionProperty' );
+ };
+
+
+ // @font-face detection routine by Diego Perini
+ // http://javascript.nwbox.com/CSSSupport/
+ tests['fontface'] = function(){
+
+ var
+ sheet, bool,
+ head = docHead || docElement,
+ style = document.createElement("style"),
+ impl = document.implementation || { hasFeature: function() { return false; } };
+
+ style.type = 'text/css';
+ head.insertBefore(style, head.firstChild);
+ sheet = style.sheet || style.styleSheet;
+
+ var supportAtRule = impl.hasFeature('CSS2', '') ?
+ function(rule) {
+ if (!(sheet && rule)) return false;
+ var result = false;
+ try {
+ sheet.insertRule(rule, 0);
+ result = (/src/i).test(sheet.cssRules[0].cssText);
+ sheet.deleteRule(sheet.cssRules.length - 1);
+ } catch(e) { }
+ return result;
+ } :
+ function(rule) {
+ if (!(sheet && rule)) return false;
+ sheet.cssText = rule;
+
+ return sheet.cssText.length !== 0 && (/src/i).test(sheet.cssText) &&
+ sheet.cssText
+ .replace(/\r+|\n+/g, '')
+ .indexOf(rule.split(' ')[0]) === 0;
+ };
+
+ bool = supportAtRule('@font-face { font-family: "font"; src: url(data:,); }');
+ head.removeChild(style);
+ return bool;
+ };
+
+
+ // These tests evaluate support of the video/audio elements, as well as
+ // testing what types of content they support.
+ //
+ // We're using the Boolean constructor here, so that we can extend the value
+ // e.g. Modernizr.video // true
+ // Modernizr.video.ogg // 'probably'
+ //
+ // Codec values from : http://github.com/NielsLeenheer/html5test/blob/9106a8/index.html#L845
+ // thx to NielsLeenheer and zcorpan
+
+ // Note: in FF 3.5.1 and 3.5.0, "no" was a return value instead of empty string.
+ // Modernizr does not normalize for that.
+
+ tests['video'] = function() {
+ var elem = document.createElement('video'),
+ bool = !!elem.canPlayType;
+
+ if (bool){
+ bool = new Boolean(bool);
+ bool.ogg = elem.canPlayType('video/ogg; codecs="theora"');
+
+ // Workaround required for IE9, which doesn't report video support without audio codec specified.
+ // bug 599718 @ msft connect
+ var h264 = 'video/mp4; codecs="avc1.42E01E';
+ bool.h264 = elem.canPlayType(h264 + '"') || elem.canPlayType(h264 + ', mp4a.40.2"');
+
+ bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"');
+ }
+ return bool;
+ };
+
+ tests['audio'] = function() {
+ var elem = document.createElement('audio'),
+ bool = !!elem.canPlayType;
+
+ if (bool){
+ bool = new Boolean(bool);
+ bool.ogg = elem.canPlayType('audio/ogg; codecs="vorbis"');
+ bool.mp3 = elem.canPlayType('audio/mpeg;');
+
+ // Mimetypes accepted:
+ // https://developer.mozilla.org/En/Media_formats_supported_by_the_audio_and_video_elements
+ // http://bit.ly/iphoneoscodecs
+ bool.wav = elem.canPlayType('audio/wav; codecs="1"');
+ bool.m4a = elem.canPlayType('audio/x-m4a;') || elem.canPlayType('audio/aac;');
+ }
+ return bool;
+ };
+
+
+ // Firefox has made these tests rather unfun.
+
+ // In FF4, if disabled, window.localStorage should === null.
+
+ // Normally, we could not test that directly and need to do a
+ // `('localStorage' in window) && ` test first because otherwise Firefox will
+ // throw http://bugzil.la/365772 if cookies are disabled
+
+ // However, in Firefox 4 betas, if dom.storage.enabled == false, just mentioning
+ // the property will throw an exception. http://bugzil.la/599479
+ // This looks to be fixed for FF4 Final.
+
+ // Because we are forced to try/catch this, we'll go aggressive.
+
+ // FWIW: IE8 Compat mode supports these features completely:
+ // http://www.quirksmode.org/dom/html5.html
+ // But IE8 doesn't support either with local files
+
+ tests['localstorage'] = function() {
+ try {
+ return !!localStorage.getItem;
+ } catch(e) {
+ return false;
+ }
+ };
+
+ tests['sessionstorage'] = function() {
+ try {
+ return !!sessionStorage.getItem;
+ } catch(e){
+ return false;
+ }
+ };
+
+
+ tests['webWorkers'] = function () {
+ return !!window.Worker;
+ };
+
+
+ tests['applicationcache'] = function() {
+ return !!window.applicationCache;
+ };
+
+
+ // Thanks to Erik Dahlstrom
+ tests['svg'] = function(){
+ return !!document.createElementNS && !!document.createElementNS(ns.svg, "svg").createSVGRect;
+ };
+
+ tests['inlinesvg'] = function() {
+ var div = document.createElement('div');
+ div.innerHTML = '<svg/>';
+ return (div.firstChild && div.firstChild.namespaceURI) == ns.svg;
+ };
+
+ // Thanks to F1lt3r and lucideer
+ // http://github.com/Modernizr/Modernizr/issues#issue/35
+ tests['smil'] = function(){
+ return !!document.createElementNS && /SVG/.test(tostring.call(document.createElementNS(ns.svg,'animate')));
+ };
+
+ tests['svgclippaths'] = function(){
+ // Possibly returns a false positive in Safari 3.2?
+ return !!document.createElementNS && /SVG/.test(tostring.call(document.createElementNS(ns.svg,'clipPath')));
+ };
+
+
+ // input features and input types go directly onto the ret object, bypassing the tests loop.
+ // Hold this guy to execute in a moment.
+ function webforms(){
+
+ // Run through HTML5's new input attributes to see if the UA understands any.
+ // We're using f which is the <input> element created early on
+ // Mike Taylr has created a comprehensive resource for testing these attributes
+ // when applied to all input types:
+ // http://miketaylr.com/code/input-type-attr.html
+ // spec: http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary
+ ret['input'] = (function(props) {
+ for (var i = 0, len = props.length; i<len; i++) {
+ attrs[ props[i] ] = !!(props[i] in inputElem);
+ }
+ return attrs;
+ })('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' '));
+
+ // Run through HTML5's new input types to see if the UA understands any.
+ // This is put behind the tests runloop because it doesn't return a
+ // true/false like all the other tests; instead, it returns an object
+ // containing each input type with its corresponding true/false value
+
+ // Big thanks to @miketaylr for the html5 forms expertise. http://miketaylr.com/
+ ret['inputtypes'] = (function(props) {
+
+ for (var i = 0, bool, inputElemType, defaultView, len=props.length; i < len; i++) {
+
+ inputElem.setAttribute('type', inputElemType = props[i]);
+ bool = inputElem.type !== 'text';
+
+ // We first check to see if the type we give it sticks..
+ // If the type does, we feed it a textual value, which shouldn't be valid.
+ // If the value doesn't stick, we know there's input sanitization which infers a custom UI
+ if (bool){
+
+ inputElem.value = smile;
+ inputElem.style.cssText = 'position:absolute;visibility:hidden;';
+
+ if (/^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined){
+
+ docElement.appendChild(inputElem);
+ defaultView = document.defaultView;
+
+ // Safari 2-4 allows the smiley as a value, despite making a slider
+ bool = defaultView.getComputedStyle &&
+ defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' &&
+ // Mobile android web browser has false positive, so must
+ // check the height to see if the widget is actually there.
+ (inputElem.offsetHeight !== 0);
+
+ docElement.removeChild(inputElem);
+
+ } else if (/^(search|tel)$/.test(inputElemType)){
+ // Spec doesnt define any special parsing or detectable UI
+ // behaviors so we pass these through as true
+
+ // Interestingly, opera fails the earlier test, so it doesn't
+ // even make it here.
+
+ } else if (/^(url|email)$/.test(inputElemType)) {
+ // Real url and email support comes with prebaked validation.
+ bool = inputElem.checkValidity && inputElem.checkValidity() === false;
+
+ } else if (/^color$/.test(inputElemType)) {
+ // chuck into DOM and force reflow for Opera bug in 11.00
+ // github.com/Modernizr/Modernizr/issues#issue/159
+ docElement.appendChild(inputElem);
+ docElement.offsetWidth;
+ bool = inputElem.value != smile;
+ docElement.removeChild(inputElem);
+
+ } else {
+ // If the upgraded input compontent rejects the :) text, we got a winner
+ bool = inputElem.value != smile;
+ }
+ }
+
+ inputs[ props[i] ] = !!bool;
+ }
+ return inputs;
+ })('search tel url email datetime date month week time datetime-local number range color'.split(' '));
+
+ }
+
+
+
+ // End of test definitions
+ // -----------------------
+
+
+
+ // Run through all tests and detect their support in the current UA.
+ // todo: hypothetically we could be doing an array of tests and use a basic loop here.
+ for ( var feature in tests ) {
+ if ( hasOwnProperty( tests, feature ) ) {
+ // run the test, throw the return value into the Modernizr,
+ // then based on that boolean, define an appropriate className
+ // and push it into an array of classes we'll join later.
+ featurename = feature.toLowerCase();
+ ret[ featurename ] = tests[ feature ]();
+
+ classes.push( ( ret[ featurename ] ? '' : 'no-' ) + featurename );
+ }
+ }
+
+ // input tests need to run.
+ if (!ret.input) webforms();
+
+
+
+ // Per 1.6: deprecated API is still accesible for now:
+ ret.crosswindowmessaging = ret.postmessage;
+ ret.historymanagement = ret.history;
+
+
+
+ /**
+ * Addtest allows the user to define their own feature tests
+ * the result will be added onto the Modernizr object,
+ * as well as an appropriate className set on the html element
+ *
+ * @param feature - String naming the feature
+ * @param test - Function returning true if feature is supported, false if not
+ */
+ ret.addTest = function (feature, test) {
+ feature = feature.toLowerCase();
+
+ if (ret[ feature ]) {
+ return; // quit if you're trying to overwrite an existing test
+ }
+ test = !!(test());
+ docElement.className += ' ' + (test ? '' : 'no-') + feature;
+ ret[ feature ] = test;
+ return ret; // allow chaining.
+ };
+
+ /**
+ * Reset m.style.cssText to nothing to reduce memory footprint.
+ */
+ set_css( '' );
+ modElem = inputElem = null;
+
+ //>>BEGIN IEPP
+ // Enable HTML 5 elements for styling in IE.
+ // fyi: jscript version does not reflect trident version
+ // therefore ie9 in ie7 mode will still have a jScript v.9
+ if ( enableHTML5 && window.attachEvent && (function(){ var elem = document.createElement("div");
+ elem.innerHTML = "<elem></elem>";
+ return elem.childNodes.length !== 1; })()) {
+ // iepp v1.6.2 by @jon_neal : code.google.com/p/ie-print-protector
+ (function(win, doc) {
+ var elems = 'abbr|article|aside|audio|canvas|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video',
+ elemsArr = elems.split('|'),
+ elemsArrLen = elemsArr.length,
+ elemRegExp = new RegExp('(^|\\s)('+elems+')', 'gi'),
+ tagRegExp = new RegExp('<(\/*)('+elems+')', 'gi'),
+ ruleRegExp = new RegExp('(^|[^\\n]*?\\s)('+elems+')([^\\n]*)({[\\n\\w\\W]*?})', 'gi'),
+ docFrag = doc.createDocumentFragment(),
+ html = doc.documentElement,
+ head = html.firstChild,
+ bodyElem = doc.createElement('body'),
+ styleElem = doc.createElement('style'),
+ body;
+ function shim(doc) {
+ var a = -1;
+ while (++a < elemsArrLen)
+ // Use createElement so IE allows HTML5-named elements in a document
+ doc.createElement(elemsArr[a]);
+ }
+ function getCSS(styleSheetList, mediaType) {
+ var a = -1,
+ len = styleSheetList.length,
+ styleSheet,
+ cssTextArr = [];
+ while (++a < len) {
+ styleSheet = styleSheetList[a];
+ // Get css from all non-screen stylesheets and their imports
+ if ((mediaType = styleSheet.media || mediaType) != 'screen') cssTextArr.push(getCSS(styleSheet.imports, mediaType), styleSheet.cssText);
+ }
+ return cssTextArr.join('');
+ }
+ // Shim the document and iepp fragment
+ shim(doc);
+ shim(docFrag);
+ // Add iepp custom print style element
+ head.insertBefore(styleElem, head.firstChild);
+ styleElem.media = 'print';
+ win.attachEvent(
+ 'onbeforeprint',
+ function() {
+ var a = -1,
+ cssText = getCSS(doc.styleSheets, 'all'),
+ cssTextArr = [],
+ rule;
+ body = body || doc.body;
+ // Get only rules which reference HTML5 elements by name
+ while ((rule = ruleRegExp.exec(cssText)) != null)
+ // Replace all html5 element references with iepp substitute classnames
+ cssTextArr.push((rule[1]+rule[2]+rule[3]).replace(elemRegExp, '$1.iepp_$2')+rule[4]);
+ // Write iepp custom print CSS
+ styleElem.styleSheet.cssText = cssTextArr.join('\n');
+ while (++a < elemsArrLen) {
+ var nodeList = doc.getElementsByTagName(elemsArr[a]),
+ nodeListLen = nodeList.length,
+ b = -1;
+ while (++b < nodeListLen)
+ if (nodeList[b].className.indexOf('iepp_') < 0)
+ // Append iepp substitute classnames to all html5 elements
+ nodeList[b].className += ' iepp_'+elemsArr[a];
+ }
+ docFrag.appendChild(body);
+ html.appendChild(bodyElem);
+ // Write iepp substitute print-safe document
+ bodyElem.className = body.className;
+ // Replace HTML5 elements with <font> which is print-safe and shouldn't conflict since it isn't part of html5
+ bodyElem.innerHTML = body.innerHTML.replace(tagRegExp, '<$1font');
+ }
+ );
+ win.attachEvent(
+ 'onafterprint',
+ function() {
+ // Undo everything done in onbeforeprint
+ bodyElem.innerHTML = '';
+ html.removeChild(bodyElem);
+ html.appendChild(body);
+ styleElem.styleSheet.cssText = '';
+ }
+ );
+ })(window, document);
+ }
+ //>>END IEPP
+
+ // Assign private properties to the return object with prefix
+ ret._enableHTML5 = enableHTML5;
+ ret._version = version;
+
+ // Remove "no-js" class from <html> element, if it exists:
+ docElement.className = docElement.className.replace(/\bno-js\b/,'')
+ + ' js '
+
+ // Add the new classes to the <html> element.
+ + classes.join( ' ' );
+
+ return ret;
+
+})(this,this.document);
View
10 packages/Modernizr.1.7/Content/Scripts/modernizr-1.7.min.js
@@ -0,0 +1,10 @@
+/*!
+* Note: While Microsoft is not the author of this file, Microsoft is
+* offering you a license subject to the terms of the Microsoft Software
+* License Terms for Microsoft ASP.NET Model View Controller 3.
+* Microsoft reserves all other rights. The notices below are provided
+* for informational purposes only and are not the license terms under
+* which Microsoft distributed this file.
+*/
+// Modernizr v1.7 www.modernizr.com
+window.Modernizr=function(a,b,c){function G(){e.input=function(a){for(var b=0,c=a.length;b<c;b++)t[a[b]]=!!(a[b]in l);return t}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)l.setAttribute("type",f=a[d]),e=l.type!=="text",e&&(l.value=m,l.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&l.style.WebkitAppearance!==c?(g.appendChild(l),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(l,null).WebkitAppearance!=="textfield"&&l.offsetHeight!==0,g.removeChild(l)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=l.checkValidity&&l.checkValidity()===!1:/^color$/.test(f)?(g.appendChild(l),g.offsetWidth,e=l.value!=m,g.removeChild(l)):e=l.value!=m)),s[a[d]]=!!e;return s}("search tel url email datetime date month week time datetime-local number range color".split(" "))}function F(a,b){var c=a.charAt(0).toUpperCase()+a.substr(1),d=(a+" "+p.join(c+" ")+c).split(" ");return!!E(d,b)}function E(a,b){for(var d in a)if(k[a[d]]!==c&&(!b||b(a[d],j)))return!0}function D(a,b){return(""+a).indexOf(b)!==-1}function C(a,b){return typeof a===b}function B(a,b){return A(o.join(a+";")+(b||""))}function A(a){k.cssText=a}var d="1.7",e={},f=!0,g=b.documentElement,h=b.head||b.getElementsByTagName("head")[0],i="modernizr",j=b.createElement(i),k=j.style,l=b.createElement("input"),m=":)",n=Object.prototype.toString,o=" -webkit- -moz- -o- -ms- -khtml- ".split(" "),p="Webkit Moz O ms Khtml".split(" "),q={svg:"http://www.w3.org/2000/svg"},r={},s={},t={},u=[],v,w=function(a){var c=b.createElement("style"),d=b.createElement("div"),e;c.textContent=a+"{#modernizr{height:3px}}",h.appendChild(c),d.id="modernizr",g.appendChild(d),e=d.offsetHeight===3,c.parentNode.removeChild(c),d.parentNode.removeChild(d);return!!e},x=function(){function d(d,e){e=e||b.createElement(a[d]||"div");var f=(d="on"+d)in e;f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=C(e[d],"function"),C(e[d],c)||(e[d]=c),e.removeAttribute(d))),e=null;return f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),y=({}).hasOwnProperty,z;C(y,c)||C(y.call,c)?z=function(a,b){return b in a&&C(a.constructor.prototype[b],c)}:z=function(a,b){return y.call(a,b)},r.flexbox=function(){function c(a,b,c,d){a.style.cssText=o.join(b+":"+c+";")+(d||"")}function a(a,b,c,d){b+=":",a.style.cssText=(b+o.join(c+";"+b)).slice(0,-b.length)+(d||"")}var d=b.createElement("div"),e=b.createElement("div");a(d,"display","box","width:42px;padding:0;"),c(e,"box-flex","1","width:10px;"),d.appendChild(e),g.appendChild(d);var f=e.offsetWidth===42;d.removeChild(e),g.removeChild(d);return f},r.canvas=function(){var a=b.createElement("canvas");return a.getContext&&a.getContext("2d")},r.canvastext=function(){return e.canvas&&C(b.createElement("canvas").getContext("2d").fillText,"function")},r.webgl=function(){return!!a.WebGLRenderingContext},r.touch=function(){return"ontouchstart"in a||w("@media ("+o.join("touch-enabled),(")+"modernizr)")},r.geolocation=function(){return!!navigator.geolocation},r.postmessage=function(){return!!a.postMessage},r.websqldatabase=function(){var b=!!a.openDatabase;return b},r.indexedDB=function(){for(var b=-1,c=p.length;++b<c;){var d=p[b].toLowerCase();if(a[d+"_indexedDB"]||a[d+"IndexedDB"])return!0}return!1},r.hashchange=function(){return x("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},r.history=function(){return !!(a.history&&history.pushState)},r.draganddrop=function(){return x("dragstart")&&x("drop")},r.websockets=function(){return"WebSocket"in a},r.rgba=function(){A("background-color:rgba(150,255,150,.5)");return D(k.backgroundColor,"rgba")},r.hsla=function(){A("background-color:hsla(120,40%,100%,.5)");return D(k.backgroundColor,"rgba")||D(k.backgroundColor,"hsla")},r.multiplebgs=function(){A("background:url(//:),url(//:),red url(//:)");return(new RegExp("(url\\s*\\(.*?){3}")).test(k.background)},r.backgroundsize=function(){return F("backgroundSize")},r.borderimage=function(){return F("borderImage")},r.borderradius=function(){return F("borderRadius","",function(a){return D(a,"orderRadius")})},r.boxshadow=function(){return F("boxShadow")},r.textshadow=function(){return b.createElement("div").style.textShadow===""},r.opacity=function(){B("opacity:.55");return/^0.55$/.test(k.opacity)},r.cssanimations=function(){return F("animationName")},r.csscolumns=function(){return F("columnCount")},r.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";A((a+o.join(b+a)+o.join(c+a)).slice(0,-a.length));return D(k.backgroundImage,"gradient")},r.cssreflections=function(){return F("boxReflect")},r.csstransforms=function(){return!!E(["transformProperty","WebkitTransform","MozTransform","OTransform","msTransform"])},r.csstransforms3d=function(){var a=!!E(["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"]);a&&"webkitPerspective"in g.style&&(a=w("@media ("+o.join("transform-3d),(")+"modernizr)"));return a},r.csstransitions=function(){return F("transitionProperty")},r.fontface=function(){var a,c,d=h||g,e=b.createElement("style"),f=b.implementation||{hasFeature:function(){return!1}};e.type="text/css",d.insertBefore(e,d.firstChild),a=e.sheet||e.styleSheet;var i=f.hasFeature("CSS2","")?function(b){if(!a||!b)return!1;var c=!1;try{a.insertRule(b,0),c=/src/i.test(a.cssRules[0].cssText),a.deleteRule(a.cssRules.length-1)}catch(d){}return c}:function(b){if(!a||!b)return!1;a.cssText=b;return a.cssText.length!==0&&/src/i.test(a.cssText)&&a.cssText.replace(/\r+|\n+/g,"").indexOf(b.split(" ")[0])===0};c=i('@font-face { font-family: "font"; src: url(data:,); }'),d.removeChild(e);return c},r.video=function(){var a=b.createElement("video"),c=!!a.canPlayType;if(c){c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"');var d='video/mp4; codecs="avc1.42E01E';c.h264=a.canPlayType(d+'"')||a.canPlayType(d+', mp4a.40.2"'),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"')}return c},r.audio=function(){var a=b.createElement("audio"),c=!!a.canPlayType;c&&(c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"'),c.mp3=a.canPlayType("audio/mpeg;"),c.wav=a.canPlayType('audio/wav; codecs="1"'),c.m4a=a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;"));return c},r.localstorage=function(){try{return!!localStorage.getItem}catch(a){return!1}},r.sessionstorage=function(){try{return!!sessionStorage.getItem}catch(a){return!1}},r.webWorkers=function(){return!!a.Worker},r.applicationcache=function(){return!!a.applicationCache},r.svg=function(){return!!b.createElementNS&&!!b.createElementNS(q.svg,"svg").createSVGRect},r.inlinesvg=function(){var a=b.createElement("div");a.innerHTML="<svg/>";return(a.firstChild&&a.firstChild.namespaceURI)==q.svg},r.smil=function(){return!!b.createElementNS&&/SVG/.test(n.call(b.createElementNS(q.svg,"animate")))},r.svgclippaths=function(){return!!b.createElementNS&&/SVG/.test(n.call(b.createElementNS(q.svg,"clipPath")))};for(var H in r)z(r,H)&&(v=H.toLowerCase(),e[v]=r[H](),u.push((e[v]?"":"no-")+v));e.input||G(),e.crosswindowmessaging=e.postmessage,e.historymanagement=e.history,e.addTest=function(a,b){a=a.toLowerCase();if(!e[a]){b=!!b(),g.className+=" "+(b?"":"no-")+a,e[a]=b;return e}},A(""),j=l=null,f&&a.attachEvent&&function(){var a=b.createElement("div");a.innerHTML="<elem></elem>";return a.childNodes.length!==1}()&&function(a,b){function p(a,b){var c=-1,d=a.length,e,f=[];while(++c<d)e=a[c],(b=e.media||b)!="screen"&&f.push(p(e.imports,b),e.cssText);return f.join("")}function o(a){var b=-1;while(++b<e)a.createElement(d[b])}var c="abbr|article|aside|audio|canvas|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",d=c.split("|"),e=d.length,f=new RegExp("(^|\\s)("+c+")","gi"),g=new RegExp("<(/*)("+c+")","gi"),h=new RegExp("(^|[^\\n]*?\\s)("+c+")([^\\n]*)({[\\n\\w\\W]*?})","gi"),i=b.createDocumentFragment(),j=b.documentElement,k=j.firstChild,l=b.createElement("body"),m=b.createElement("style"),n;o(b),o(i),k.insertBefore(m,k.firstChild),m.media="print",a.attachEvent("onbeforeprint",function(){var a=-1,c=p(b.styleSheets,"all"),k=[],o;n=n||b.body;while((o=h.exec(c))!=null)k.push((o[1]+o[2]+o[3]).replace(f,"$1.iepp_$2")+o[4]);m.styleSheet.cssText=k.join("\n");while(++a<e){var q=b.getElementsByTagName(d[a]),r=q.length,s=-1;while(++s<r)q[s].className.indexOf("iepp_")<0&&(q[s].className+=" iepp_"+d[a])}i.appendChild(n),j.appendChild(l),l.className=n.className,l.innerHTML=n.innerHTML.replace(g,"<$1font")}),a.attachEvent("onafterprint",function(){l.innerHTML="",j.removeChild(l),j.appendChild(n),m.styleSheet.cssText=""})}(a,b),e._enableHTML5=f,e._version=d,g.className=g.className.replace(/\bno-js\b/,"")+" js "+u.join(" ");return e}(this,this.document)
View
BIN  packages/Modernizr.1.7/Modernizr.1.7.nupkg
Binary file not shown
View
39 packages/Moq.4.0.10827/License.txt
@@ -0,0 +1,39 @@
+Copyright (c) 2007. Clarius Consulting, Manas Technology Solutions, InSTEDD
+http://code.google.com/p/moq/
+All rights reserved.
+
+Redistribution and use in source and binary forms,
+with or without modification, are permitted provided
+that the following conditions are met:
+
+ * Redistributions of source code must retain the
+ above copyright notice, this list of conditions and
+ the following disclaimer.
+
+ * Redistributions in binary form must reproduce
+ the above copyright notice, this list of conditions
+ and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ * Neither the name of Clarius Consulting, Manas Technology Solutions or InSTEDD nor the
+ names of its contributors may be used to endorse
+ or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+[This is the BSD license, see
+ http://www.opensource.org/licenses/bsd-license.php]
View
BIN  packages/Moq.4.0.10827/Moq.4.0.10827.nupkg
Binary file not shown
View
BIN  packages/Moq.4.0.10827/Moq.chm
Binary file not shown
View
BIN  packages/Moq.4.0.10827/lib/NET35/Moq.dll
Binary file not shown
View
BIN  packages/Moq.4.0.10827/lib/NET35/Moq.pdb
Binary file not shown
View
5,768 packages/Moq.4.0.10827/lib/NET35/Moq.xml
5,768 additions, 0 deletions not shown
View
BIN  packages/Moq.4.0.10827/lib/NET40/Moq.dll
Binary file not shown
View
BIN  packages/Moq.4.0.10827/lib/NET40/Moq.pdb
Binary file not shown
View
5,120 packages/Moq.4.0.10827/lib/NET40/Moq.xml
5,120 additions, 0 deletions not shown
View
BIN  packages/Moq.4.0.10827/lib/Silverlight4/Castle.Core.dll
Binary file not shown
View
BIN  packages/Moq.4.0.10827/lib/Silverlight4/Moq.Silverlight.dll
Binary file not shown
View
BIN  packages/Moq.4.0.10827/lib/Silverlight4/Moq.Silverlight.pdb
Binary file not shown
View
5,101 packages/Moq.4.0.10827/lib/Silverlight4/Moq.Silverlight.xml
5,101 additions, 0 deletions not shown
View
BIN  packages/NUnit.2.5.10.11092/Logo.ico
Binary file not shown
View
BIN  packages/NUnit.2.5.10.11092/NUnit.2.5.10.11092.nupkg
Binary file not shown
View
277 packages/NUnit.2.5.10.11092/NUnitFitTests.html
@@ -0,0 +1,277 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+ <body>
+ <h1>NUnit Acceptance Tests</h1>
+ <p>
+ Developers love self-referential programs! Hence, NUnit has always run all it's
+ own tests, even those that are not really unit tests.
+ <p>Now, beginning with NUnit 2.4, NUnit has top-level tests using Ward Cunningham's
+ FIT framework. At this time, the tests are pretty rudimentary, but it's a start
+ and it's a framework for doing more.
+ <h2>Running the Tests</h2>
+ <p>Open a console or shell window and navigate to the NUnit bin directory, which
+ contains this file. To run the test under Microsoft .Net, enter the command
+ <pre> runFile NUnitFitTests.html TestResults.html .</pre>
+ To run it under Mono, enter
+ <pre> mono runFile.exe NUnitFitTests.html TestResults.html .</pre>
+ Note the space and dot at the end of each command. The results of your test
+ will be in TestResults.html in the same directory.
+ <h2>Platform and CLR Version</h2>
+ <table BORDER cellSpacing="0" cellPadding="5">
+ <tr>
+ <td colspan="2">NUnit.Fixtures.PlatformInfo</td>
+ </tr>
+ </table>
+ <h2>Verify Unit Tests</h2>
+ <p>
+ Load and run the NUnit unit tests, verifying that the results are as expected.
+ When these tests are run on different platforms, different numbers of tests may
+ be skipped, so the values for Skipped and Run tests are informational only.
+ <p>
+ The number of tests in each assembly should be constant across all platforms -
+ any discrepancy usually means that one of the test source files was not
+ compiled on the platform. There should be no failures and no tests ignored.
+ <p><b>Note:</b>
+ At the moment, the nunit.extensions.tests assembly is failing because the
+ fixture doesn't initialize addins in the test domain.
+ <p>
+ <table BORDER cellSpacing="0" cellPadding="5">
+ <tr>
+ <td colspan="6">NUnit.Fixtures.AssemblyRunner</td>
+ </tr>
+ <tr>
+ <td>Assembly</td>
+ <td>Tests()</td>
+ <td>Run()</td>
+ <td>Skipped()</td>
+ <td>Ignored()</td>
+ <td>Failures()</td>
+ </tr>
+ <tr>
+ <td>nunit.framework.tests.dll</td>
+ <td>397</td>
+ <td>&nbsp;</td>
+ <td>&nbsp;</td>
+ <td>0</td>
+ <td>0</td>
+ </tr>
+ <tr>
+ <td>nunit.core.tests.dll</td>
+ <td>355</td>
+ <td>&nbsp;</td>
+ <td>&nbsp;</td>
+ <td>0</td>
+ <td>0</td>
+ </tr>
+ <tr>
+ <td>nunit.util.tests.dll</td>
+ <td>238</td>
+ <td>&nbsp;</td>
+