@@ -1,9 +1,11 @@
1+{-# LANGUAGE QuasiQuotes #-}
1module Servant.JQuery.Angular where
2module Servant.JQuery.Angular where
3import Servant.JQuery.Internal
4import Servant.JQuery.Internal
4import Control.Lens
5import Control.Lens
5import Data.List
6import Data.List
6import Data.Monoid
7import Data.Monoid
8+import Data.String.Interpolate
8data AngularOptions = AngularOptions
10data AngularOptions = AngularOptions
9 { serviceName :: String -- ^ When generating code with wrapInService,
11 { serviceName :: String -- ^ When generating code with wrapInService,
@@ -15,8 +17,8 @@ data AngularOptions = AngularOptions
15defAngularOptions :: AngularOptions
17defAngularOptions :: AngularOptions
16defAngularOptions = AngularOptions
18defAngularOptions = AngularOptions
17 { serviceName = ""
19 { serviceName = ""
18− , prologue = \svc m -> m <> "service('" <> svc <> "', function($http) {\n"
20+ , prologue = \svc m -> [i|#{m}service('#{svc}', function($http) {
19− <> " return ({"
21+ return ({|]
20 , epilogue = "});\n});\n"
22 , epilogue = "});\n});\n"
@@ -46,16 +48,17 @@ generateAngularJS ngOpts = generateAngularJSWith ngOpts defCommonGeneratorOption
47-- js codegen using $http service from Angular
49-- js codegen using $http service from Angular
48generateAngularJSWith :: AngularOptions -> CommonGeneratorOptions -> AjaxReq -> String
50generateAngularJSWith :: AngularOptions -> CommonGeneratorOptions -> AjaxReq -> String
49−generateAngularJSWith ngOptions opts req = "\n" <>
51+generateAngularJSWith ngOptions opts req = [i|
50− fname <> fsep <> " function(" <> argsStr <> ")\n"
52+ #{fname}#{fsep} function(#{argsStr})
52− <> " return $http(\n"
54+ return $http(
53− <> " { url: " <> url <> "\n"
55+ { url: #{url}
54− <> dataBody
56+ #{dataBody}
55− <> reqheaders
57+ #{reqheaders}
56− <> " , method: '" <> method <> "'\n"
58+ , method: '#{method}'
60 where argsStr = intercalate ", " args
63 where argsStr = intercalate ", " args
61 args = http
64 args = http