class Nucleon::Codes

Public Class Methods

code(name) click to toggle source
# File lib/core/codes.rb, line 54
def self.code(name)
  name = name.to_sym
  
  unless registry.has_key?(name)
    status_code = @@next_code    
    @@next_code = @@next_code + 1
  
    # TODO: Add more information to the index (like a help message)
    @@registry[name]            = status_code
    @@status_index[status_code] = name.to_s
  end
end
codes(*codes) click to toggle source
# File lib/core/codes.rb, line 69
def self.codes(*codes)
  codes.each do |name|
    code(name)
  end
end
index(status_code = nil) click to toggle source
# File lib/core/codes.rb, line 20
def self.index(status_code = nil)
  if status_code.nil? || ! status_code.integer?
    @@status_index
  else
    status_code = status_code.to_i
        
    if @@status_index.has_key?(status_code)
      @@status_index[status_code]
    else
      @@status_index[registry[:unknown_status]]
    end  
  end    
end
registry() click to toggle source
# File lib/core/codes.rb, line 14
def self.registry
  @@registry
end
render_index(status_code = nil) click to toggle source
# File lib/core/codes.rb, line 36
def self.render_index(status_code = nil)
  output = "Status index:\n"
  @@status_index.each do |code, name|
    name = name.gsub(/_/, ' ').capitalize
    
    if ! status_code.nil? && status_code == code
      output << sprintf(" [ %3i ] - %s\n", code, name)
    else
      output << sprintf("   %3i   - %s\n", code, name)
    end      
  end
  output << "\n"
  output
end

Public Instance Methods

[](name) click to toggle source
# File lib/core/codes.rb, line 78
def [](name)
  name = name.to_sym
  
  if @@registry.has_key?(name)
    @@registry[name]  
  else
    @@registry[:unknown_status]
  end
end
method_missing(method, *args, &block) click to toggle source
# File lib/core/codes.rb, line 90
def method_missing(method, *args, &block)
  self[method]
end