Module: TinySweeper::ClassMethods

Defined in:
lib/tiny_sweeper.rb

Instance Method Summary collapse

Instance Method Details

#sweep(*field_names, &sweeper) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/tiny_sweeper.rb', line 3

def sweep(*field_names, &sweeper)
  Array(field_names).each do |field_name|
    stop_if_we_have_seen_this_before!(field_name)

    overrides_module.module_eval do
      define_method("#{field_name}=") do |value|
        if value
          super(sweeper.call(value))
        else
          super(value)
        end
      end
    end
  end
end

#sweep_up!(instance) ⇒ Object



19
20
21
22
23
# File 'lib/tiny_sweeper.rb', line 19

def sweep_up!(instance)
  @swept_fields.each do |field|
    instance.send("#{field}=", instance.send(field))
  end
end