Replace <> with interpolate QQ

This commit is contained in:
Freezeboy 2015-07-18 11:42:35 +02:00
parent d8740ff0e5
commit 7fb4471b00
4 changed files with 52 additions and 42 deletions

View file

@ -42,6 +42,7 @@ library
, lens >= 4
, servant == 0.4.*
, text
, interpolate
hs-source-dirs: src
default-language: Haskell2010
ghc-options: -Wall

View file

@ -1,9 +1,11 @@
{-# LANGUAGE QuasiQuotes #-}
module Servant.JQuery.Angular where
import Servant.JQuery.Internal
import Control.Lens
import Data.List
import Data.Monoid
import Data.String.Interpolate
data AngularOptions = AngularOptions
{ serviceName :: String -- ^ When generating code with wrapInService,
@ -15,8 +17,8 @@ data AngularOptions = AngularOptions
defAngularOptions :: AngularOptions
defAngularOptions = AngularOptions
{ serviceName = ""
, prologue = \svc m -> m <> "service('" <> svc <> "', function($http) {\n"
<> " return ({"
, prologue = \svc m -> [i|#{m}service('#{svc}', function($http) {
return ({|]
, epilogue = "});\n});\n"
}
@ -46,16 +48,17 @@ generateAngularJS ngOpts = generateAngularJSWith ngOpts defCommonGeneratorOption
-- js codegen using $http service from Angular
generateAngularJSWith :: AngularOptions -> CommonGeneratorOptions -> AjaxReq -> String
generateAngularJSWith ngOptions opts req = "\n" <>
fname <> fsep <> " function(" <> argsStr <> ")\n"
<> "{\n"
<> " return $http(\n"
<> " { url: " <> url <> "\n"
<> dataBody
<> reqheaders
<> " , method: '" <> method <> "'\n"
<> " });\n"
<> "}\n"
generateAngularJSWith ngOptions opts req = [i|
#{fname}#{fsep} function(#{argsStr})
{
return $http(
{ url: #{url}
#{dataBody}
#{reqheaders}
, method: '#{method}'
});
}
|]
where argsStr = intercalate ", " args
args = http

View file

@ -1,9 +1,11 @@
{-# LANGUAGE QuasiQuotes #-}
module Servant.JQuery.JQuery where
import Servant.JQuery.Internal
import Control.Lens
import Data.List
import Data.Monoid
import Data.String.Interpolate
-- | js codegen using JQuery using default options
generateJQueryJS :: AjaxReq -> String
@ -11,18 +13,19 @@ generateJQueryJS = generateJQueryJSWith defCommonGeneratorOptions
-- | js codegen using JQuery
generateJQueryJSWith :: CommonGeneratorOptions -> AjaxReq -> String
generateJQueryJSWith opts req = "\n" <>
fname <> " = function(" <> argsStr <> ")\n"
<> "{\n"
<> " $.ajax(\n"
<> " { url: " <> url <> "\n"
<> " , success: " <> onSuccess <> "\n"
<> dataBody
<> reqheaders
<> " , error: " <> onError <> "\n"
<> " , type: '" <> method <> "'\n"
<> " });\n"
<> "}\n"
generateJQueryJSWith opts req = [i|
#{fname} = function(#{argsStr})
{
$.ajax(
{ url: #{url}
, success: #{onSuccess}
#{dataBody}
#{reqheaders}
, error: #{onError}
, type: '#{method}'
});
}
|]
where argsStr = intercalate ", " args
args = captures

View file

@ -1,9 +1,11 @@
{-# LANGUAGE QuasiQuotes #-}
module Servant.JQuery.Vanilla where
import Servant.JQuery.Internal
import Control.Lens
import Data.List
import Data.Monoid
import Data.String.Interpolate
-- | js codegen using XmlHttpRequest using default generation options
generateVanillaJS :: AjaxReq -> String
@ -11,24 +13,25 @@ generateVanillaJS = generateVanillaJSWith defCommonGeneratorOptions
-- | js codegen using XmlHttpRequest
generateVanillaJSWith :: CommonGeneratorOptions -> AjaxReq -> String
generateVanillaJSWith opts req = "\n" <>
fname <> " = function(" <> argsStr <> ")\n"
<> "{\n"
<> " var xhr = new XMLHttpRequest();\n"
<> " xhr.open('" <> method <> "', " <> url <> ", true);\n"
<> reqheaders
<> " xhr.onreadystatechange = function (e) {\n"
<> " if (xhr.readyState == 4) {\n"
<> " var value = JSON.parse(xhr.responseText);\n"
<> " if (xhr.status == 200 || xhr.status == 201) {\n"
<> " onSuccess(value);\n"
<> " } else {\n"
<> " onError(value);\n"
<> " }\n"
<> " }\n"
<> " }\n"
<> " xhr.send(" <> dataBody <> ");\n"
<> "}\n"
generateVanillaJSWith opts req = [i|
#{fname} = function(#{argsStr})
{
var xhr = new XMLHttpRequest();
xhr.open('#{method}', #{url}, true);
#{reqheaders}
xhr.onreadystatechange = function (e) {
if (xhr.readyState == 4) {
var value = JSON.parse(xhr.responseText);
if (xhr.status == 200 || xhr.status == 201) {
#{onSuccess}(value);
} else {
#{onError}(value);
}
}
}
xhr.send(#{dataBody});
}
|]
where argsStr = intercalate ", " args
args = captures