From 34963d57ec67004a0683aaf3002929affdc3962d Mon Sep 17 00:00:00 2001 From: Colin Wahl Date: Tue, 2 Mar 2021 19:41:58 -0800 Subject: [PATCH] Update for PureScript 0.14 (#21) --- bower.json | 29 ++++++++++++++--------------- src/Routing/Duplex.purs | 6 +++--- src/Routing/Duplex/Generic.purs | 2 +- src/Routing/Duplex/Parser.purs | 14 ++++++++------ src/Routing/Duplex/Printer.purs | 6 +++++- test/Main.purs | 2 +- 6 files changed, 32 insertions(+), 27 deletions(-) diff --git a/bower.json b/bower.json index c0fa699..58094c9 100644 --- a/bower.json +++ b/bower.json @@ -8,22 +8,21 @@ "output" ], "dependencies": { - "purescript-prelude": "^4.1.0", - "purescript-record": "^2.0.0", - "purescript-generics-rep": "^6.0.0", - "purescript-either": "^4.0.0", - "purescript-control": "^4.1.0", - "purescript-arrays": "^5.0.0", - "purescript-globals": "^4.0.0", - "purescript-strings": "^4.0.0", - "purescript-lazy": "^4.0.0", - "purescript-profunctor": "^4.0.0" + "purescript-prelude": "^5.0.0", + "purescript-record": "^3.0.0", + "purescript-either": "^5.0.0", + "purescript-control": "^5.0.0", + "purescript-arrays": "^6.0.0", + "purescript-strings": "^5.0.0", + "purescript-lazy": "^5.0.0", + "purescript-profunctor": "^5.0.0", + "purescript-js-uri": "https://github.com/purescript-contrib/purescript-js-uri.git#2.0.0" }, "devDependencies": { - "purescript-psci-support": "^4.0.0", - "purescript-console": "^4.1.0", - "purescript-effect": "^2.0.0", - "purescript-assert": "^4.0.0", - "purescript-quickcheck": "^6.1.0" + "purescript-psci-support": "^5.0.0", + "purescript-console": "^5.0.0", + "purescript-effect": "^3.0.0", + "purescript-assert": "^5.0.0", + "purescript-quickcheck": "^7.0.0" } } diff --git a/src/Routing/Duplex.purs b/src/Routing/Duplex.purs index 8ad4397..6f9b667 100644 --- a/src/Routing/Duplex.purs +++ b/src/Routing/Duplex.purs @@ -41,7 +41,7 @@ import Data.String (Pattern(..)) import Data.String as String import Data.Symbol (class IsSymbol, SProxy(..), reflectSymbol) import Prim.Row as Row -import Prim.RowList (kind RowList, class RowToList, Cons, Nil) +import Prim.RowList (RowList, class RowToList, Cons, Nil) import Record as Record import Routing.Duplex.Parser (RouteParser) import Routing.Duplex.Parser as Parser @@ -328,7 +328,7 @@ prop sym (RouteDuplex f g) (RouteDuplex x y) = infix 2 prop as := -class RouteDuplexParams (r1 :: # Type) (r2 :: # Type) | r1 -> r2 where +class RouteDuplexParams (r1 :: Row Type) (r2 :: Row Type) | r1 -> r2 where -- | Builds a `RouteDuplex` from a record of query parameter parsers/printers, where -- | each property corresponds to a query parameter with the same name. -- | @@ -353,7 +353,7 @@ instance routeDuplexParams :: record # buildParams (RLProxy :: RLProxy rl) r -class RouteDuplexBuildParams (rl :: RowList) (r1 :: # Type) (r2 :: # Type) (r3 :: # Type) (r4 :: # Type) | rl -> r1 r2 r3 r4 where +class RouteDuplexBuildParams (rl :: RowList Type) (r1 :: Row Type) (r2 :: Row Type) (r3 :: Row Type) (r4 :: Row Type) | rl -> r1 r2 r3 r4 where buildParams :: RLProxy rl -> { | r1 } -> diff --git a/src/Routing/Duplex/Generic.purs b/src/Routing/Duplex/Generic.purs index fded83d..a7ce7db 100644 --- a/src/Routing/Duplex/Generic.purs +++ b/src/Routing/Duplex/Generic.purs @@ -17,7 +17,7 @@ sum :: forall a rep r. RouteDuplex' a sum = dimap from to <<< gRouteDuplex -class GRouteDuplex rep (r :: # Type) | rep -> r where +class GRouteDuplex rep (r :: Row Type) | rep -> r where gRouteDuplex :: { | r } -> RouteDuplex' rep instance gRouteSum :: diff --git a/src/Routing/Duplex/Parser.purs b/src/Routing/Duplex/Parser.purs index 9c84868..770222a 100644 --- a/src/Routing/Duplex/Parser.purs +++ b/src/Routing/Duplex/Parser.purs @@ -32,17 +32,17 @@ import Data.Array.NonEmpty (NonEmptyArray) import Data.Array.NonEmpty as NEA import Data.Bifunctor (bimap, lmap) import Data.Either (Either(..)) -import Data.Foldable (foldl) +import Data.Foldable (foldl, lookup) import Data.Generic.Rep (class Generic) -import Data.Generic.Rep.Show (genericShow) import Data.Int as Int import Data.Lazy as Z -import Data.Maybe (Maybe(..), maybe) +import Data.Maybe (Maybe(..), fromJust, maybe) +import Data.Show.Generic (genericShow) import Data.String (Pattern(..), split) import Data.String.CodeUnits as String import Data.Tuple (Tuple(..)) -import Data.Tuple as Tuple -import Global.Unsafe (unsafeDecodeURIComponent) +import JSURI (decodeURIComponent) +import Partial.Unsafe (unsafePartial) import Routing.Duplex.Types (RouteParams, RouteState) data RouteResult a @@ -163,6 +163,8 @@ parsePath = splitAt (flip Tuple "") "?" >>> bimap splitSegments splitParams + unsafeDecodeURIComponent = unsafePartial fromJust <<< decodeURIComponent + splitSegments = splitNonEmpty (Pattern "/") >>> case _ of ["", ""] -> [""] xs -> map unsafeDecodeURIComponent xs @@ -200,7 +202,7 @@ take = Chomp \state -> param :: String -> RouteParser String param key = Chomp \state -> - case Tuple.lookup key state.params of + case lookup key state.params of Just a -> Success state a _ -> Fail $ MissingParam key diff --git a/src/Routing/Duplex/Printer.purs b/src/Routing/Duplex/Printer.purs index 6feab68..026ef78 100644 --- a/src/Routing/Duplex/Printer.purs +++ b/src/Routing/Duplex/Printer.purs @@ -12,10 +12,12 @@ import Prelude import Data.Array as Array import Data.Function (applyFlipped) +import Data.Maybe (fromJust) import Data.Newtype (class Newtype, unwrap) import Data.String (joinWith) import Data.Tuple (Tuple(..), uncurry) -import Global.Unsafe (unsafeEncodeURIComponent) +import JSURI (encodeURIComponent) +import Partial.Unsafe (unsafePartial) import Routing.Duplex.Types (RouteState, emptyRouteState) newtype RoutePrinter = RoutePrinter (RouteState -> RouteState) @@ -49,6 +51,8 @@ printPath :: RouteState -> String printPath { segments, params, hash: hash' } = printSegments segments <> printParams params <> printHash hash' where + unsafeEncodeURIComponent = unsafePartial fromJust <<< encodeURIComponent + printSegments = case _ of [""] -> "/" xs -> joinWith "/" $ map unsafeEncodeURIComponent xs diff --git a/test/Main.purs b/test/Main.purs index 2ce3814..7e5c71b 100644 --- a/test/Main.purs +++ b/test/Main.purs @@ -4,7 +4,7 @@ import Prelude hiding ((/)) import Data.Either (Either(..)) import Data.Generic.Rep (class Generic) -import Data.Generic.Rep.Show (genericShow) +import Data.Show.Generic (genericShow) import Data.String.Gen (genAlphaString) import Data.Symbol (SProxy(..)) import Effect (Effect)