Sha256: 6be39f8cbe13ad15127d6d7088467b65d0677d973a5ba624575042ec6f6c1d12

Contents?: true

Size: 776 Bytes

Versions: 3

Compression:

Stored size: 776 Bytes

Contents

require "attentive/entity"

module Attentive
  class CompositeEntity < Entity
    attr_reader :entities

    @entities = []
    class << self
      attr_accessor :entities

      def define(entity_name, *entities)
        entity_klass = Class.new(Attentive::CompositeEntity)
        entity_klass.token_name = entity_name
        entity_klass.entities = entities.map { |entity| Entity[entity] }
        Entity.register! entity_name, entity_klass
      end
    end

    def initialize(*args)
      super
      @entities = self.class.entities.map { |entity_klass| entity_klass.new(variable_name) }
    end

    def matches?(cursor)
      entities.each do |entity|
        match = entity.matches?(cursor.dup)
        return match if match
      end
      false
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
attentive-0.1.1 lib/attentive/composite_entity.rb
attentive-0.1.0 lib/attentive/composite_entity.rb
attentive-0.1.0.beta1 lib/attentive/composite_entity.rb