{-# LANGUAGE TemplateHaskell, QuasiQuotes, OverloadedStrings, CPP #-} -- | This module contains all the code to manage the angular application (javascript and -- directives). During development, the individual javascript and hamlet files will be reloaded -- from disk on every request and served individually (you can test this out by changing the -- javascript or hamlet files and reloading your web browser). When compiling for production, the -- resources are embedded into the executable. module StaticSettings where import Yesod import Yesod.EmbeddedStatic import Yesod.EmbeddedStatic.AngularJavascript #ifdef DEV #define DEV_BOOL True #else #define DEV_BOOL False #endif -- | Create the embedded static subsite. This will create variables: -- -- > embStatic :: EmbeddedStatic -- > ng_modules_example_js :: Route EmbeddedStatic -- > angular_js :: Route EmbeddedStatic -- > bootstrap_min_css :: Route EmbeddedStatic -- mkEmbeddedStatic DEV_BOOL "embStatic" [ embedNgModule "yesod-example" "ng-modules/example.js" "example/angular-app" return -- * The Angular module will be named yesod-example and this must match the ng-app inside the view. -- * The javascript code will be located inside the static subsite at ng-modules/example.js -- * This file is designed to be compiled from the .cabal file so the path includes -- @example@ to be relative to the directory containing the .cabal file. -- * The javascript minifier is just `return` so that you can see what the generated -- javascript looks like. Usually you would use `uglifyJs` or `jasmine` from -- Yesod.EmbeddedStatic.Generators. Also, during production the javascript will have -- inline dependency injection annotations, both at the top level and the controller -- function within my-tabs.js. This is so that minimizers like uglifyJs which rename -- variables do not mess up the dependency injection. , concatFilesWith "angular.js" jasmine ["example/static/angular.js"] -- This embeds Angular itself. Note this file is the unminified angular.js so that during -- development the unminified code is available. During production, the code will be minified -- with jasmine. You might consider instead using a CDN; I did not so that this example -- works offline. , embedFileAt "bootstrap.min.css" "example/static/bootstrap.min.css" -- Embeds bootstrap. ]