An enum object is used to describe possible attribute values within a MetamodelBuilder attribute definition. An attribute defined this way can only take the values specified when creating the Enum object. Literal values can only be symbols or true or false. Optionally a name may be specified for the enum object.
Examples:
Enum.new(:name => "AnimalEnum", :literals => [:cat, :dog]) Enum.new(:literals => [:cat, :dog]) Enum.new([:cat, :dog])
Creates a new named enum type object consisting of the elements passed as arguments.
# File lib/rgen/metamodel_builder/data_types.rb, line 23 def initialize(params) MetamodelBuilder::ConstantOrderHelper.enumCreated(self) if params.is_a?(Array) @literals = params @name = "anonymous" elsif params.is_a?(Hash) raise StandardError.new("Hash entry :literals is missing") unless params[:literals] @literals = params[:literals] @name = params[:name] || "anonymous" else raise StandardError.new("Pass an Array or a Hash") end end
# File lib/rgen/metamodel_builder/data_types.rb, line 43 def literals_as_strings literals.collect do |l| if l.is_a?(Symbol) if l.to_s =~ /^\d|\W/ ":'"+l.to_s+"'" else ":"+l.to_s end elsif l.is_a?(TrueClass) || l.is_a?(FalseClass) l.to_s else raise StandardError.new("Literal values can only be symbols or true/false") end end end
Generated with the Darkfish Rdoc Generator 2.