Class: MxxRu::Externals::Registry

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/mxx_ru/externals.rb

Constant Summary collapse

INITIAL_MODE =
0
NEW_RULES_MODE =
1
OLD_RULES_MODE =
2

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeRegistry

Returns a new instance of Registry.



52
53
54
55
# File 'lib/mxx_ru/externals.rb', line 52

def initialize
  @mode = INITIAL_MODE
  @externals = {}
end

Class Method Details

.handle_external(*args) ⇒ Object



65
66
67
# File 'lib/mxx_ru/externals.rb', line 65

def Registry.handle_external(*args)
  Registry.instance.handle_external(*args)
end

Instance Method Details

#handle_external(name, obj) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# 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_onObject



57
58
59
# File 'lib/mxx_ru/externals.rb', line 57

def turn_new_rules_on
  @mode = NEW_RULES_MODE
end

#turn_old_rules_onObject



61
62
63
# File 'lib/mxx_ru/externals.rb', line 61

def turn_old_rules_on
  @mode = OLD_RULES_MODE
end