Skip to content

Commit daaac04

Browse files
Factor out the middleware processing.
1 parent 639154a commit daaac04

1 file changed

Lines changed: 40 additions & 20 deletions

File tree

tdom/processor.py

Lines changed: 40 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -895,44 +895,64 @@ def _process_component(
895895
template, attrs, start_i_index, end_i_index, check_callables=True
896896
)
897897
component_callable = template.interpolations[start_i_index].value
898-
result = self.component_processor_api.process(
898+
response = self.component_processor_api.process(
899899
template, last_ctx, component_callable, attrs, children_template
900900
)
901-
if isinstance(result, Template):
902-
result_t, middleware_api = result, None
903-
elif isinstance(result, tuple):
904-
if len(result) == 2:
905-
if not isinstance(result[0], Template):
901+
if isinstance(response, Template):
902+
response_t = response
903+
response_middleware = None
904+
elif isinstance(response, tuple):
905+
if len(response) == 2:
906+
if not isinstance(response[0], Template):
906907
raise TypeError(
907-
f"Component processor returned unxpected type in first entry of 2-tuple: {type(result[0])}"
908+
f"Component processor returned unxpected type in first entry of 2-tuple: {type(response[0])}"
908909
)
909910
else:
910-
result_t, middleware_api = result
911+
response_t, response_middleware = response
911912
else:
912913
raise ValueError(
913-
f"Component processor returned tuple with length != 2: {len(result)}"
914+
f"Component processor returned tuple with length != 2: {len(response)}"
914915
)
915916
else:
916917
raise TypeError(
917-
f"Component processor should return unexpected type: {type(result)}"
918+
f"Component processor should return unexpected type: {type(response)}"
918919
)
919920

921+
if response_middleware is not None:
922+
return self._process_middleware(
923+
template, last_ctx, response_t, response_middleware
924+
)
925+
else:
926+
return self._process_template(response_t, last_ctx)
927+
928+
def _process_middleware(
929+
self,
930+
template: Template,
931+
last_ctx: ProcessContext,
932+
response_t: Template,
933+
response_middleware: object,
934+
) -> str:
935+
"""
936+
Process the given middleware and apply it to the component's response
937+
template.
938+
"""
939+
920940
context_values: tuple[tuple[ContextVar, object], ...] = ()
921941

922-
if middleware_api is not None:
923-
if isinstance(middleware_api, IMiddlewareGetContextValues):
924-
context_values = middleware_api.get_context_values()
925-
else:
926-
# @DESIGN: It is NOT an error if a middleware object is provided but it
927-
# provides no actual middleware functionality. Should it be?
928-
pass
942+
if isinstance(
943+
response_middleware, IMiddlewareGetContextValues
944+
): # @TODO: Probably use hasattr.
945+
context_values = response_middleware.get_context_values()
946+
else:
947+
# @DESIGN: It is NOT an error if a middleware object is provided but it
948+
# provides no actual middleware functionality. Should it be?
949+
pass
929950

930-
# Try to consolidate "final" call(s) to the last block regardless of middleware.
931951
if context_values:
932952
with ContextVarSetter(context_values=context_values):
933-
return self._process_template(result_t, last_ctx)
953+
return self._process_template(response_t, last_ctx)
934954
else:
935-
return self._process_template(result_t, last_ctx)
955+
return self._process_template(response_t, last_ctx)
936956

937957
def _process_raw_texts(
938958
self,

0 commit comments

Comments
 (0)