Sha256: e34c60a8b2755bd566715b0b569e7224955c2c3fc113c4f3755b63dddf24754e
Contents?: true
Size: 845 Bytes
Versions: 1
Compression:
Stored size: 845 Bytes
Contents
module Vedeu class UndefinedInterface < StandardError; end class Interfaces class << self def default new { |io| io.add(:dummy, Dummy) } end def define(&block) new(&block) end end def initialize(&block) @interfaces ||= {} yield self if block_given? end def add(name, klass, options = {}) if valid?(klass) interfaces[name] = Proc.new { klass.new(options) } interfaces end end def show interfaces end def initial interfaces.values.map { |io| io.call.initial } end def main interfaces.values.map { |io| io.call.main } end private attr_accessor :interfaces def valid?(klass) raise UndefinedInterface unless Object.const_defined?(klass.to_s) true end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
vedeu-0.0.4 | lib/vedeu/interface/interfaces.rb |