git.iko.soy/typeable/servant
on master help sign in
Replace <> with interpolate QQ
commita50d36c786d231e12d5223027b30e4107a5c876e authorFreezeboy <freezeboy@users.noreply.github.com> dateSat 18 Jul 2015, 11:42 (11 years ago) parentce43317
4 files changed+52−42
servant-jquery/servant-jquery.cabal+1 servant-jquery/src/Servant/JQuery/Angular.hs+15−12 servant-jquery/src/Servant/JQuery/JQuery.hs+15−12 servant-jquery/src/Servant/JQuery/Vanilla.hs+21−18
servant-jquery/servant-jquery.cabal+1
@@ -42,6 +42,7 @@ library
4242 , lens >= 4
4343 , servant == 0.4.*
4444 , text
45+ , interpolate
4546 hs-source-dirs: src
4647 default-language: Haskell2010
4748 ghc-options: -Wall
servant-jquery/src/Servant/JQuery/Angular.hs+15−12
@@ -1,9 +1,11 @@
1+{-# LANGUAGE QuasiQuotes #-}
12module Servant.JQuery.Angular where
23
34import Servant.JQuery.Internal
45import Control.Lens
56import Data.List
67import Data.Monoid
8+import Data.String.Interpolate
79
810data AngularOptions = AngularOptions
911 { serviceName :: String -- ^ When generating code with wrapInService,
@@ -15,8 +17,8 @@ data AngularOptions = AngularOptions
1517defAngularOptions :: AngularOptions
1618defAngularOptions = AngularOptions
1719 { serviceName = ""
18− , prologue = \svc m -> m <> "service('" <> svc <> "', function($http) {\n"
19− <> " return ({"
20+ , prologue = \svc m -> [i|#{m}service('#{svc}', function($http) {
21+ return ({|]
2022 , epilogue = "});\n});\n"
2123 }
2224
@@ -46,16 +48,17 @@ generateAngularJS ngOpts = generateAngularJSWith ngOpts defCommonGeneratorOption
4648
4749-- js codegen using $http service from Angular
4850generateAngularJSWith :: AngularOptions -> CommonGeneratorOptions -> AjaxReq -> String
49−generateAngularJSWith ngOptions opts req = "\n" <>
50− fname <> fsep <> " function(" <> argsStr <> ")\n"
51− <> "{\n"
52− <> " return $http(\n"
53− <> " { url: " <> url <> "\n"
54− <> dataBody
55− <> reqheaders
56− <> " , method: '" <> method <> "'\n"
57− <> " });\n"
58− <> "}\n"
51+generateAngularJSWith ngOptions opts req = [i|
52+ #{fname}#{fsep} function(#{argsStr})
53+ {
54+ return $http(
55+ { url: #{url}
56+ #{dataBody}
57+ #{reqheaders}
58+ , method: '#{method}'
59+ });
60+ }
61+|]
5962
6063 where argsStr = intercalate ", " args
6164 args = http
servant-jquery/src/Servant/JQuery/JQuery.hs+15−12
@@ -1,9 +1,11 @@
1+{-# LANGUAGE QuasiQuotes #-}
12module Servant.JQuery.JQuery where
23
34import Servant.JQuery.Internal
45import Control.Lens
56import Data.List
67import Data.Monoid
8+import Data.String.Interpolate
79
810-- | js codegen using JQuery using default options
911generateJQueryJS :: AjaxReq -> String
@@ -11,18 +13,19 @@ generateJQueryJS = generateJQueryJSWith defCommonGeneratorOptions
1113
1214-- | js codegen using JQuery
1315generateJQueryJSWith :: CommonGeneratorOptions -> AjaxReq -> String
14−generateJQueryJSWith opts req = "\n" <>
15− fname <> " = function(" <> argsStr <> ")\n"
16− <> "{\n"
17− <> " $.ajax(\n"
18− <> " { url: " <> url <> "\n"
19− <> " , success: " <> onSuccess <> "\n"
20− <> dataBody
21− <> reqheaders
22− <> " , error: " <> onError <> "\n"
23− <> " , type: '" <> method <> "'\n"
24− <> " });\n"
25− <> "}\n"
16+generateJQueryJSWith opts req = [i|
17+ #{fname} = function(#{argsStr})
18+ {
19+ $.ajax(
20+ { url: #{url}
21+ , success: #{onSuccess}
22+ #{dataBody}
23+ #{reqheaders}
24+ , error: #{onError}
25+ , type: '#{method}'
26+ });
27+ }
28+|]
2629
2730 where argsStr = intercalate ", " args
2831 args = captures
servant-jquery/src/Servant/JQuery/Vanilla.hs+21−18
@@ -1,9 +1,11 @@
1+{-# LANGUAGE QuasiQuotes #-}
12module Servant.JQuery.Vanilla where
23
34import Servant.JQuery.Internal
45import Control.Lens
56import Data.List
67import Data.Monoid
8+import Data.String.Interpolate
79
810-- | js codegen using XmlHttpRequest using default generation options
911generateVanillaJS :: AjaxReq -> String
@@ -11,24 +13,25 @@ generateVanillaJS = generateVanillaJSWith defCommonGeneratorOptions
1113
1214-- | js codegen using XmlHttpRequest
1315generateVanillaJSWith :: CommonGeneratorOptions -> AjaxReq -> String
14−generateVanillaJSWith opts req = "\n" <>
15− fname <> " = function(" <> argsStr <> ")\n"
16− <> "{\n"
17− <> " var xhr = new XMLHttpRequest();\n"
18− <> " xhr.open('" <> method <> "', " <> url <> ", true);\n"
19− <> reqheaders
20− <> " xhr.onreadystatechange = function (e) {\n"
21− <> " if (xhr.readyState == 4) {\n"
22− <> " var value = JSON.parse(xhr.responseText);\n"
23− <> " if (xhr.status == 200 || xhr.status == 201) {\n"
24− <> " onSuccess(value);\n"
25− <> " } else {\n"
26− <> " onError(value);\n"
27− <> " }\n"
28− <> " }\n"
29− <> " }\n"
30− <> " xhr.send(" <> dataBody <> ");\n"
31− <> "}\n"
16+generateVanillaJSWith opts req = [i|
17+ #{fname} = function(#{argsStr})
18+ {
19+ var xhr = new XMLHttpRequest();
20+ xhr.open('#{method}', #{url}, true);
21+ #{reqheaders}
22+ xhr.onreadystatechange = function (e) {
23+ if (xhr.readyState == 4) {
24+ var value = JSON.parse(xhr.responseText);
25+ if (xhr.status == 200 || xhr.status == 201) {
26+ #{onSuccess}(value);
27+ } else {
28+ #{onError}(value);
29+ }
30+ }
31+ }
32+ xhr.send(#{dataBody});
33+ }
34+|]
3235
3336 where argsStr = intercalate ", " args
3437 args = captures