class LCClasses::LCClass

Public Class Methods

flatten(hash) click to toggle source

Convert nested LCClasses::CLASS_HASH to flat array.

# File lib/lcclasses.rb, line 19
def self.flatten(hash)
  return self[] if hash.nil?

  hash.sort { |a, b| a[0] <=> b[0] }.inject(self[]) do |result, klass|
    result << self[klass[0], klass[1][:name]]
    result + self.flatten(klass[1][:subclasses])
  end
end
nest(hash) click to toggle source

Convert nested LCClasses::CLASS_HASH to nested array.

# File lib/lcclasses.rb, line 6
def self.nest(hash)
  return self[] if hash.nil?

  hash.sort { |a, b| a[0] <=> b[0] }.inject(self[]) do |result, klass|
    result << if klass[1][:subclasses]
                self[klass[0], klass[1][:name], self.nest(klass[1][:subclasses])]
              else
                self[klass[0], klass[1][:name]]
              end
  end
end

Public Instance Methods

code() click to toggle source

The class code.

# File lib/lcclasses.rb, line 37
def code
  self[0]
end
name() click to toggle source

THe class name.

# File lib/lcclasses.rb, line 42
def name
  self[1]
end
subclasses() click to toggle source

Return the subclasses of this class, if any.

# File lib/lcclasses.rb, line 29
def subclasses
  class_data = LCClasses::CLASS_HASH[self[0]]
  return if class_data.nil? || class_data.empty?

  LCClasses::LCClass.nest(class_data[:subclasses])
end