File: deprecated.rb

package info (click to toggle)
ruby-ice-cube 0.16.4-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 800 kB
  • sloc: ruby: 7,823; makefile: 6
file content (37 lines) | stat: -rw-r--r-- 1,339 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
module IceCube
  module Deprecated

    # Define a deprecated alias for a method
    # @param [Symbol] name - name of method to define
    # @param [Symbol] replacement - name of method to replace (alias)
    def deprecated_alias(name, replacement)
      # Create a wrapped version
      define_method(name) do |*args, &block|
        warn "IceCube: #{self.class}##{name} is deprecated (use #{replacement})", caller[0]
        send replacement, *args, &block
      end
    end

    # Deprecate a defined method
    # @param [Symbol] name - name of deprecated method
    # @param [Symbol] replacement - name of the desired replacement
    def deprecated(name, replacement)
      # Replace old method
      old_name = :"#{name}_without_deprecation"
      alias_method old_name, name
      # And replace it with a wrapped version
      define_method(name) do |*args, &block|
        warn "IceCube: #{self.class}##{name} is deprecated (use #{replacement})", caller[0]
        send old_name, *args, &block
      end
    end

    def self.schedule_options(schedule, options)
      if options[:start_date_override]
        warn "IceCube: :start_date_override option is deprecated " \
             "(use a block: `{|s| s.start_time = override }`)", caller[0]
        schedule.start_time = options[:start_date_override]
      end
    end
  end
end