Class: Earthquake::IdVar::Gen

Inherits:
Object
  • Object
show all
Defined in:
lib/earthquake/id_var.rb

Instance Method Summary collapse

Constructor Details

#initialize(vars = ('aa'..'zz').to_a, prefix = '$') ⇒ Gen

Returns a new instance of Gen.



14
15
16
17
18
19
20
21
22
23
24
# File 'lib/earthquake/id_var.rb', line 14

def initialize(vars = ('aa'..'zz').to_a, prefix = '$')
  if not vars.kind_of?(Array)
    raise ArgumentError, 'vars should be an Array'
  elsif vars.empty?
    raise ArgumentError, 'vars should not be empty'
  end
  @vars = vars.map { |var| prefix + var }
  @table = {}
  @rtable = {}
  @prefix = prefix
end

Instance Method Details

#id2var(id) ⇒ Object



30
31
32
# File 'lib/earthquake/id_var.rb', line 30

def id2var(id)
  @rtable[id] || self.next(id)
end

#next(id) ⇒ Object



34
35
36
37
38
39
40
41
# File 'lib/earthquake/id_var.rb', line 34

def next(id)
  var = @vars.shift
  @vars.push var
  @rtable.delete(@table[var])
  @table[var] = id
  @rtable[id] = var
  var
end

#var2id(var) ⇒ Object



26
27
28
# File 'lib/earthquake/id_var.rb', line 26

def var2id(var)
  @table[var]
end