Project

decorator

0.0
No commit activity in last 3 years
No release in over 3 years
the Decorator make a decorator like Python.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 2.13
~> 3.10
 Project Readme

Decorator¶ ↑

DESCRIPTION:¶ ↑

the Decorator make a decorator like Python.

Usage¶ ↑

require 'decorator'

または

require 'decorator/only'

require ‘decorator’ だと Module#decorator だけでなく Module#kwargsable も一緒に使えます。require ‘decorator/only’ だと Module#decorator だけがロードされます

普通、このモジュールで使う関数はModule#decoratorのみです。それはデコレータを作成するデコレータです。デコレータを作る場合は通常これをデコレータとします。example:

class Module
  decorator
  def wrap func, *args, &blk
    puts "wrapped!"
    proc { func.call *args, &blk }

デコレータの第一引数は必ずMethodです。この場合のwrapはデコレータとして使用できます。

class TestClass
  wrap
  def wrapped *args, &blk
    puts "IN!"

もしデコレータに引数を渡した場合、それはすべてデコレータに一緒に渡されます。

   class TestClass
     wrap(*example_args)
     def wrapped *args, &blk
       puts "IN!"

=> ↓のargsにexample_argsが渡される

     def wrap func, *args, &blk
       puts "wrapped!"
       proc { func.call *args, &blk }

デコレータの戻り値がProcである場合、関数はそのProcに置き換えられます。たとえばこの場合、wrappedはwrap内のprocに置き換えられます。