diff --git a/lib/nurina.ex b/lib/nurina.ex index f8e2349..9c393d1 100644 --- a/lib/nurina.ex +++ b/lib/nurina.ex @@ -39,13 +39,13 @@ defmodule Nurina do def parse(hier, parsed, :hier_no_auth), do: %{parsed | path: nil_or hier} def parse(hier, parsed, :hier_auth) do - parsed = parse(hier, parsed, "", :authority) + parsed = parse hier, parsed, "", :authority # Go inside authority to parse parts - if parsed.authority != nil do - parsed = parse(parsed.authority, parsed, "", :userinfo) + case parsed.authority do + nil -> parsed + _ -> parse parsed.authority, parsed, "", :userinfo end - parsed end # Host part parsing @@ -77,7 +77,7 @@ defmodule Nurina do # Scheme must exist case parsed.scheme do nil -> %{parsed | valid: false} - _ -> parse(rest, parsed, "", :hier) + _ -> parse rest, parsed, "", :hier end end @@ -89,18 +89,18 @@ defmodule Nurina do parsed = %{parsed | hier: nil_or current_part} # Go inside hierarchy to parse parts - parse(current_part, parsed, :hier_parse) + parse current_part, parsed, :hier_parse end def parse(<< "?", rest :: binary >>, parsed, current_part, :hier) do parsed = %{parsed | hier: nil_or current_part} # Go inside hierarchy to parse parts - parsed = parse(current_part, parsed, :hier_parse) + parsed = parse current_part, parsed, :hier_parse # If we have a query and - parse(rest, parsed, "", :query) + parse rest, parsed, "", :query end @@ -130,7 +130,7 @@ defmodule Nurina do def parse(<< "@", rest :: binary >>, parsed, current_part, :userinfo) do parsed = %{parsed | userinfo: nil_or current_part} - parse(rest, parsed, :host) + parse rest, parsed, :host end @@ -141,7 +141,7 @@ defmodule Nurina do def parse(<< "]", rest :: binary >>, parsed, current_part, :host_6) do parsed = %{parsed | is_ipv6: true, host: nil_or current_part} - parse(rest, parsed, :port) + parse rest, parsed, :port end @@ -151,7 +151,7 @@ defmodule Nurina do def parse(<< ":", rest :: binary >>, parsed, current_part, :host_4) do parsed = %{parsed | host: nil_or current_part} - parse(":" <> rest, parsed, :port) + parse ":" <> rest, parsed, :port end @@ -161,9 +161,9 @@ defmodule Nurina do # Default walking function for all parsing modes, just walk through all # non recognised characters - def parse(<>, parsed, current_part, mode) do + def parse(<< char, rest :: binary >>, parsed, current_part, mode) do current_part = current_part <> << char :: utf8 >> - parse(rest, parsed, current_part, mode) + parse rest, parsed, current_part, mode end