lib/cim/class.rb in cim-0.3.0 vs lib/cim/class.rb in cim-0.5.0

- old
+ new

@@ -1,42 +1,85 @@ +# +# cim/class.rb - class CIM::Class +# +# A pure-Ruby implementation of the CIM meta model. +# +# Copyright (c) 2010 Klaus Kämpf <kkaempf@suse.de> +# +# Licensed under the Ruby license +# module CIM require File.join(File.dirname(__FILE__),"qualifier") + # + # A Class is a central element in the object-oriented CIM schema + # + # Classes can be derived from other classes, creating a hierachical model. + # + # Classes have qualifiers to describe the class characteristics + # and contain features (properties or methods). + # class Class < CIM::NamedElement - attr_reader :alias_name, :qualifiers, :superclass, :features - attr_accessor :parent - def initialize name, qualifiers, alias_name, superclass, features - @qualifiers = qualifiers + attr_reader :alias_name, :superclass, :features + # + # Creates a new Class with name (String), qualifiers, alias, superclass and features + # + # Features are class attributes, namely Property, Method, or Reference + # + # call-seq: + # Class.new("MyClass") + # Class.new("MyClass", qualifiers) + # Class.new("MyClass", qualifiers, "my_class") + # Class.new("MyClass", qualifiers, "my_class", "SuperClass") + # Class.new("MyClass", qualifiers, "my_class", "SuperClass", features) + # + def initialize name, qualifiers = nil, alias_name = nil, superclass = nil, features = nil @alias_name = alias_name @superclass = superclass - features = nil if features.is_a?(Array) && features.empty? + features = nil if features.kind_of?(::Enumerable) && features.empty? @features = features # puts "CIM::Class.new(#{@features})" - super name + super name, qualifiers end - def add_type t - @ptype << t + # + # Iterate over features flagged as keys + # + def each_key + @features.each do |f| + yield f if f.key? + end end + # # true if class has instances (instance provider) + # def instance? @features.size > 0 end + # # true if class has methods (method provider) + # def method? @features.each do |f| case f when CIM::Method: return true end end false end + # # true if class has associations (association provider) + # def association? false end + # # true if class has indications (indication provider) + # def indication? false end + # + # returns a string representation in MOF syntax format + # def to_s s = "" s << "[#{@qualifiers.join(', ')}]\n" if @qualifiers s << "class #{@name}" s << " AS #{@alias_name}" if @alias_name