ImageProcessing::ChainableMacros
Crystal's method_missing hook never fires for class/module-level
calls, so the module-function form of the chainable interface
(e.g. ImageProcessing::Vips.resize_to_limit(400, 400)) has to be
generated explicitly from the processor's public operations. This
helper lives outside the generic Chainable module because macros of
generic modules cannot be resolved via extend.
Macros
Generates module-function forms for accumulator operations that are
not defined as processor methods (e.g. raw vips operations like
"invert" or ImageMagick CLI options like "flip"). On the builder
level these go through method_missing; module-level calls need
explicit definitions.
Mirrors the Ruby version's method_missing behavior of rejecting predicate methods on the chainable interface.