Sha256: bc8bfc391e5de522b0f19f7092b80c2cb519d6d4adebc6116c0d34ba5dc58ea8

Contents?: true

Size: 1.01 KB

Versions: 2

Compression:

Stored size: 1.01 KB

Contents

# frozen-string-literal: true

class Eventbox
  class ObjectRegistry
    class << self
      def taggable?(object)
        case object
        # Keep the list of non taggable object types in sync with Sanitizer.sanitize_value
        when NilClass, Numeric, Symbol, TrueClass, FalseClass, WrappedObject, Action, Module, Eventbox, Proc
          false
        else
          if object.frozen?
            false
          else
            true
          end
        end
      end

      def set_tag(object, new_tag)
        raise InvalidAccess, "object is not taggable: #{object.inspect}" unless taggable?(object)

        tag = get_tag(object)
        if tag && tag != new_tag
          raise InvalidAccess, "object #{object.inspect} is already tagged to #{tag.inspect}"
        end
        object.instance_variable_set(:@__event_box_tag__, new_tag)
      end

      def get_tag(object)
        object.instance_variable_defined?(:@__event_box_tag__) && object.instance_variable_get(:@__event_box_tag__)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
eventbox-1.0.0 lib/eventbox/object_registry.rb
eventbox-0.1.0 lib/eventbox/object_registry.rb