class Anytick::DefineMethod
Public Class Methods
new(trailing_arguments_forwarding: true)
click to toggle source
# File lib/anytick/defmethod.rb, line 4 def initialize(trailing_arguments_forwarding: true) @trailing_arguments_forwarding = trailing_arguments_forwarding @trailing_arguments_forwarding_mark = (@trailing_arguments_forwarding.is_a? String) ? @trailing_arguments_forwarding : '[...]' end
Public Instance Methods
execute(namespace, expr, _match_result)
click to toggle source
# File lib/anytick/defmethod.rb, line 41 def execute(namespace, expr, _match_result) location = backtick_caller if (namespace.respond_to? :module_eval) then namespace.module_eval(arg_fwd(expr), location.path, location.lineno) else namespace.instance_eval(arg_fwd(expr), location.path, location.lineno) end end
match?(expr)
click to toggle source
# File lib/anytick/defmethod.rb, line 9 def match?(expr) (/\A \s* def \s+/x.match? expr) && (/\b end \s* \z/x.match? expr) end
Private Instance Methods
arg_fwd(expr)
click to toggle source
# File lib/anytick/defmethod.rb, line 19 def arg_fwd(expr) first_line = first_line(expr) if (@trailing_arguments_forwarding && (first_line.include? @trailing_arguments_forwarding_mark)) then expr.gsub(@trailing_arguments_forwarding_mark, '*__args__, **__kw_args__, &__block__') else expr end end
first_line(expr)
click to toggle source
# File lib/anytick/defmethod.rb, line 13 def first_line(expr) expr.lstrip.each_line.first end