Sha256: 247e19ecb402fe5285ba3a076e9a30f27fee199839db3c96dd1793f374ba6977

Contents?: true

Size: 374 Bytes

Versions: 14

Compression:

Stored size: 374 Bytes

Contents

module Rbexy
  class ASTTransformer
    attr_reader :registry

    def initialize
      clear!
    end

    def register(*node_classes, &block)
      node_classes.each { |k| (registry[k] ||= []) << block }
    end

    def transform(node, context)
      registry[node.class]&.each { |t| t.call(node, context) }
    end

    def clear!
      @registry = {}
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
rbexy-2.0.0.rc5 lib/rbexy/ast_transformer.rb
rbexy-2.0.0.rc4 lib/rbexy/ast_transformer.rb
rbexy-2.0.0.rc3 lib/rbexy/ast_transformer.rb
rbexy-2.0.0.rc2 lib/rbexy/ast_transformer.rb
rbexy-2.0.0.rc1 lib/rbexy/ast_transformer.rb
rbexy-2.0.0.beta9 lib/rbexy/ast_transformer.rb
rbexy-2.0.0.beta8 lib/rbexy/ast_transformer.rb
rbexy-2.0.0.beta7 lib/rbexy/ast_transformer.rb
rbexy-2.0.0.beta6 lib/rbexy/ast_transformer.rb
rbexy-2.0.0.beta5 lib/rbexy/ast_transformer.rb
rbexy-2.0.0.beta4 lib/rbexy/ast_transformer.rb
rbexy-2.0.0.beta3 lib/rbexy/ast_transformer.rb
rbexy-2.0.0.beta2 lib/rbexy/ast_transformer.rb
rbexy-2.0.0.beta1 lib/rbexy/ast_transformer.rb