class Bade::Runtime::Mixin
Public Instance Methods
call!(blocks, *args)
click to toggle source
# File lib/bade/runtime/mixin.rb, line 10 def call!(blocks, *args) begin block.call(blocks, *args) rescue ArgumentError => e case e.message when /\Awrong number of arguments \(given ([0-9]+), expected ([0-9]+)\)\Z/, /\Awrong number of arguments \(([0-9]+) for ([0-9]+)\)\Z/ # handle incorrect parameters count # minus one, because first argument is always hash of blocks given = $1.to_i - 1 expected = $2.to_i - 1 raise ArgumentError, "wrong number of arguments (given #{given}, expected #{expected}) for mixin `#{name}`" when /\Aunknown keyword: (.*)\Z/ # handle unknown key-value parameter key_name = $1 raise ArgumentError, "unknown key-value argument `#{key_name}` for mixin `#{name}`" else raise end rescue Block::MissingBlockDefinitionError => e msg = case e.context when :call "Mixin `#{name}` requires block to get called of block `#{e.name}`" when :render "Mixin `#{name}` requires block to get rendered content of block `#{e.name}`" else raise ::ArgumentError, "Unknown context #{e.context} of error #{e}!" end raise Block::MissingBlockDefinitionError.new(e.name, e.context, msg) end end