úÎZXNone ZParse the javascript file and convert all DI functions that rely on variable names to use < inline annotation so that the javascript can be minimized. 4DI a single argument which is a function expression NConvert a function parameter to a string literal and convert comma to elision ECheck a directive body to see if we need to DI cleanup a controller. 6Check if a statement is a return of an object literal -Check a property of an object for controller HParse all the javascript files. If the javascript file is a directive, O the directive has a templateUrl, and there is a matching hamlet file, add the ) (id, hamlet file) into the return list. ;Check a single javascript file to see if it is a directive Search for the directive ID *Parse module.directive(... function(..) { 2check the function argument to the directive call BCheck a statement inside the factory function for return { .. }; 'Check a property in the object literal     None An angular module entry `Embed the javascript and directive templates from a single directory into the static subsite as ` a single Angular module file. For this to work, the directive templates cannot use any hamlet  variable interpolation. During development, each .js9 file is served separately (with some code to define the module _ variable) and at the location where the combined file would appear during production, a small ! script which just loads all the .js; files from the directory is served. This makes debugging  much easier. 8This generator produces one variable definition of type Route EmbeddedStatic which is named by  passing the location through . 8Embed multiple angular modules into the static subsite. ZAll subdirectories within the given directory are assumed to be angular modules, and each % subdirectory is embedded by calling ' on it. The subdirectory name is used ` for the module name. The location for the module will be the location given to this generator . combined with the subdirectory name and then .js. Same as A but the directive templates are not included. Use this if your % directive templates require variable/9type safe route interpolation. Your directive templates ( should then instead be inserted into a WidgetT site IO () using  and then  embedded into the final page. JEmbed multiple angular modules without templates into the static subsite. [ All subdirectories within the given directory are assumed to be angular modules, and each % subdirectory is embedded by calling  on it. Multi-module helper  Create a  site IO ()> which contains all the directive templates written in Hamlet ? from the passed in directory. This is only needed if you use  . because your directive templates use variable/url / interpolation. The template will be inside a < script type="text/ ng-template"  id="someid">;, where the ID is found by parsing the javascript code for  templateUrl. This - widget must be inside the tag which has the ng-app attribute. Same as 0 but allows you to specify the hamlet settings. Wrap a widget in a < script type="text/ ng-template" id="someid"> block. 6Convert a hamlet file to javascript for unit testing. `When unit testing the Angular code, the javascript is executed directly (without any processing  by G). But for the directives to work, the Hamlet templates must still be E converted to javascript which inserts the template into the Angular $templateCache. This 8 TH splice takes a path to a hamlet file and produces a  which contains this [ javascript. Before unit testing the javascript code, this TH splice must be run on every  directive hamlet template.  If you use  http://karma-runner.github.iokarma, the   9https://npmjs.org/package/karma-ng-hamlet2js-preprocessorkarma-ng-hamlet2js-preprocessor " does this automatically by using runghc+ to run a small Haskell script which calls  9. The example application uses this karma preprocessor.  !"# location  module name directory for module incomming url to check Angular module name Elocation within the static subsite for the resulting javascript file .directory on disk (relative to build directory/&directory containing the .cabal file) . which contains the contents of the module. minimizer such as $ or % to use during production. Mdirectory location within the static subsite where the modules should appear .directory on disk (relative to build directory/&directory containing the .cabal file)  containing angular modules. minimizer such as $ or % to use during production. Angular module name Elocation within the static subsite for the resulting javascript file .directory on disk (relative to build directory/directory containing = the .cabal file) which contains the contents of the module. minimizer such as $ or % to use during production. Mdirectory location within the static subsite where the modules should appear .directory on disk (relative to build directory/&directory containing the .cabal file)  containing angular modules. minimizer such as $ or % to use during production. either embedAngularModule or "embedAngularModuleWithoutTemplates Mdirectory location within the static subsite where the modules should appear .directory on disk (relative to build directory/&directory containing the .cabal file)  containing angular modules. minimizer such as $ or % to use during production. ID of the directive the body of the template  !"#&      !"#$%&'()*+,-./yesod-static-angular-0.1.2&Yesod.EmbeddedStatic.AngularJavascript$Yesod.EmbeddedStatic.AngularJsMangle embedNgModuleembedNgModulesembedNgModuleWithoutTemplatesembedNgModulesWithoutTemplatesdirectiveTemplatesdirectiveTemplatesWithSettingsdirectiveWidgethamletTestTemplate cleanupDIFile diFuncExprdiParamdiBodydiReturn diPropertyparseDirectiveFilesparseDirectiveFile parseDirIdparseDirectiveCall parseDirArg parseDirSt parseDirTUrl cleanupDI diTopExpr testPropName firstJustngEntryyesod-static-1.2.4Yesod.EmbeddedStatic.Generators pathToNamemultiyesod-core-1.2.20.1Yesod.Core.TypesWidgetTbytestring-0.10.0.2Data.ByteString.Lazy.Internal ByteString loadModule procTemplatetoCacheproductionModule develModuledevelExtraFilesuglifyJsjasmine