lib/tipi/config_dsl.rb in tipi-0.43 vs lib/tipi/config_dsl.rb in tipi-0.45

- old
+ new

@@ -2,43 +2,43 @@ module Tipi module Configuration class Interpreter # make_blank_slate - + def initialize(assembler) @assembler = assembler end - + def gzip_response @assembler.emit 'req = Tipi::GZip.wrap(req)' end - + def log(out) @assembler.wrap_current_frame 'logger.log_request(req) do |req|' end - + def error(&block) assembler.emit_exception_handler &block end - + def match(pattern, &block) @assembler.emit_conditional "if req.path =~ #{pattern.inspect}", &block end end - + class Assembler def self.from_source(code) new.from_source code end def from_source(code) @stack = [new_frame] @app_procs = {} @interpreter = Interpreter.new self @interpreter.instance_eval code - + loop do frame = @stack.pop return assemble_app_proc(frame).join("\n") if @stack.empty? @stack.last[:body] << assemble_frame(frame) @@ -49,11 +49,11 @@ { prelude: [], body: [] } end - + def add_frame(&block) @stack.push new_frame yield ensure frame = @stack.pop @@ -65,24 +65,24 @@ wrapper = new_frame wrapper[:body] << head @stack.push wrapper @stack.push frame end - + def emit(code) @stack.last[:body] << code end - + def emit_prelude(code) @stack.last[:prelude] << code end - + def emit_exception_handler(&block) proc_id = add_app_proc block @stack.last[:rescue_proc_id] = proc_id end - + def emit_block(conditional, &block) proc_id = add_app_proc block @stack.last[:branched] = true emit conditional add_frame &block @@ -91,10 +91,10 @@ def add_app_proc(proc) id = :"proc#{@app_procs.size}" @app_procs[id] = proc id end - + def assemble_frame(frame) indent = 0 lines = [] emit_code lines, frame[:prelude], indent if frame[:rescue_proc_id]