Skip to content

Commit 7d0e872

Browse files
committed
Merge pull request #5 from cryogenian/empty-hierarchical
Empty hierarchical
2 parents 460c58a + ea98edb commit 7d0e872

File tree

4 files changed

+27
-8
lines changed

4 files changed

+27
-8
lines changed

src/Data/URI/Authority.purs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,16 @@ import Data.URI.UserInfo
1313
import Global (readInt)
1414
import qualified Data.String as S
1515
import Text.Parsing.StringParser (Parser(), fail)
16-
import Text.Parsing.StringParser.Combinators (optionMaybe, sepBy1)
16+
import Text.Parsing.StringParser.Combinators (optionMaybe, sepBy)
1717
import Text.Parsing.StringParser.String (string)
1818

1919
parseAuthority :: Parser Authority
2020
parseAuthority = do
2121
ui <- optionMaybe parseUserInfo
22-
hosts <- flip sepBy1 (string ",") $ Tuple <$> parseHost
23-
<*> optionMaybe (string ":" *> parsePort)
22+
hosts <- flip sepBy (string ",")
23+
$ Tuple
24+
<$> parseHost
25+
<*> optionMaybe (string ":" *> parsePort)
2426
return $ Authority ui (fromList hosts)
2527

2628
parsePort :: Parser Port

src/Data/URI/HierarchicalPart.purs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,17 @@ import Text.Parsing.StringParser.Combinators (optionMaybe)
1414
import Text.Parsing.StringParser.String (string)
1515

1616
parseHierarchicalPart :: Parser HierarchicalPart
17-
parseHierarchicalPart = (HierarchicalPart <$> optionMaybe (string "//" *> parseAuthority) <*> parsePathAbEmpty parseURIPathAbs)
18-
<|> (HierarchicalPart Nothing <$> ((Just <$> parsePathAbsolute parseURIPathAbs)
19-
<|> (Just <$> parsePathRootless parseURIPathAbs)
20-
<|> pure Nothing))
17+
parseHierarchicalPart =
18+
(HierarchicalPart
19+
<$> optionMaybe (string "//" *> parseAuthority)
20+
<*> parsePathAbEmpty parseURIPathAbs)
21+
22+
<|> (HierarchicalPart Nothing
23+
<$> ((Just <$> parsePathAbsolute parseURIPathAbs)
24+
<|>
25+
(Just <$> parsePathRootless parseURIPathAbs)
26+
<|>
27+
pure Nothing))
2128

2229
printHierPart :: HierarchicalPart -> String
2330
printHierPart (HierarchicalPart a p) =

src/Data/URI/Host.purs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,16 @@ parseIPv4Address = IPv4Address <$> rxPat pattern <?> "IPv4 address"
2626
octet = "(1[0-9]{2}|[1-9][0-9]|[0-9]|2[0-4][0-9]|25[0-5])"
2727

2828
parseRegName :: Parser Host
29-
parseRegName = NameAddress <$> try (joinWith "" <$> many1 (parseUnreserved <|> parsePCTEncoded <|> parseSubDelims))
29+
parseRegName =
30+
NameAddress
31+
<$> try
32+
(joinWith ""
33+
<$> many1 (parseUnreserved
34+
<|>
35+
parsePCTEncoded
36+
<|>
37+
parseSubDelims)
38+
)
3039

3140
printHost :: Host -> String
3241
printHost (IPv6Address i) = "[" ++ i ++ "]"

test/Main.purs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import Text.Parsing.StringParser
1212

1313

1414
main = do
15+
test runParseURIRef "sql2:///?q=foo&var.bar=baz"
1516
test runParseURIRef "mongodb://localhost"
1617
test runParseURIRef "http://en.wikipedia.org/wiki/URI_scheme"
1718
test runParseURIRef "http://local.slamdata.com/?#?sort=asc&q=path%3A%2F&salt=1177214"

0 commit comments

Comments
 (0)