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