Sha256: 018bf232988b16f8e836cfe9c34e10c3ff609fcf10b145f04af56af146cd9d17

Contents?: true

Size: 598 Bytes

Versions: 4

Compression:

Stored size: 598 Bytes

Contents

# frozen_string_literal: true

require_relative "selector_not_found_exception"

module Anony
  class Selectors
    def initialize(model_class, &block)
      @model_class = model_class
      @selectors = {}
      instance_exec(&block) if block
    end

    attr_reader :selectors

    def for_subject(subject, &block)
      selectors[subject] = block
    end

    def select(subject, subject_id)
      selector = selectors[subject]
      raise SelectorNotFoundException.new(subject.to_s, @model_class.name) if selector.nil?

      @model_class.instance_exec(subject_id, &selector)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
anony-1.6.0 lib/anony/selectors.rb
anony-1.5.0 lib/anony/selectors.rb
anony-1.4.0 lib/anony/selectors.rb
anony-1.2.0 lib/anony/selectors.rb