Skip to content

Commit 45528ac

Browse files
committed
Merge branch 'topic/interpolate'
2 parents ebd2a73 + f4da3c9 commit 45528ac

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

src/Angular/Interpolate.purs

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
module Angular.Interpolate
2+
( NgInterpolate()
3+
, Interpolate()
4+
, InterpolateEff()
5+
, Expression()
6+
, interpolate
7+
, startSymbol
8+
, endSymbol
9+
) where
10+
11+
import Control.Monad.Eff
12+
import Data.Function
13+
import Data.Maybe
14+
15+
foreign import data Interpolate :: *
16+
17+
foreign import data NgInterpolate :: !
18+
19+
type Expression a = { | a } -> String
20+
21+
type InterpolateEff e a = Eff (nginterpolate :: NgInterpolate | e) a
22+
23+
foreign import interpolateFn
24+
" function interpolateFn(fromMaybe, text, mustHaveExpression, trustedContext, $interpolate){ \
25+
\ return function(){ \
26+
\ return $interpolate(text, \
27+
\ fromMaybe(undefined)(mustHaveExpression), \
28+
\ fromMaybe(undefined)(trustedContext)); \
29+
\ }; \
30+
\ } "
31+
:: forall e a. Fn5 (forall a. a -> Maybe a -> a)
32+
String
33+
(Maybe Boolean)
34+
(Maybe String)
35+
Interpolate
36+
(InterpolateEff e (Expression a))
37+
38+
interpolate :: forall e a. String -> Maybe Boolean -> Maybe String -> Interpolate -> InterpolateEff e (Expression a)
39+
interpolate = runFn5 interpolateFn fromMaybe
40+
41+
foreign import startSymbol
42+
" function startSymbol($interpolate){ \
43+
\ return $interpolate.startSymbol(); \
44+
\ } "
45+
:: Interpolate -> String
46+
47+
foreign import endSymbol
48+
" function endSymbol($interpolate){ \
49+
\ return $interpolate.endSymbol(); \
50+
\ } "
51+
:: Interpolate -> String

0 commit comments

Comments
 (0)