class YUML::Class

Represents a yUML Class

Attributes

name[W]

Public Class Methods

new() click to toggle source
# File lib/yuml/class.rb, line 6
def initialize
  @methods = []
  @variables = []
  @relationships = []
end

Public Instance Methods

associated_with(dest, type: :directed_assoication, cardinality: nil, association_name: cardinality) click to toggle source
# File lib/yuml/class.rb, line 49
def associated_with(dest, type: :directed_assoication, cardinality: nil, association_name: cardinality)
  cardinality ||= association_name
  type = :directed_assoication unless %i(
    association directed_assoication two_way_association dependency
  ).include?(type)
  relationship = YUML::Relationship.send(type, cardinality)
  @relationships << "[#{name}]#{relationship}[#{dest.name}]"
end
attach_note(content, color = nil) click to toggle source
# File lib/yuml/class.rb, line 58
def attach_note(content, color = nil)
  @relationships << "[#{name}]-#{YUML::Note.create(content, color)}"
end
has_a(dest, type: :aggregation, cardinality: nil, association_name: cardinality) click to toggle source
# File lib/yuml/class.rb, line 36
def has_a(dest, type: :aggregation, cardinality: nil, association_name: cardinality)
  cardinality ||= association_name
  type = :aggregation unless %i(composition aggregation).include?(type)
  relationship = YUML::Relationship.send(type, cardinality)
  @relationships << "[#{name}]#{relationship}[#{dest.name}]"
end
is_a(dest, type: :inheritance) click to toggle source
# File lib/yuml/class.rb, line 43
def is_a(dest, type: :inheritance)
  type = :inheritance unless %i(inheritance interface).include?(type)
  relationship = YUML::Relationship.send(type)
  @relationships << "[#{dest.name}]#{relationship}[#{name}]"
end
methods(*args) click to toggle source
# File lib/yuml/class.rb, line 30
def methods(*args)
  args.flatten!
  return attributes(@methods) if args.empty?
  @methods << normalize(args)
end
name(name = nil, prototype = nil) click to toggle source
# File lib/yuml/class.rb, line 12
def name(name = nil, prototype = nil)
  @name = name if name
  @prototype = prototype if prototype
  "#{normalized_prototype}#{@name}"
end
relationships() click to toggle source
# File lib/yuml/class.rb, line 66
def relationships
  "#{@relationships.join(',')}" unless @relationships.empty?
end
to_s() click to toggle source
# File lib/yuml/class.rb, line 62
def to_s
  "[#{name}#{variables}#{methods}]"
end
variables(*args) click to toggle source
# File lib/yuml/class.rb, line 24
def variables(*args)
  args.flatten!
  return attributes(@variables) if args.empty?
  @variables << normalize(args)
end

Private Instance Methods

attributes(attrs) click to toggle source
# File lib/yuml/class.rb, line 83
def attributes(attrs)
  "|#{attrs.join(';')}" unless attrs.empty?
end
normalize(values) click to toggle source
# File lib/yuml/class.rb, line 72
def normalize(values)
  values.map(&:to_s).map do |v|
    YUML::ESCAPE_CHARACTERS.each { |char, escape| v.tr!(char, escape) }
    v
  end
end
normalized_prototype() click to toggle source
# File lib/yuml/class.rb, line 79
def normalized_prototype
  return normalize(["<<#{@prototype}>>"]).first << ';' if @prototype
end