yesod-static-angular 0.1.1 → 0.1.2
raw patch · 12 files changed
+290/−126 lines, 12 files
Files
- Yesod/EmbeddedStatic/AngularJavascript.hs +13/−5
- test/AngularSpec.hs +6/−6
- test/angular/ang1-mod1-dev.js.expected +45/−0
- test/angular/ang2s-mod1-dev.js.expected +45/−0
- test/angular/ang2s-mod2-dev.js.expected +45/−0
- test/angular/ang3-mod1-and-templ-dev.js.expected +45/−0
- test/angular/ang4s-mod1-and-templ-dev.js.expected +45/−0
- test/angular/ang4s-mod2-dev.js.expected +45/−0
- test/angular/mod1-and-templ-dev.js.expected +0/−38
- test/angular/mod1-dev.js.expected +0/−38
- test/angular/mod2-dev.js.expected +0/−38
- yesod-static-angular.cabal +1/−1
Yesod/EmbeddedStatic/AngularJavascript.hs view
@@ -150,17 +150,19 @@ <> "));" mini fileCt -develModule :: Bool -> String -> FilePath -> IO BL.ByteString-develModule inclTempl name dir = do+develModule :: Bool -> String -> Location -> FilePath -> IO BL.ByteString+develModule inclTempl name loc dir = do (jsFiles, tmpls, deps) <- loadModule dir let files = if inclTempl then jsFiles ++ tmpls else jsFiles let script = [julius| (function() {+ if (angular.isUndefined(window.yesod_devel_scripts)) {+ window.yesod_devel_scripts = {};+ } /* We want to defer bootstrap until all scripts are loaded */ if (!/^NG_DEFER_BOOTSTRAP!/.test(window.name)) { window.name = "NG_DEFER_BOOTSTRAP!" + window.name;- window.yesod_devel_scripts = {}; window.yesod_devel_check_loaded = function() { for (var key in window.yesod_devel_scripts) { if (!window.yesod_devel_scripts[key]) {@@ -177,8 +179,13 @@ angular.module(#{toJSON name}, #{deps}); /* Figure out the full path of the current script */- var scripts = document.getElementsByTagName("script"),- path = scripts[scripts.length - 1].src;+ var scripts = document.getElementsByTagName("script"), path;+ for (var i=0; i<scripts.length; i++) {+ if (scripts[i].src.indexOf(#{toJSON loc})>=0) {+ path = scripts[i].src;+ break;+ }+ } /* Add a script tag for each file in the module */ var files = #{toJSON files};@@ -235,6 +242,7 @@ , ebProductionContent = productionModule incTempl name dir mini , ebDevelReload = [| develModule ($(litE $ integerL $ if incTempl then 1 else 0) == (1 :: Integer)) $(litE $ stringL name) + $(litE $ stringL loc) $(litE $ stringL dir) |] , ebDevelExtraFiles = Just [| develExtraFiles (T.splitOn (T.pack "/") $ T.pack $(litE $ stringL loc)) $(litE $ stringL name)
test/AngularSpec.hs view
@@ -85,7 +85,7 @@ describe "Angular" $ do it "embeds a single module without templates" $ do maybe (return ()) assertFailure $ gtError ang1- assertDev ang1 "test/angular/mod1-dev.js.expected"+ assertDev ang1 "test/angular/ang1-mod1-dev.js.expected" assertDevExtra ang1 ["a","b","c","def.js","a.js"] "application/javascript" "test/angular/mod1/a-dev.js.expected" it "embeds multiple modules without templates" $ do@@ -93,8 +93,8 @@ [mod1, mod2] -> do maybe (return ()) assertFailure $ gtError mod1 maybe (return ()) assertFailure $ gtError mod2- assertDev mod1 "test/angular/mod1-dev.js.expected"- assertDev mod2 "test/angular/mod2-dev.js.expected"+ assertDev mod1 "test/angular/ang2s-mod1-dev.js.expected"+ assertDev mod2 "test/angular/ang2s-mod2-dev.js.expected" assertDevExtra mod1 ["angmod","mod1.js","a.js"] "application/javascript" "test/angular/mod1/a-dev.js.expected" assertDevExtra mod2 ["angmod","mod2.js","ctrl.js"] "application/javascript" "test/angular/mod2/ctrl-dev.js.expected" @@ -102,7 +102,7 @@ it "embeds a module together with templates" $ do maybe (return ()) assertFailure $ gtError ang3- assertDev ang3 "test/angular/mod1-and-templ-dev.js.expected"+ assertDev ang3 "test/angular/ang3-mod1-and-templ-dev.js.expected" assertDevExtra ang3 ["module1.js", "my-tabs.hamlet"] "application/javascript" "test/angular/mod1/my-tabs-dev.js.expected" it "embeds multiple modules together with templates" $ do@@ -110,8 +110,8 @@ [mod1, mod2] -> do maybe (return ()) assertFailure $ gtError mod1 maybe (return ()) assertFailure $ gtError mod2- assertDev mod1 "test/angular/mod1-and-templ-dev.js.expected"- assertDev mod2 "test/angular/mod2-dev.js.expected"+ assertDev mod1 "test/angular/ang4s-mod1-and-templ-dev.js.expected"+ assertDev mod2 "test/angular/ang4s-mod2-dev.js.expected" assertDevExtra mod1 ["xxx","mod1.js","my-tabs.hamlet"] "application/javascript" "test/angular/mod1/my-tabs-dev.js.expected" assertDevExtra mod2 ["xxx","mod2.js","ctrl.js"] "application/javascript" "test/angular/mod2/ctrl-dev.js.expected"
+ test/angular/ang1-mod1-dev.js.expected view
@@ -0,0 +1,45 @@++(function() {+ if (angular.isUndefined(window.yesod_devel_scripts)) {+ window.yesod_devel_scripts = {};+ }+ /* We want to defer bootstrap until all scripts are loaded */+ if (!/^NG_DEFER_BOOTSTRAP!/.test(window.name)) {+ window.name = "NG_DEFER_BOOTSTRAP!" + window.name;+ window.yesod_devel_check_loaded = function() {+ for (var key in window.yesod_devel_scripts) {+ if (!window.yesod_devel_scripts[key]) {+ /* Not loaded yet */+ return;+ }+ }+ /* Everything has loaded, bootstrap can continue */+ angular.resumeBootstrap();+ };+ }++ /* Create the module */+ angular.module("mod1", []);++ /* Figure out the full path of the current script */+ var scripts = document.getElementsByTagName("script"), path;+ for (var i=0; i<scripts.length; i++) {+ if (scripts[i].src.indexOf("a/b/c/def.js")>=0) {+ path = scripts[i].src;+ break;+ }+ }++ /* Add a script tag for each file in the module */+ var files = ["a.js","b.js","c.js","my-pane.js","my-tabs.js"];+ for (var i = 0; i < files.length; i++) {+ /* Add the script to the list of scripts to wait for */+ window.yesod_devel_scripts["mod1" + "/" + files[i]] = false;++ var s = document.createElement("script");+ s.type = "application/javascript";+ s.src = path + "/" + files[i];+ document.body.appendChild(s);+ }+})();+
+ test/angular/ang2s-mod1-dev.js.expected view
@@ -0,0 +1,45 @@++(function() {+ if (angular.isUndefined(window.yesod_devel_scripts)) {+ window.yesod_devel_scripts = {};+ }+ /* We want to defer bootstrap until all scripts are loaded */+ if (!/^NG_DEFER_BOOTSTRAP!/.test(window.name)) {+ window.name = "NG_DEFER_BOOTSTRAP!" + window.name;+ window.yesod_devel_check_loaded = function() {+ for (var key in window.yesod_devel_scripts) {+ if (!window.yesod_devel_scripts[key]) {+ /* Not loaded yet */+ return;+ }+ }+ /* Everything has loaded, bootstrap can continue */+ angular.resumeBootstrap();+ };+ }++ /* Create the module */+ angular.module("mod1", []);++ /* Figure out the full path of the current script */+ var scripts = document.getElementsByTagName("script"), path;+ for (var i=0; i<scripts.length; i++) {+ if (scripts[i].src.indexOf("angmod/mod1.js")>=0) {+ path = scripts[i].src;+ break;+ }+ }++ /* Add a script tag for each file in the module */+ var files = ["a.js","b.js","c.js","my-pane.js","my-tabs.js"];+ for (var i = 0; i < files.length; i++) {+ /* Add the script to the list of scripts to wait for */+ window.yesod_devel_scripts["mod1" + "/" + files[i]] = false;++ var s = document.createElement("script");+ s.type = "application/javascript";+ s.src = path + "/" + files[i];+ document.body.appendChild(s);+ }+})();+
+ test/angular/ang2s-mod2-dev.js.expected view
@@ -0,0 +1,45 @@++(function() {+ if (angular.isUndefined(window.yesod_devel_scripts)) {+ window.yesod_devel_scripts = {};+ }+ /* We want to defer bootstrap until all scripts are loaded */+ if (!/^NG_DEFER_BOOTSTRAP!/.test(window.name)) {+ window.name = "NG_DEFER_BOOTSTRAP!" + window.name;+ window.yesod_devel_check_loaded = function() {+ for (var key in window.yesod_devel_scripts) {+ if (!window.yesod_devel_scripts[key]) {+ /* Not loaded yet */+ return;+ }+ }+ /* Everything has loaded, bootstrap can continue */+ angular.resumeBootstrap();+ };+ }++ /* Create the module */+ angular.module("mod2", ["mod1"]);++ /* Figure out the full path of the current script */+ var scripts = document.getElementsByTagName("script"), path;+ for (var i=0; i<scripts.length; i++) {+ if (scripts[i].src.indexOf("angmod/mod2.js")>=0) {+ path = scripts[i].src;+ break;+ }+ }++ /* Add a script tag for each file in the module */+ var files = ["ctrl.js","factory.js"];+ for (var i = 0; i < files.length; i++) {+ /* Add the script to the list of scripts to wait for */+ window.yesod_devel_scripts["mod2" + "/" + files[i]] = false;++ var s = document.createElement("script");+ s.type = "application/javascript";+ s.src = path + "/" + files[i];+ document.body.appendChild(s);+ }+})();+
+ test/angular/ang3-mod1-and-templ-dev.js.expected view
@@ -0,0 +1,45 @@++(function() {+ if (angular.isUndefined(window.yesod_devel_scripts)) {+ window.yesod_devel_scripts = {};+ }+ /* We want to defer bootstrap until all scripts are loaded */+ if (!/^NG_DEFER_BOOTSTRAP!/.test(window.name)) {+ window.name = "NG_DEFER_BOOTSTRAP!" + window.name;+ window.yesod_devel_check_loaded = function() {+ for (var key in window.yesod_devel_scripts) {+ if (!window.yesod_devel_scripts[key]) {+ /* Not loaded yet */+ return;+ }+ }+ /* Everything has loaded, bootstrap can continue */+ angular.resumeBootstrap();+ };+ }++ /* Create the module */+ angular.module("mod1", []);++ /* Figure out the full path of the current script */+ var scripts = document.getElementsByTagName("script"), path;+ for (var i=0; i<scripts.length; i++) {+ if (scripts[i].src.indexOf("module1.js")>=0) {+ path = scripts[i].src;+ break;+ }+ }++ /* Add a script tag for each file in the module */+ var files = ["a.js","b.js","c.js","my-pane.js","my-tabs.js","my-pane.hamlet","my-tabs.hamlet"];+ for (var i = 0; i < files.length; i++) {+ /* Add the script to the list of scripts to wait for */+ window.yesod_devel_scripts["mod1" + "/" + files[i]] = false;++ var s = document.createElement("script");+ s.type = "application/javascript";+ s.src = path + "/" + files[i];+ document.body.appendChild(s);+ }+})();+
+ test/angular/ang4s-mod1-and-templ-dev.js.expected view
@@ -0,0 +1,45 @@++(function() {+ if (angular.isUndefined(window.yesod_devel_scripts)) {+ window.yesod_devel_scripts = {};+ }+ /* We want to defer bootstrap until all scripts are loaded */+ if (!/^NG_DEFER_BOOTSTRAP!/.test(window.name)) {+ window.name = "NG_DEFER_BOOTSTRAP!" + window.name;+ window.yesod_devel_check_loaded = function() {+ for (var key in window.yesod_devel_scripts) {+ if (!window.yesod_devel_scripts[key]) {+ /* Not loaded yet */+ return;+ }+ }+ /* Everything has loaded, bootstrap can continue */+ angular.resumeBootstrap();+ };+ }++ /* Create the module */+ angular.module("mod1", []);++ /* Figure out the full path of the current script */+ var scripts = document.getElementsByTagName("script"), path;+ for (var i=0; i<scripts.length; i++) {+ if (scripts[i].src.indexOf("xxx/mod1.js")>=0) {+ path = scripts[i].src;+ break;+ }+ }++ /* Add a script tag for each file in the module */+ var files = ["a.js","b.js","c.js","my-pane.js","my-tabs.js","my-pane.hamlet","my-tabs.hamlet"];+ for (var i = 0; i < files.length; i++) {+ /* Add the script to the list of scripts to wait for */+ window.yesod_devel_scripts["mod1" + "/" + files[i]] = false;++ var s = document.createElement("script");+ s.type = "application/javascript";+ s.src = path + "/" + files[i];+ document.body.appendChild(s);+ }+})();+
+ test/angular/ang4s-mod2-dev.js.expected view
@@ -0,0 +1,45 @@++(function() {+ if (angular.isUndefined(window.yesod_devel_scripts)) {+ window.yesod_devel_scripts = {};+ }+ /* We want to defer bootstrap until all scripts are loaded */+ if (!/^NG_DEFER_BOOTSTRAP!/.test(window.name)) {+ window.name = "NG_DEFER_BOOTSTRAP!" + window.name;+ window.yesod_devel_check_loaded = function() {+ for (var key in window.yesod_devel_scripts) {+ if (!window.yesod_devel_scripts[key]) {+ /* Not loaded yet */+ return;+ }+ }+ /* Everything has loaded, bootstrap can continue */+ angular.resumeBootstrap();+ };+ }++ /* Create the module */+ angular.module("mod2", ["mod1"]);++ /* Figure out the full path of the current script */+ var scripts = document.getElementsByTagName("script"), path;+ for (var i=0; i<scripts.length; i++) {+ if (scripts[i].src.indexOf("xxx/mod2.js")>=0) {+ path = scripts[i].src;+ break;+ }+ }++ /* Add a script tag for each file in the module */+ var files = ["ctrl.js","factory.js"];+ for (var i = 0; i < files.length; i++) {+ /* Add the script to the list of scripts to wait for */+ window.yesod_devel_scripts["mod2" + "/" + files[i]] = false;++ var s = document.createElement("script");+ s.type = "application/javascript";+ s.src = path + "/" + files[i];+ document.body.appendChild(s);+ }+})();+
− test/angular/mod1-and-templ-dev.js.expected
@@ -1,38 +0,0 @@--(function() {- /* We want to defer bootstrap until all scripts are loaded */- if (!/^NG_DEFER_BOOTSTRAP!/.test(window.name)) {- window.name = "NG_DEFER_BOOTSTRAP!" + window.name;- window.yesod_devel_scripts = {};- window.yesod_devel_check_loaded = function() {- for (var key in window.yesod_devel_scripts) {- if (!window.yesod_devel_scripts[key]) {- /* Not loaded yet */- return;- }- }- /* Everything has loaded, bootstrap can continue */- angular.resumeBootstrap();- };- }-- /* Create the module */- angular.module("mod1", []);-- /* Figure out the full path of the current script */- var scripts = document.getElementsByTagName("script"),- path = scripts[scripts.length - 1].src;-- /* Add a script tag for each file in the module */- var files = ["a.js","b.js","c.js","my-pane.js","my-tabs.js","my-pane.hamlet","my-tabs.hamlet"];- for (var i = 0; i < files.length; i++) {- /* Add the script to the list of scripts to wait for */- window.yesod_devel_scripts["mod1" + "/" + files[i]] = false;-- var s = document.createElement("script");- s.type = "application/javascript";- s.src = path + "/" + files[i];- document.body.appendChild(s);- }-})();-
− test/angular/mod1-dev.js.expected
@@ -1,38 +0,0 @@--(function() {- /* We want to defer bootstrap until all scripts are loaded */- if (!/^NG_DEFER_BOOTSTRAP!/.test(window.name)) {- window.name = "NG_DEFER_BOOTSTRAP!" + window.name;- window.yesod_devel_scripts = {};- window.yesod_devel_check_loaded = function() {- for (var key in window.yesod_devel_scripts) {- if (!window.yesod_devel_scripts[key]) {- /* Not loaded yet */- return;- }- }- /* Everything has loaded, bootstrap can continue */- angular.resumeBootstrap();- };- }-- /* Create the module */- angular.module("mod1", []);-- /* Figure out the full path of the current script */- var scripts = document.getElementsByTagName("script"),- path = scripts[scripts.length - 1].src;-- /* Add a script tag for each file in the module */- var files = ["a.js","b.js","c.js","my-pane.js","my-tabs.js"];- for (var i = 0; i < files.length; i++) {- /* Add the script to the list of scripts to wait for */- window.yesod_devel_scripts["mod1" + "/" + files[i]] = false;-- var s = document.createElement("script");- s.type = "application/javascript";- s.src = path + "/" + files[i];- document.body.appendChild(s);- }-})();-
− test/angular/mod2-dev.js.expected
@@ -1,38 +0,0 @@--(function() {- /* We want to defer bootstrap until all scripts are loaded */- if (!/^NG_DEFER_BOOTSTRAP!/.test(window.name)) {- window.name = "NG_DEFER_BOOTSTRAP!" + window.name;- window.yesod_devel_scripts = {};- window.yesod_devel_check_loaded = function() {- for (var key in window.yesod_devel_scripts) {- if (!window.yesod_devel_scripts[key]) {- /* Not loaded yet */- return;- }- }- /* Everything has loaded, bootstrap can continue */- angular.resumeBootstrap();- };- }-- /* Create the module */- angular.module("mod2", ["mod1"]);-- /* Figure out the full path of the current script */- var scripts = document.getElementsByTagName("script"),- path = scripts[scripts.length - 1].src;-- /* Add a script tag for each file in the module */- var files = ["ctrl.js","factory.js"];- for (var i = 0; i < files.length; i++) {- /* Add the script to the list of scripts to wait for */- window.yesod_devel_scripts["mod2" + "/" + files[i]] = false;-- var s = document.createElement("script");- s.type = "application/javascript";- s.src = path + "/" + files[i];- document.body.appendChild(s);- }-})();-
yesod-static-angular.cabal view
@@ -1,5 +1,5 @@ name: yesod-static-angular-version: 0.1.1+version: 0.1.2 cabal-version: >= 1.8 build-type: Simple synopsis: Yesod generators for embedding AngularJs code into yesod-static at compile time