class Earthquake::IdVar::Gen
Public Class Methods
new(vars = "aa".."zz", prefix = "$")
click to toggle source
# File lib/earthquake/id_var.rb, line 14 def initialize(vars = "aa".."zz", prefix = "$") unless Range === vars and String === vars.first raise ArgumentError, "vars should be a Range of String" end @vars = vars @var = @vars.last.dup @table = ActiveSupport::Cache::MemoryStore.new @prefix = prefix end
Public Instance Methods
id2var(id)
click to toggle source
# File lib/earthquake/id_var.rb, line 28 def id2var(id) @table.read(id) || succ(id) end
var2id(var)
click to toggle source
# File lib/earthquake/id_var.rb, line 24 def var2id(var) @table.read(var) end
Private Instance Methods
succ(id)
click to toggle source
# File lib/earthquake/id_var.rb, line 34 def succ(id) @var.replace(@vars.first.dup) unless @vars.include?(@var.next!) var = @prefix + @var @table.delete(@table.read(var)) @table.write(var, id) @table.write(id, var) var.dup end