Sha256: 3e2c58e361ffb1dfd1de3c0eb112ed5574c0c5dae6b3805b3e541ca950fa972d

Contents?: true

Size: 1.03 KB

Versions: 36

Compression:

Stored size: 1.03 KB

Contents

module Schemacop
  module V3
    class NodeRegistry
      @by_name = {}
      @by_short_name = {}
      @by_class = {}

      def self.register(name, short_name, klass)
        @by_name[name.to_sym] = klass
        @by_short_name[short_name.to_sym] = klass
        @by_class[klass] = { name: name.to_sym, short_name: short_name.to_sym }
      end

      def self.dsl_methods(bang)
        return @by_short_name.keys.map do |short_name|
          if bang
            ["dsl_#{short_name}!", "dsl_#{short_name}?"]
          else
            ["dsl_#{short_name}"]
          end
        end.flatten.map(&:to_sym)
      end

      def self.find(name_or_klass)
        if name_or_klass.is_a?(Class)
          return name_or_klass
        else
          return by_name(name_or_klass)
        end
      end

      def self.by_name(name)
        @by_name[name.to_sym]
      end

      def self.by_short_name(short_name)
        @by_short_name[short_name.to_sym]
      end

      def self.name(klass)
        @by_class[klass][:name]
      end
    end
  end
end

Version data entries

36 entries across 36 versions & 1 rubygems

Version Path
schemacop-3.0.33 lib/schemacop/v3/node_registry.rb
schemacop-3.0.32 lib/schemacop/v3/node_registry.rb
schemacop-3.0.31 lib/schemacop/v3/node_registry.rb
schemacop-3.0.30 lib/schemacop/v3/node_registry.rb
schemacop-3.0.29 lib/schemacop/v3/node_registry.rb
schemacop-3.0.28 lib/schemacop/v3/node_registry.rb
schemacop-3.0.27 lib/schemacop/v3/node_registry.rb
schemacop-3.0.26 lib/schemacop/v3/node_registry.rb
schemacop-3.0.25 lib/schemacop/v3/node_registry.rb
schemacop-3.0.24 lib/schemacop/v3/node_registry.rb
schemacop-3.0.23 lib/schemacop/v3/node_registry.rb
schemacop-3.0.22 lib/schemacop/v3/node_registry.rb
schemacop-3.0.21 lib/schemacop/v3/node_registry.rb
schemacop-3.0.20 lib/schemacop/v3/node_registry.rb
schemacop-3.0.19 lib/schemacop/v3/node_registry.rb
schemacop-3.0.18 lib/schemacop/v3/node_registry.rb
schemacop-3.0.17 lib/schemacop/v3/node_registry.rb
schemacop-3.0.16 lib/schemacop/v3/node_registry.rb
schemacop-3.0.15 lib/schemacop/v3/node_registry.rb
schemacop-3.0.14 lib/schemacop/v3/node_registry.rb