packages feed

uri-templater 0.2.1.0 → 0.2.2.0

raw patch · 5 files changed

+46/−26 lines, 5 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Network.URI.Template: Alias :: Modifier
- Network.URI.Template.Types: Alias :: Modifier

Files

src/Network/URI/Template/Internal.hs view
@@ -69,8 +69,7 @@     Explode -> exploded     (MaxLength l) -> do       when (modifierSupportsNamed settings) (namePrefix settings varName val)-      -- TODO: this is wrong. we need to truncate prior to encoding.-      censor (fromList . take l . Data.DList.toList) unexploded+      unexploded   where     settings = options m @@ -79,27 +78,32 @@      sepByCommas = sequence_ . intersperse (addChar ',') -    associativeCommas :: (TemplateValue Single, TemplateValue Single) -> StringBuilder ()-    associativeCommas (Single n, Single v) = addEncodeString n >> addChar ',' >> addEncodeString v+    associativeCommas :: (String -> String) -> (TemplateValue Single, TemplateValue Single) -> StringBuilder ()+    associativeCommas f (Single n, Single v) = addEncodeString n >> addChar ',' >> addEncodeString (f v) +    preprocess :: String -> String+    preprocess = case varMod of+      MaxLength l -> take l+      _ -> id+     unexploded = case val of-      (Associative l) -> sepByCommas $ map associativeCommas l-      (List l) -> sepByCommas $ map (\(Single s) -> addEncodeString s) l-      (Single s) -> addEncodeString s+      (Associative l) -> sepByCommas $ map (associativeCommas preprocess) l+      (List l) -> sepByCommas $ map (\(Single s) -> addEncodeString $ preprocess s) l+      (Single s) -> addEncodeString $ preprocess s      explodedAssociative :: (TemplateValue Single, TemplateValue Single) -> StringBuilder ()     explodedAssociative (Single k, Single v) = do       addEncodeString k       addChar '='-      addEncodeString v-      +      addEncodeString $ preprocess v+     exploded :: StringBuilder ()     exploded = case val of       (Single s) -> do         when (modifierSupportsNamed settings) (namePrefix settings varName val)-        addEncodeString s+        addEncodeString $ preprocess s       (Associative l) -> sequence_ $ intersperse (addChar $ modifierSeparator settings) $ map explodedAssociative l-      (List l) -> sequence_ $ intersperse (addChar $ modifierSeparator settings) $ map (\(Single s) -> addEncodeString s) l+      (List l) -> sequence_ $ intersperse (addChar $ modifierSeparator settings) $ map (\(Single s) -> addEncodeString $ preprocess s) l  processVariables :: [(String, WrappedValue)] -> Modifier -> [Variable] -> StringBuilder () processVariables env m vs = sequence_ $ processedVariables
src/Network/URI/Template/Parser.hs view
@@ -50,10 +50,12 @@   return [h, d1, d2]  literalChar :: Parser Char-literalChar = (choice $ map char ['\x21', '\x23', '\x24', '\x26', '\x3D', '\x5D', '\x5F', '\x7E'])-  <|> ranges [('\x28', '\x3B'), ('\x3F', '\x5B'), ('\x61', '\x7A')]-  <|> ucschar-  <|> iprivate+literalChar =+  (choice $ map char+    ['\x21', '\x23', '\x24', '\x26', '\x3D', '\x5D', '\x5F', '\x7E']) <|>+  ranges [('\x28', '\x3B'), ('\x3F', '\x5B'), ('\x61', '\x7A')] <|>+  ucschar <|>+  iprivate  literal :: Parser TemplateSegment literal = (Literal . concat) <$> some ((pure <$> literalChar) <|> pctEncoded)@@ -77,7 +79,10 @@       , (';', PathParameter)       , ('?', Query)       , ('&', QueryContinuation)-      , ('@', Alias)+      , ('=', Reserved)+      , ('@', Reserved)+      , ('!', Reserved)+      , ('|', Reserved)       ]  variable :: Parser Variable@@ -94,7 +99,8 @@ uriTemplate = spaces *> many (literal <|> embed)  parseTemplate :: String -> Either Doc UriTemplate-parseTemplate t = case parseString uriTemplate mempty t of-                        Failure err -> Left (_errDoc err)-                        Success r -> Right r+parseTemplate t =+  case parseString uriTemplate mempty t of+    Failure err -> Left (_errDoc err)+    Success r -> Right r 
src/Network/URI/Template/Types.hs view
@@ -32,7 +32,9 @@ newtype TemplateString = String { fromString :: String }   deriving (Read, Show, Eq, S.IsString) -newtype AList k v = AList { fromAList :: [(k, v)] }+newtype AList k v = AList+  { fromAList :: [(k, v)]+  }  class ToTemplateValue a where   type TemplateRep a@@ -80,8 +82,10 @@   | MaxLength Int   deriving (Read, Show, Eq) -data Variable = Variable { variableName :: String, variableValueModifier :: ValueModifier }-  deriving (Read, Show, Eq)+data Variable = Variable+  { variableName :: String+  , variableValueModifier :: ValueModifier+  } deriving (Read, Show, Eq)  data TemplateSegment   = Literal String@@ -99,7 +103,6 @@   | PathParameter   | Query   | QueryContinuation-  | Alias   deriving (Read, Show, Eq)  
test/Test.hs view
@@ -79,6 +79,9 @@ var :: TemplateString var = "value" +semi :: TemplateString+semi = ";"+ hello :: TemplateString hello = "Hello World!" @@ -93,6 +96,10 @@  quasiQuoterTests = label "QuasiQuoter Tests" $ suite $ do   label "Simple" $ test ([uri|{var}|] @?= "value")+  label "Simple with sufficient length" $ test ([uri|{var:20}|] @?= "value")+  label "Simple with insufficient length" $ test ([uri|{var:3}|] @?= "val")+  label "Escape" $ test ([uri|{semi}|] @?= "%3B")+  label "Escape" $ test ([uri|{semi:2}|] @?= "%3B")   label "Multiple" $ test ([uri|{var,hello}|] @?= "value,Hello%20World%21")   label "Length Constraint" $ test ([uri|{var:3}|] @?= "val")   label "Sufficiently large length constraint" $ test ([uri|{var:10}|] @?= "value")
uri-templater.cabal view
@@ -2,10 +2,10 @@ -- documentation, see http://haskell.org/cabal/users-guide/  name:                uri-templater-version:             0.2.1.0+version:             0.2.2.0 synopsis:            Parsing & Quasiquoting for RFC 6570 URI Templates description:         Parsing & Quasiquoting for RFC 6570 URI Templates-homepage:            http://github.com/iand675/uri-templater+homepage:            https://github.com/iand675/uri-templater license:             MIT license-file:        LICENSE author:              Ian Duncan@@ -16,7 +16,7 @@ cabal-version:       >=1.8 source-repository    head   type:                git-  location:            http://github.com/iand675/uri-templater+  location:            https://github.com/iand675/uri-templater  library   exposed-modules:   Network.URI.Template,