@@ -55,107 +55,114 @@ defmodule ElixirLS.LanguageServer.MarkdownUtils do
5555 end
5656
5757 # erlang name
58- defp get_metadata_entry_md ( { :name , _text } ) , do: nil
58+ def get_metadata_entry_md ( { :name , _text } ) , do: nil
5959
6060 # erlang signature
61- defp get_metadata_entry_md ( { :signature , _text } ) , do: nil
61+ def get_metadata_entry_md ( { :signature , _text } ) , do: nil
6262
6363 # erlang edit_url
64- defp get_metadata_entry_md ( { :edit_url , _text } ) , do: nil
64+ def get_metadata_entry_md ( { :edit_url , _text } ) , do: nil
6565
6666 # erlang :otp_doc_vsn
67- defp get_metadata_entry_md ( { :otp_doc_vsn , _text } ) , do: nil
67+ def get_metadata_entry_md ( { :otp_doc_vsn , _text } ) , do: nil
6868
6969 # erlang :source
70- defp get_metadata_entry_md ( { :source , _text } ) , do: nil
70+ def get_metadata_entry_md ( { :source , _text } ) , do: nil
7171
7272 # erlang :types
73- defp get_metadata_entry_md ( { :types , _text } ) , do: nil
73+ def get_metadata_entry_md ( { :types , _text } ) , do: nil
7474
7575 # erlang :group
76- defp get_metadata_entry_md ( { :group , _group } ) , do: nil
76+ def get_metadata_entry_md ( { :group , _group } ) , do: nil
7777
7878 # erlang :equiv
7979 # OTP < 27
80- defp get_metadata_entry_md ( { :equiv , { :function , name , arity } } ) do
80+ def get_metadata_entry_md ( { :equiv , { :function , name , arity } } ) do
8181 "**Equivalent to** #{ name } /#{ arity } "
8282 end
8383
8484 # OTP >= 27
85- defp get_metadata_entry_md ( { :equiv , text } ) when is_binary ( text ) do
85+ def get_metadata_entry_md ( { :equiv , text } ) when is_binary ( text ) do
8686 "**Equivalent to** #{ text } "
8787 end
8888
89- defp get_metadata_entry_md ( { :deprecated , text } ) when is_binary ( text ) do
89+ def get_metadata_entry_md ( { :deprecated , text } ) when is_binary ( text ) do
9090 "**Deprecated** #{ text } "
9191 end
9292
93- defp get_metadata_entry_md ( { :since , text } ) when is_binary ( text ) do
93+ def get_metadata_entry_md ( { :since , text } ) when is_binary ( text ) do
9494 "**Since** #{ text } "
9595 end
9696
97- defp get_metadata_entry_md ( { :guard , true } ) do
97+ def get_metadata_entry_md ( { :guard , true } ) do
9898 "**Guard**"
9999 end
100100
101- defp get_metadata_entry_md ( { :hidden , true } ) do
101+ def get_metadata_entry_md ( { :hidden , true } ) do
102102 "**Hidden**"
103103 end
104104
105- defp get_metadata_entry_md ( { :builtin , true } ) do
105+ def get_metadata_entry_md ( { :builtin , true } ) do
106106 "**Built-in**"
107107 end
108108
109- defp get_metadata_entry_md ( { :implementing , module } ) when is_atom ( module ) do
109+ def get_metadata_entry_md ( { :implementing , module } ) when is_atom ( module ) do
110110 "**Implementing behaviour** #{ inspect ( module ) } "
111111 end
112112
113- defp get_metadata_entry_md ( { :implementing_module_app , app } ) when is_atom ( app ) do
113+ def get_metadata_entry_md ( { :implementing_module_app , app } ) when is_atom ( app ) do
114114 "**Behaviour defined in application** #{ to_string ( app ) } "
115115 end
116116
117- defp get_metadata_entry_md ( { :app , app } ) when is_atom ( app ) do
117+ def get_metadata_entry_md ( { :app , app } ) when is_atom ( app ) do
118118 "**Application** #{ to_string ( app ) } "
119119 end
120120
121- defp get_metadata_entry_md ( { :optional , true } ) do
121+ def get_metadata_entry_md ( { :optional , true } ) do
122122 "**Optional**"
123123 end
124124
125- defp get_metadata_entry_md ( { :optional , false } ) , do: nil
125+ def get_metadata_entry_md ( { :optional , false } ) , do: nil
126126
127- defp get_metadata_entry_md ( { :overridable , true } ) do
127+ def get_metadata_entry_md ( { :overridable , true } ) do
128128 "**Overridable**"
129129 end
130130
131- defp get_metadata_entry_md ( { :overridable , false } ) , do: nil
131+ def get_metadata_entry_md ( { :overridable , false } ) , do: nil
132132
133- defp get_metadata_entry_md ( { :opaque , true } ) do
133+ def get_metadata_entry_md ( { :opaque , true } ) do
134134 "**Opaque**"
135135 end
136136
137- defp get_metadata_entry_md ( { :defaults , _ } ) , do: nil
137+ def get_metadata_entry_md ( { :defaults , _ } ) , do: nil
138138
139- defp get_metadata_entry_md ( { :delegate_to , { m , f , a } } )
140- when is_atom ( m ) and is_atom ( f ) and is_integer ( a ) do
139+ def get_metadata_entry_md ( { :delegate_to , { m , f , a } } )
140+ when is_atom ( m ) and is_atom ( f ) and is_integer ( a ) do
141141 "**Delegates to** #{ inspect ( m ) } .#{ f } /#{ a } "
142142 end
143143
144- defp get_metadata_entry_md ( { :behaviours , [ ] } ) , do: nil
144+ def get_metadata_entry_md ( { :behaviours , [ ] } ) , do: nil
145145
146- defp get_metadata_entry_md ( { :behaviours , list } )
147- when is_list ( list ) do
146+ def get_metadata_entry_md ( { :behaviours , list } )
147+ when is_list ( list ) do
148148 "**Implements** #{ Enum . map_join ( list , ", " , & inspect / 1 ) } "
149149 end
150150
151- defp get_metadata_entry_md ( { :source_annos , _ } ) , do: nil
151+ def get_metadata_entry_md ( { :source_annos , _ } ) , do: nil
152152
153- defp get_metadata_entry_md ( { :source_path , _ } ) , do: nil
153+ def get_metadata_entry_md ( { :source_path , _ } ) , do: nil
154154
155- defp get_metadata_entry_md ( { :spark_opts , _ } ) , do: nil
155+ def get_metadata_entry_md ( { :spark_opts , _ } ) , do: nil
156156
157- defp get_metadata_entry_md ( { key , value } ) do
158- "**#{ key } ** #{ inspect ( value ) } "
157+ # Filter out complex attribute/spec metadata that can't be serialized
158+ def get_metadata_entry_md ( { :attribute , _ } ) , do: nil
159+
160+ def get_metadata_entry_md ( { key , value } ) do
161+ try do
162+ "**#{ key } ** #{ inspect ( value ) } "
163+ rescue
164+ _ -> nil
165+ end
159166 end
160167
161168 @ doc """
0 commit comments