From a00dd619c16a27f16b3894abe0e4e7c2d2f11d1b Mon Sep 17 00:00:00 2001 From: DualFroz Date: Wed, 26 Aug 2026 14:20:00 +0200 Subject: [PATCH] feat(middleware): add middleware stack builder --- lib/prism/middleware.rb | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 lib/prism/middleware.rb diff --git a/lib/prism/middleware.rb b/lib/prism/middleware.rb new file mode 100644 index 0000000..1e89648 --- /dev/null +++ b/lib/prism/middleware.rb @@ -0,0 +1,25 @@ +module Prism + class MiddlewareStack + def initialize + @entries = [] + end + + def use(middleware, *args, **kwargs, &block) + @entries << [middleware, args, kwargs, block] + end + + def build(app) + @entries.reverse.reduce(app) do |inner, (middleware, args, kwargs, block)| + if kwargs.empty? + middleware.new(inner, *args, &block) + else + middleware.new(inner, *args, **kwargs, &block) + end + end + end + + def empty? + @entries.empty? + end + end +end