@@ -55,107 +55,114 @@ defmodule ElixirLS.LanguageServer.MarkdownUtils do
55
55
end
56
56
57
57
# erlang name
58
- defp get_metadata_entry_md ( { :name , _text } ) , do: nil
58
+ def get_metadata_entry_md ( { :name , _text } ) , do: nil
59
59
60
60
# erlang signature
61
- defp get_metadata_entry_md ( { :signature , _text } ) , do: nil
61
+ def get_metadata_entry_md ( { :signature , _text } ) , do: nil
62
62
63
63
# 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
65
65
66
66
# 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
68
68
69
69
# erlang :source
70
- defp get_metadata_entry_md ( { :source , _text } ) , do: nil
70
+ def get_metadata_entry_md ( { :source , _text } ) , do: nil
71
71
72
72
# erlang :types
73
- defp get_metadata_entry_md ( { :types , _text } ) , do: nil
73
+ def get_metadata_entry_md ( { :types , _text } ) , do: nil
74
74
75
75
# erlang :group
76
- defp get_metadata_entry_md ( { :group , _group } ) , do: nil
76
+ def get_metadata_entry_md ( { :group , _group } ) , do: nil
77
77
78
78
# erlang :equiv
79
79
# OTP < 27
80
- defp get_metadata_entry_md ( { :equiv , { :function , name , arity } } ) do
80
+ def get_metadata_entry_md ( { :equiv , { :function , name , arity } } ) do
81
81
"**Equivalent to** #{ name } /#{ arity } "
82
82
end
83
83
84
84
# 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
86
86
"**Equivalent to** #{ text } "
87
87
end
88
88
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
90
90
"**Deprecated** #{ text } "
91
91
end
92
92
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
94
94
"**Since** #{ text } "
95
95
end
96
96
97
- defp get_metadata_entry_md ( { :guard , true } ) do
97
+ def get_metadata_entry_md ( { :guard , true } ) do
98
98
"**Guard**"
99
99
end
100
100
101
- defp get_metadata_entry_md ( { :hidden , true } ) do
101
+ def get_metadata_entry_md ( { :hidden , true } ) do
102
102
"**Hidden**"
103
103
end
104
104
105
- defp get_metadata_entry_md ( { :builtin , true } ) do
105
+ def get_metadata_entry_md ( { :builtin , true } ) do
106
106
"**Built-in**"
107
107
end
108
108
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
110
110
"**Implementing behaviour** #{ inspect ( module ) } "
111
111
end
112
112
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
114
114
"**Behaviour defined in application** #{ to_string ( app ) } "
115
115
end
116
116
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
118
118
"**Application** #{ to_string ( app ) } "
119
119
end
120
120
121
- defp get_metadata_entry_md ( { :optional , true } ) do
121
+ def get_metadata_entry_md ( { :optional , true } ) do
122
122
"**Optional**"
123
123
end
124
124
125
- defp get_metadata_entry_md ( { :optional , false } ) , do: nil
125
+ def get_metadata_entry_md ( { :optional , false } ) , do: nil
126
126
127
- defp get_metadata_entry_md ( { :overridable , true } ) do
127
+ def get_metadata_entry_md ( { :overridable , true } ) do
128
128
"**Overridable**"
129
129
end
130
130
131
- defp get_metadata_entry_md ( { :overridable , false } ) , do: nil
131
+ def get_metadata_entry_md ( { :overridable , false } ) , do: nil
132
132
133
- defp get_metadata_entry_md ( { :opaque , true } ) do
133
+ def get_metadata_entry_md ( { :opaque , true } ) do
134
134
"**Opaque**"
135
135
end
136
136
137
- defp get_metadata_entry_md ( { :defaults , _ } ) , do: nil
137
+ def get_metadata_entry_md ( { :defaults , _ } ) , do: nil
138
138
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
141
141
"**Delegates to** #{ inspect ( m ) } .#{ f } /#{ a } "
142
142
end
143
143
144
- defp get_metadata_entry_md ( { :behaviours , [ ] } ) , do: nil
144
+ def get_metadata_entry_md ( { :behaviours , [ ] } ) , do: nil
145
145
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
148
148
"**Implements** #{ Enum . map_join ( list , ", " , & inspect / 1 ) } "
149
149
end
150
150
151
- defp get_metadata_entry_md ( { :source_annos , _ } ) , do: nil
151
+ def get_metadata_entry_md ( { :source_annos , _ } ) , do: nil
152
152
153
- defp get_metadata_entry_md ( { :source_path , _ } ) , do: nil
153
+ def get_metadata_entry_md ( { :source_path , _ } ) , do: nil
154
154
155
- defp get_metadata_entry_md ( { :spark_opts , _ } ) , do: nil
155
+ def get_metadata_entry_md ( { :spark_opts , _ } ) , do: nil
156
156
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
159
166
end
160
167
161
168
@ doc """
0 commit comments