@@ -103,7 +103,7 @@ if Code.ensure_loaded?(Sourceror) do
103103 false ->
104104 case get_extensions ( body , config ) do
105105 { :ok , extensions , type , using } ->
106- replacement = format_resource ( body , extensions , config , type , using )
106+ replacement = format_resource ( body , extensions , config , type , using , opts )
107107
108108 patches =
109109 body
@@ -135,7 +135,7 @@ if Code.ensure_loaded?(Sourceror) do
135135 patches
136136 end
137137
138- defp format_resource ( body , extensions , config , _type , using ) do
138+ defp format_resource ( body , extensions , config , _type , using , opts ) do
139139 sections =
140140 extensions
141141 |> Enum . flat_map ( fn extension ->
@@ -179,14 +179,14 @@ if Code.ensure_loaded?(Sourceror) do
179179 |> Enum . map ( & elem ( & 1 , 0 ) )
180180 |> then ( fn sections ->
181181 if config [ :remove_parens? ] do
182- de_paren ( sections , Enum . flat_map ( extensions , & & 1 . sections ( ) ) , extensions )
182+ de_paren ( sections , Enum . flat_map ( extensions , & & 1 . sections ( ) ) , extensions , opts )
183183 else
184184 sections
185185 end
186186 end )
187187 end
188188
189- defp de_paren ( actual_sections , dsl_sections , extensions ) do
189+ defp de_paren ( actual_sections , dsl_sections , extensions , opts ) do
190190 actual_sections
191191 |> Enum . map ( fn
192192 { name , meta , body } ->
@@ -195,16 +195,18 @@ if Code.ensure_loaded?(Sourceror) do
195195 { name , meta , body }
196196
197197 section ->
198- { name , meta , de_paren_section ( body , section , extensions ) }
198+ { name , meta , de_paren_section ( body , section , extensions , opts ) }
199199 end
200200
201201 other ->
202202 other
203203 end )
204204 end
205205
206- defp de_paren_section ( body , section , extensions ) do
207- builders = all_entity_builders ( [ section ] , extensions )
206+ defp de_paren_section ( body , section , extensions , opts ) do
207+ locals_without_parens = Keyword . get ( opts , :locals_without_parens , [ ] )
208+
209+ builders = all_entity_builders ( [ section ] , extensions ) ++ locals_without_parens
208210
209211 Macro . prewalk ( body , fn
210212 { func , meta , body } = node when is_atom ( func ) ->
@@ -285,14 +287,13 @@ if Code.ensure_loaded?(Sourceror) do
285287 [ ]
286288 end
287289 |> List . wrap ( )
290+ |> Enum . filter ( & is_atom / 1 )
288291 |> Enum . flat_map ( fn extension ->
289- case is_atom ( extension ) and Code . ensure_compiled ( extension ) do
290- { :module , module } ->
291- if Spark . implements_behaviour? ( module , Spark.Dsl.Extension ) do
292- [ module ]
293- else
294- [ ]
295- end
292+ if Code . ensure_loaded? ( module ) and Spark . implements_behaviour? ( module , Spark.Dsl.Extension ) do
293+ [ module ]
294+ else
295+ [ ]
296+ end
296297
297298 _ ->
298299 [ ]
0 commit comments