Sha256: 27e592ae0d16107fda3926f744efd247ee8b951703ab78591b4ef7f082e9bb5c

Contents?: true

Size: 918 Bytes

Versions: 78

Compression:

Stored size: 918 Bytes

Contents

module WithRandomizations
  extend ActiveSupport::Concern

  included do
    serialize :randomizations, Hash
    validate :ensure_randomizations_format
  end

  def seed
    @seed || 0
  end

  def seed_with!(seed)
    @seed = seed
  end

  def randomizer
    #TODO remove this hack after removing seed state from here
    @randomizer ||= (Mumukit::Randomizer.parse(randomizations) rescue Mumukit::Randomizer.new([]))
  end

  private

  def ensure_randomizations_format
    errors.add :randomizations,
               :invalid_format unless Mumukit::Randomizer.valid? randomizations.to_h
  end

  module ClassMethods
    def randomize(*selectors)
      selectors.each { |selector| randomize_field selector }
    end

    private

    def randomize_field(selector)
      define_method(selector) do |*args|
        return unless super(*args)
        randomizer.randomize!(super(*args), seed)
      end
    end
  end
end

Version data entries

78 entries across 78 versions & 2 rubygems

Version Path
mumuki-domain-8.1.2 app/models/concerns/with_randomizations.rb
mumuki-domain-8.1.1 app/models/concerns/with_randomizations.rb
mumuki-domain-8.1.0 app/models/concerns/with_randomizations.rb
mumuki-domain-8.0.0 app/models/concerns/with_randomizations.rb
mumuki-domain-7.12.2 app/models/concerns/with_randomizations.rb
mumuki-domain-7.12.1 app/models/concerns/with_randomizations.rb
mumuki-domain-7.12.0 app/models/concerns/with_randomizations.rb
mumuki-domain-7.11.1 app/models/concerns/with_randomizations.rb
mumuki-laboratory-7.11.1 vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-c92f2a7212e2/app/models/concerns/with_randomizations.rb
mumuki-laboratory-7.11.0 vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-2e15c3330133/app/models/concerns/with_randomizations.rb
mumuki-domain-7.11.0 app/models/concerns/with_randomizations.rb
mumuki-domain-7.10.1 app/models/concerns/with_randomizations.rb
mumuki-domain-7.10.0 app/models/concerns/with_randomizations.rb
mumuki-laboratory-7.9.2 vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-7082a83493eb/app/models/concerns/with_randomizations.rb
mumuki-domain-7.9.2 app/models/concerns/with_randomizations.rb
mumuki-laboratory-7.9.1 vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-b162dc91aa77/app/models/concerns/with_randomizations.rb
mumuki-domain-7.9.1 app/models/concerns/with_randomizations.rb
mumuki-laboratory-7.9.0 vendor/bundle/ruby/2.6.0/bundler/gems/mumuki-domain-520f859ca8af/app/models/concerns/with_randomizations.rb
mumuki-domain-7.9.0 app/models/concerns/with_randomizations.rb
mumuki-domain-7.7.3 app/models/concerns/with_randomizations.rb