Commit Graph

136 Commits

Author SHA1 Message Date
N. Taylor Mullen 50fa3ee3e3 Create TagHelper specific C# code Generation.
- Added TagHelperChunk generation.
- Added CSharp visitors to understand TagHelperChunks and render corresponding C# code.
- Refactored some code in the CSharpCodeVisitor so it could be utilized in other classes.
- Added a CSharpFieldDeclarationVisitor to render declaration pieces for TagHelper's
- Added metadata to represent specific TagHelper code generation constructs.

#72
2014-10-09 12:57:31 -07:00
N. Taylor Mullen 0b5f0cd565 Rebased onto latest dev.
- Fixed tag helper parse tree visitor rebase error.
2014-10-09 12:50:56 -07:00
N. Taylor Mullen b1b1da0781 Add Microsoft.AspNet.Razor.Runtime src and test project.
#136
2014-10-09 12:50:52 -07:00
N. Taylor Mullen 950828cbab Refactored CodeGeneratorContext to CodeBuilderContext.
- Needed to separate the context's of "generation" and "building" to enable the communication of the TagHelperProvider.
2014-10-09 12:50:49 -07:00
N. Taylor Mullen 20824f37e0 Add tests to verify TagHelperParseTreeVisitor.
- Added tests to validate TagHelperParseTreeVisitor when dealing with valid HTML elements.

#71
2014-10-09 12:50:45 -07:00
N. Taylor Mullen bb3ad0ede4 Fix test to work with TH rewriters.
- Added understanding to the ParserTestBase for TagHelperBlock's
- Added a helper class MarkupTagHelperBlock to make building test TagHelpers easier.
- Fixed some existing tests that "new"d up the RazorParser and didn't obide by the new contract (to provide optimizers).

#71
2014-10-09 12:50:42 -07:00
N. Taylor Mullen 3cba84104d Add TagHelper parse tree visitor.
- The visitor looks for TagBlock's that match registered TagHelpers and rebuilds them into TagHelperBlock's.
- Added the code generator and corresponding chunk for a TagHelperBlock.
- Added syntax tree specific objects & helper methods to create accurate tag helper structures.

#71
2014-10-09 12:50:39 -07:00
Pranav K 83da8e257d Generate code for expressions in design time to enable intellisense
Fixes #80
2014-10-08 09:53:27 -07:00
David Fowler 9bb460d5ab Fixup references 2014-10-05 12:04:53 -07:00
David Fowler 6607fa5fdb Updated target framework 2014-10-04 02:53:12 -07:00
David Fowler 01605cd695 Fixed project.json casing 2014-10-04 02:52:07 -07:00
David Fowler 8d6684ab09 Renamed Project.json to Project.json2 2014-10-04 02:52:07 -07:00
Pranav K f913d8929f Updating CSharpCodeVisitor to generate implicit expressions on a single
line

Fixing 151
2014-10-01 17:20:00 -07:00
Pranav K e5f157565c Removing out var usage 2014-10-01 14:33:14 -07:00
Pranav K d58a6c8c1b Don't calculate checksum in design time mode 2014-09-29 15:33:33 -07:00
Pranav K 5369842384 Ensure pragma checksum is prepended to generated file
Fixes #160
2014-09-29 14:45:26 -07:00
Pranav K 11ee402eec Reviving support for instrumentation in CSharpCodeVisitor
Fixes #42
2014-09-22 17:59:29 -07:00
Ryan Nowak 131c973853 Fix for #90 - removing Enum.HasFlags
This is a perf improvement of about 500ms for our razor code generation
benchmark on my dev box. That's about .8% of the overall execution time of
this benchmark.

This change will remove a bunch of unnessary allocations from the
parsing/code-generation path, and should improve responsiveness.

For reference Enum.HasFlags performs boxing of the enum value, and then
does a type comparison to see if the types are the same. This is
significantly more costly than a normal bitwise and comparison, and it
results in allocations.
2014-09-22 12:45:52 -07:00
Ryan Nowak 2d9b3dd4fb Fix for #91 - Turn some commonly allocated types into structs
These types are allocated for every state transition in the parser (State)
or every character that's read (character reference) and are fairly
compact. Turning them into structs will remove a significant number of unnecessary
allocations in the parser.

For our razor code generation benchmark, making these changes yields about
500-750ms of speedup (out of 40000ms) or about 1%.
2014-09-22 11:28:54 -07:00
Pranav K 102e2e5739 Merge branch 'release' into dev 2014-09-17 12:47:10 -07:00
Pranav K a5668bdbab Make CompleteBlock accessible to derived parser 2014-09-17 12:46:00 -07:00
Pranav K a5201b705a Updating dev NuGet.config 2014-09-17 09:58:27 -07:00
Pranav K 83c4fde451 Updating release NuGet.config 2014-09-17 09:58:25 -07:00
Pranav K 658eed4c0f Removing Activator.CreateInstance call from CodeTreeBuilder 2014-09-11 11:55:01 -07:00
N. Taylor Mullen 489caed17c Validate Tag Helper registration system functionality.
- This involved adding tests to cover GetTagHelpers methods on the default tag helper descriptor provider.

#70
2014-09-08 17:14:31 -07:00
N. Taylor Mullen 555615f60e Add TagHelper registration system.
- This registration system accepts tag descriptors that it then uses to feed requests for tag helpers.
- Added some infrastructure pieces that are used to build up valid tag helper descriptors.

#70
2014-09-08 17:14:22 -07:00
N. Taylor Mullen a9f6a63e7f Test nested tags in script tag fix.
#115
2014-09-08 17:08:45 -07:00
N. Taylor Mullen 82b45387a1 Fix nested tags in script tag.
#115
2014-09-08 17:08:36 -07:00
David Fowler d72045ab66 Updated build.cmd 2014-09-05 01:50:34 -07:00
David Fowler 947ec326e0 Updated to use the new target framework in project.json 2014-08-28 23:43:51 -07:00
N. Taylor Mullen acefdf5f2e Fix tests to work with new TagBlock parsing format.
- These are the fixes to the tests that could not be fixed by altering the core parsing code base.
- Most involve adding TagBlock's, breaking out existing markup blocks and altering some AcceptedCharacter formats.
- Was able to loosen the restrictions on AcceptedCharacter's to allow the body of html tags to accept any character.

#75
2014-08-27 14:13:36 -07:00
N. Taylor Mullen 6114d5d269 Modify parser to group html begin/end elements.
- Added a "Tag" block type.
- Wrapped all begin/end elements in a "Tag" Markup block.

#75
2014-08-26 14:53:09 -07:00
Ryan Nowak ff944e5948 Fix for Razor #84 - Optimize GetSourceLocation
GetSourceLocation is frequently called to determine the location mappings
between the original document and the generated code.

The old implementation did a number of ToString and replace operations to
simplify the math on tracking the position - which put it front and center
in our performance measurements - about 25% of all execution time in a
sampling profile of our perf test.

The new code tracks position as code is written, and avoids allocations.
After these changes GetSourceLocation doesn't show up in the profile.
2014-08-20 13:22:23 -07:00
Pranav K 896cce5b51 Reacting to System.IO package version change 2014-08-20 06:56:35 -07:00
Pranav K 1a8278b7c2 Reacting to System.IO.FileSystem package version change 2014-08-18 15:10:12 -07:00
David Fowler 430105e713 Removed source files from the project 2014-08-15 09:24:16 -07:00
Pranav K f7efb8e90a Updating dev Nuget.config 2014-08-06 12:30:46 -07:00
Pranav K e48ef7b58a Updating release Nuget.config 2014-08-05 15:50:17 -07:00
Pranav K 8aef9ff651 Reacting to System.Collections version change 2014-07-14 15:20:49 -07:00
David Fowler 0d1f308753 Renamed configurations to frameworks in project.json 2014-07-13 22:00:23 -07:00
David Fowler 50a281b92d Fixed build break due to adding configurations 2014-07-10 09:56:18 -07:00
N. Taylor Mullen c7545a0354 Add a virtual BuildClassDeclaration method to CSharpCodeBuilder.
This extensibility point needs to be an override and not a pure visitor due to how the class declaration is created (only 1 right way to write the class).

#76
2014-06-27 10:26:52 -07:00
David Fowler e4911323a6 React to resource changes
#59
2014-06-25 23:48:19 -07:00
Brice Lambson 97eda9d22e Updating dev Nuget.config 2014-06-20 14:33:19 -07:00
Brice Lambson dbd69a4464 Updating release Nuget.config 2014-06-20 14:33:18 -07:00
Brice Lambson c0fe1428b2 Bump version to 4.0.0-* 2014-06-19 16:44:54 -07:00
Wei Wang 682c2fd007 Change the default author in makefile.shade 2014-06-18 16:39:24 -07:00
N. Taylor Mullen 8099dcda63 Remove error for "@" in nested codeblocks.
Also removed the corresponding test and resource for this change.

#64
2014-06-18 14:51:31 -07:00
Pranav K 9afab74b8c Updating build.sh based on KRuntime changes 2014-06-10 17:24:06 -07:00
N. Taylor Mullen 879a50846a Transition Microsoft.AspNet.Razor.Test from csproj to kproj.
The largest sub-segment change was removing the Microsoft.TestCommon project.  Ultimately it involved touching every test file and re-mapping them to use Xunit directly instead of a helper class which was initially ported over for legacy reasons.  Lastly how files were embedded before included the full path to the embedded file; currently there is no path associated with the embedded files so had to make modifications to account for this.  This is a temporary change and I left comments in the locations where we'll need to uncomment out old code once embeded files act the same as they used to.

#18
2014-06-04 14:58:04 -07:00