class MxxRu::Externals::Registry

Constants

INITIAL_MODE
NEW_RULES_MODE
OLD_RULES_MODE

Public Class Methods

handle_external(*args) click to toggle source
# File lib/mxx_ru/externals.rb, line 65
def Registry.handle_external(*args)
  Registry.instance.handle_external(*args)
end
new() click to toggle source
# File lib/mxx_ru/externals.rb, line 52
def initialize
  @mode = INITIAL_MODE
  @externals = {}
end

Public Instance Methods

handle_external(name, obj) click to toggle source
# File lib/mxx_ru/externals.rb, line 69
def handle_external(name, obj)
  if INITIAL_MODE == @mode
    raise "Use mxxruexternals command for handling externals.\n" +
        "For example:\n\n" +
        "mxxruexternals -f my_externals.rb\n"
  elsif NEW_RULES_MODE == @mode
    @externals[ name ] = obj.make_hash
    obj.define_rules :new_rules
  elsif OLD_RULES_MODE == @mode
    fresh_version = @externals.fetch(name, nil)
    if fresh_version
      puts "[Note] #{name} previous rules found"
      old_hash = obj.make_hash
      if old_hash == fresh_version
        puts "[Note] #{name} previous rules the same with current"
      else
        puts "[Note] #{name} previous rules differ with current"
        puts "[Note] #{name} WILL BE REGET"
        obj.define_rules :old_rules
      end
    else
      puts "[Note] #{name} not present in the current version"
      puts "[Note] #{name} WILL BE REMOVED"
      obj.define_rules :old_rules
    end
  end
end
turn_new_rules_on() click to toggle source
# File lib/mxx_ru/externals.rb, line 57
def turn_new_rules_on
  @mode = NEW_RULES_MODE
end
turn_old_rules_on() click to toggle source
# File lib/mxx_ru/externals.rb, line 61
def turn_old_rules_on
  @mode = OLD_RULES_MODE
end