@@ -335,20 +335,22 @@ defmodule ExDoc.Autolink do
335
335
end
336
336
337
337
defp parse_url ( string , mode , config ) do
338
- case Regex . run ( ~r{ ^(.+)/(\d +)$} , string ) do
339
- [ _ , left , right ] ->
338
+ case Regex . run ( ~r{ ^(.+)/(\d +)(#.*)? $} , string ) do
339
+ [ _ , left , right | maybe_fragment ] ->
340
340
with { :ok , arity } <- parse_arity ( right ) do
341
341
{ kind , rest } = kind ( left )
342
342
343
343
case config . language . parse_module_function ( rest ) do
344
344
{ :local , function } ->
345
345
kind
346
346
|> local_url ( function , arity , config , string , mode: mode )
347
+ |> maybe_append_nested_fragment ( maybe_fragment )
347
348
|> maybe_remove_link ( mode )
348
349
349
350
{ :remote , module , function } ->
350
351
{ kind , module , function , arity }
351
352
|> remote_url ( config , string , mode: mode )
353
+ |> maybe_append_nested_fragment ( maybe_fragment )
352
354
|> maybe_remove_link ( mode )
353
355
354
356
:error ->
@@ -611,6 +613,10 @@ defmodule ExDoc.Autolink do
611
613
def format_visibility ( :undefined , _kind ) , do: "undefined or private"
612
614
def format_visibility ( visibility , _kind ) , do: "#{ visibility } "
613
615
616
+ defp maybe_append_nested_fragment ( nil , _ ) , do: nil
617
+ defp maybe_append_nested_fragment ( url , [ ] ) , do: url
618
+ defp maybe_append_nested_fragment ( url , [ "#" <> fragment ] ) , do: url <> "-" <> fragment
619
+
614
620
defp append_fragment ( url , nil ) , do: url
615
621
defp append_fragment ( url , fragment ) , do: url <> "#" <> fragment
616
622
end
0 commit comments