Replace <> with interpolate QQ
This commit is contained in:
parent
ce43317eeb
commit
a50d36c786
4 changed files with 52 additions and 42 deletions
|
@ -42,6 +42,7 @@ library
|
||||||
, lens >= 4
|
, lens >= 4
|
||||||
, servant == 0.4.*
|
, servant == 0.4.*
|
||||||
, text
|
, text
|
||||||
|
, interpolate
|
||||||
hs-source-dirs: src
|
hs-source-dirs: src
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
ghc-options: -Wall
|
ghc-options: -Wall
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
|
{-# LANGUAGE QuasiQuotes #-}
|
||||||
module Servant.JQuery.Angular where
|
module Servant.JQuery.Angular where
|
||||||
|
|
||||||
import Servant.JQuery.Internal
|
import Servant.JQuery.Internal
|
||||||
import Control.Lens
|
import Control.Lens
|
||||||
import Data.List
|
import Data.List
|
||||||
import Data.Monoid
|
import Data.Monoid
|
||||||
|
import Data.String.Interpolate
|
||||||
|
|
||||||
data AngularOptions = AngularOptions
|
data AngularOptions = AngularOptions
|
||||||
{ serviceName :: String -- ^ When generating code with wrapInService,
|
{ serviceName :: String -- ^ When generating code with wrapInService,
|
||||||
|
@ -15,8 +17,8 @@ data AngularOptions = AngularOptions
|
||||||
defAngularOptions :: AngularOptions
|
defAngularOptions :: AngularOptions
|
||||||
defAngularOptions = AngularOptions
|
defAngularOptions = AngularOptions
|
||||||
{ serviceName = ""
|
{ serviceName = ""
|
||||||
, prologue = \svc m -> m <> "service('" <> svc <> "', function($http) {\n"
|
, prologue = \svc m -> [i|#{m}service('#{svc}', function($http) {
|
||||||
<> " return ({"
|
return ({|]
|
||||||
, epilogue = "});\n});\n"
|
, epilogue = "});\n});\n"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,16 +48,17 @@ generateAngularJS ngOpts = generateAngularJSWith ngOpts defCommonGeneratorOption
|
||||||
|
|
||||||
-- js codegen using $http service from Angular
|
-- js codegen using $http service from Angular
|
||||||
generateAngularJSWith :: AngularOptions -> CommonGeneratorOptions -> AjaxReq -> String
|
generateAngularJSWith :: AngularOptions -> CommonGeneratorOptions -> AjaxReq -> String
|
||||||
generateAngularJSWith ngOptions opts req = "\n" <>
|
generateAngularJSWith ngOptions opts req = [i|
|
||||||
fname <> fsep <> " function(" <> argsStr <> ")\n"
|
#{fname}#{fsep} function(#{argsStr})
|
||||||
<> "{\n"
|
{
|
||||||
<> " return $http(\n"
|
return $http(
|
||||||
<> " { url: " <> url <> "\n"
|
{ url: #{url}
|
||||||
<> dataBody
|
#{dataBody}
|
||||||
<> reqheaders
|
#{reqheaders}
|
||||||
<> " , method: '" <> method <> "'\n"
|
, method: '#{method}'
|
||||||
<> " });\n"
|
});
|
||||||
<> "}\n"
|
}
|
||||||
|
|]
|
||||||
|
|
||||||
where argsStr = intercalate ", " args
|
where argsStr = intercalate ", " args
|
||||||
args = http
|
args = http
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
|
{-# LANGUAGE QuasiQuotes #-}
|
||||||
module Servant.JQuery.JQuery where
|
module Servant.JQuery.JQuery where
|
||||||
|
|
||||||
import Servant.JQuery.Internal
|
import Servant.JQuery.Internal
|
||||||
import Control.Lens
|
import Control.Lens
|
||||||
import Data.List
|
import Data.List
|
||||||
import Data.Monoid
|
import Data.Monoid
|
||||||
|
import Data.String.Interpolate
|
||||||
|
|
||||||
-- | js codegen using JQuery using default options
|
-- | js codegen using JQuery using default options
|
||||||
generateJQueryJS :: AjaxReq -> String
|
generateJQueryJS :: AjaxReq -> String
|
||||||
|
@ -11,18 +13,19 @@ generateJQueryJS = generateJQueryJSWith defCommonGeneratorOptions
|
||||||
|
|
||||||
-- | js codegen using JQuery
|
-- | js codegen using JQuery
|
||||||
generateJQueryJSWith :: CommonGeneratorOptions -> AjaxReq -> String
|
generateJQueryJSWith :: CommonGeneratorOptions -> AjaxReq -> String
|
||||||
generateJQueryJSWith opts req = "\n" <>
|
generateJQueryJSWith opts req = [i|
|
||||||
fname <> " = function(" <> argsStr <> ")\n"
|
#{fname} = function(#{argsStr})
|
||||||
<> "{\n"
|
{
|
||||||
<> " $.ajax(\n"
|
$.ajax(
|
||||||
<> " { url: " <> url <> "\n"
|
{ url: #{url}
|
||||||
<> " , success: " <> onSuccess <> "\n"
|
, success: #{onSuccess}
|
||||||
<> dataBody
|
#{dataBody}
|
||||||
<> reqheaders
|
#{reqheaders}
|
||||||
<> " , error: " <> onError <> "\n"
|
, error: #{onError}
|
||||||
<> " , type: '" <> method <> "'\n"
|
, type: '#{method}'
|
||||||
<> " });\n"
|
});
|
||||||
<> "}\n"
|
}
|
||||||
|
|]
|
||||||
|
|
||||||
where argsStr = intercalate ", " args
|
where argsStr = intercalate ", " args
|
||||||
args = captures
|
args = captures
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
|
{-# LANGUAGE QuasiQuotes #-}
|
||||||
module Servant.JQuery.Vanilla where
|
module Servant.JQuery.Vanilla where
|
||||||
|
|
||||||
import Servant.JQuery.Internal
|
import Servant.JQuery.Internal
|
||||||
import Control.Lens
|
import Control.Lens
|
||||||
import Data.List
|
import Data.List
|
||||||
import Data.Monoid
|
import Data.Monoid
|
||||||
|
import Data.String.Interpolate
|
||||||
|
|
||||||
-- | js codegen using XmlHttpRequest using default generation options
|
-- | js codegen using XmlHttpRequest using default generation options
|
||||||
generateVanillaJS :: AjaxReq -> String
|
generateVanillaJS :: AjaxReq -> String
|
||||||
|
@ -11,24 +13,25 @@ generateVanillaJS = generateVanillaJSWith defCommonGeneratorOptions
|
||||||
|
|
||||||
-- | js codegen using XmlHttpRequest
|
-- | js codegen using XmlHttpRequest
|
||||||
generateVanillaJSWith :: CommonGeneratorOptions -> AjaxReq -> String
|
generateVanillaJSWith :: CommonGeneratorOptions -> AjaxReq -> String
|
||||||
generateVanillaJSWith opts req = "\n" <>
|
generateVanillaJSWith opts req = [i|
|
||||||
fname <> " = function(" <> argsStr <> ")\n"
|
#{fname} = function(#{argsStr})
|
||||||
<> "{\n"
|
{
|
||||||
<> " var xhr = new XMLHttpRequest();\n"
|
var xhr = new XMLHttpRequest();
|
||||||
<> " xhr.open('" <> method <> "', " <> url <> ", true);\n"
|
xhr.open('#{method}', #{url}, true);
|
||||||
<> reqheaders
|
#{reqheaders}
|
||||||
<> " xhr.onreadystatechange = function (e) {\n"
|
xhr.onreadystatechange = function (e) {
|
||||||
<> " if (xhr.readyState == 4) {\n"
|
if (xhr.readyState == 4) {
|
||||||
<> " var value = JSON.parse(xhr.responseText);\n"
|
var value = JSON.parse(xhr.responseText);
|
||||||
<> " if (xhr.status == 200 || xhr.status == 201) {\n"
|
if (xhr.status == 200 || xhr.status == 201) {
|
||||||
<> " onSuccess(value);\n"
|
#{onSuccess}(value);
|
||||||
<> " } else {\n"
|
} else {
|
||||||
<> " onError(value);\n"
|
#{onError}(value);
|
||||||
<> " }\n"
|
}
|
||||||
<> " }\n"
|
}
|
||||||
<> " }\n"
|
}
|
||||||
<> " xhr.send(" <> dataBody <> ");\n"
|
xhr.send(#{dataBody});
|
||||||
<> "}\n"
|
}
|
||||||
|
|]
|
||||||
|
|
||||||
where argsStr = intercalate ", " args
|
where argsStr = intercalate ", " args
|
||||||
args = captures
|
args = captures
|
||||||
|
|
Loading…
Reference in a new issue