class BinData::Registry
This registry contains a register of name -> class mappings.
def initialize
def initialize @registry = {} end
def lookup(name)
def lookup(name) @registry[name.to_s] end
def register(name, klass)
from camelCase to underscore style.
Registers the mapping of +name+ to +klass+. +name+ is converted
def register(name, klass) # convert camelCase name to underscore style key = underscore_name(name) # warn if replacing an existing class if $VERBOSE and (existing = @registry[key]) warn "warning: replacing registered class #{existing} with #{klass}" end @registry[key] = klass key.dup end
def underscore_name(name)
def underscore_name(name) name.to_s.sub(/.*::/, ""). gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2'). gsub(/([a-z\d])([A-Z])/,'\1_\2'). tr("-", "_"). downcase end