Hooks

Des macros spéciales existent qui sont invoquées dans certaines situations, comme des hooks: inherited, included, extended et method_missing.

  • inherited est invoquée à la compilation quand une sous-classe est définie. @type est le type de l'héritage.
  • included est invoquée à la compilation quand un module est inclus. @type est le type de l'inclusion.
  • extended est invoquée à la compilation quand un module est étendu. @type est le type de l'extension.
  • method_missing est invoquée à la ocmpilation quand une méthode n'est pas trouvée.

Exemple pour inherited:

class Parent
  macro inherited
    def lineage
      "{{@type.name.id}} < Parent"
    end
  end
end

class Child < Parent
end

Child.new.lineage #=> "Child < Parent"

Exemple pour method_missing:

macro method_missing(call)
  print "Got ", {{call.name.id.stringify}}, " with ", {{call.args.size}}, " arguments", '\n'
end

foo          # Prints: Got foo with 0 arguments
bar 'a', 'b' # Prints: Got bar with 2 arguments

results matching ""

    No results matching ""