class GEPUB::Package::IDPool

Public Class Methods

new() click to toggle source
# File lib/gepub/package.rb, line 40
def initialize
  @pool = {}
  @counter = {}
end

Public Instance Methods

[](k) click to toggle source
# File lib/gepub/package.rb, line 74
def [](k)
  @pool[k]
end
[]=(k,v) click to toggle source
# File lib/gepub/package.rb, line 77
def []=(k,v)
  @pool[k] = v
end
counter(prefix,suffix) click to toggle source
# File lib/gepub/package.rb, line 45
def counter(prefix,suffix)
  @counter[prefix + '////' + suffix]
end
generate_key(param = {}) click to toggle source
# File lib/gepub/package.rb, line 53
def generate_key(param = {})
  prefix = param[:prefix] || ''
  suffix = param[:suffix] || ''
  count = [ param[:start] || 1, counter(prefix,suffix) || 1].max
  while (true)
    if param[:without_count]
      k = prefix + suffix
      count -= 1
      param.delete(:without_count)
    else
      k = prefix + count.to_s + suffix
    end
    if @pool[k].nil?
      set_counter(prefix,suffix, count + 1)
      return k
    end
    count += 1
  end

end
set_counter(prefix,suffix,val) click to toggle source
# File lib/gepub/package.rb, line 49
def set_counter(prefix,suffix,val)
  @counter[prefix + '////' + suffix] = val
end