@@ -279,11 +279,11 @@ defmodule ExDoc.Language.Erlang do
279
279
280
280
case String . split ( url , ":" ) do
281
281
[ module ] ->
282
- walk_doc ( { :a , [ href: "`m:#{ module } #{ fragment } `" ] , inner , meta } , config )
282
+ walk_doc ( { :a , [ href: "`m:#{ maybe_quote ( module ) } #{ fragment } `" ] , inner , meta } , config )
283
283
284
284
[ app , module ] ->
285
285
inner = strip_app ( inner , app )
286
- walk_doc ( { :a , [ href: "`m:#{ module } #{ fragment } `" ] , inner , meta } , config )
286
+ walk_doc ( { :a , [ href: "`m:#{ maybe_quote ( module ) } #{ fragment } `" ] , inner , meta } , config )
287
287
288
288
_ ->
289
289
warn_ref ( attrs [ :href ] , config )
@@ -372,13 +372,21 @@ defmodule ExDoc.Language.Erlang do
372
372
end
373
373
374
374
defp fixup ( mfa ) do
375
- case String . split ( mfa , "#" ) do
376
- [ "" , mfa ] ->
377
- mfa
375
+ { m , fa } =
376
+ case String . split ( mfa , "#" ) do
377
+ [ "" , mfa ] ->
378
+ { "" , mfa }
378
379
379
- [ m , fa ] ->
380
- m <> ":" <> fa
381
- end
380
+ [ m , fa ] ->
381
+ { "#{ maybe_quote ( m ) } :" , fa }
382
+ end
383
+
384
+ [ f , a ] = String . split ( fa , "/" )
385
+ m <> maybe_quote ( f ) <> "/" <> a
386
+ end
387
+
388
+ defp maybe_quote ( m ) do
389
+ to_string ( :io_lib . write_atom ( String . to_atom ( m ) ) )
382
390
end
383
391
384
392
defp strip_app ( [ { :code , attrs , [ code ] , meta } ] , app ) do
@@ -474,12 +482,9 @@ defmodule ExDoc.Language.Erlang do
474
482
end
475
483
end
476
484
477
- def parse_module_string ( string , _mode ) do
478
- case Code . string_to_quoted ( ":'#{ string } '" ,
479
- warn_on_unnecessary_quotes: false ,
480
- emit_warnings: false
481
- ) do
482
- { :ok , module } when is_atom ( module ) ->
485
+ defp parse_module_string ( string , _mode ) do
486
+ case :erl_scan . string ( String . to_charlist ( string ) ) do
487
+ { :ok , [ { :atom , _ , module } ] , _ } when is_atom ( module ) ->
483
488
{ :module , module }
484
489
485
490
_ ->
0 commit comments