Replace <> with interpolate QQ

This commit is contained in:
Freezeboy 2015-07-18 11:42:35 +02:00 committed by Alp Mestanogullari
parent ce43317eeb
commit a50d36c786
4 changed files with 52 additions and 42 deletions

View file

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

View file

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

View file

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

View file

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