@@ -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