@@ -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