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