Sha256: 22d9a97f126af42884fc193bd709fafecd8ee39cadaefd518502928e99a782fb

Contents?: true

Size: 1.47 KB

Versions: 48

Compression:

Stored size: 1.47 KB

Contents

# frozen_string_literal: true

require "lutaml/uml/node/base"
require "lutaml/uml/node/field"
require "lutaml/uml/node/method"
require "lutaml/uml/node/relationship"
require "lutaml/uml/node/class_relationship"
require "lutaml/uml/node/has_name"

module Lutaml
  module Uml
    module Node
      class ClassNode < Base
        include HasName

        attr_reader :modifier

        def modifier=(value)
          @modifier = value.to_s # TODO: Validate?
        end

        attr_reader :members

        def members=(value)
          @members = value.to_a.map do |member|
            type       = member.to_a[0][0] # TODO: This is dumb
            attributes = member.to_a[0][1]
            attributes[:parent] = self

            case type
            when :field              then Field.new(attributes)
            when :method             then Method.new(attributes)
            when :relationship       then Relationship.new(attributes)
            when :class_relationship then ClassRelationship.new(attributes)
            end
          end
        end

        def fields
          @members.select { |member| member.class == Field }
        end

        def methods
          @members.select { |member| member.class == Method }
        end

        def relationships
          @members.select { |member| member.class == Relationship }
        end

        def class_relationships
          @members.select { |member| member.class == ClassRelationship }
        end
      end
    end
  end
end

Version data entries

48 entries across 48 versions & 2 rubygems

Version Path
lutaml-0.9.27 lib/lutaml/uml/node/class_node.rb
lutaml-0.9.26 lib/lutaml/uml/node/class_node.rb
lutaml-0.9.25 lib/lutaml/uml/node/class_node.rb
lutaml-0.9.24 lib/lutaml/uml/node/class_node.rb
lutaml-0.9.23 lib/lutaml/uml/node/class_node.rb
lutaml-0.9.22 lib/lutaml/uml/node/class_node.rb
lutaml-0.9.21 lib/lutaml/uml/node/class_node.rb
lutaml-0.9.20 lib/lutaml/uml/node/class_node.rb
lutaml-0.9.19 lib/lutaml/uml/node/class_node.rb
lutaml-0.9.18 lib/lutaml/uml/node/class_node.rb
lutaml-0.9.17 lib/lutaml/uml/node/class_node.rb
lutaml-0.9.16 lib/lutaml/uml/node/class_node.rb
lutaml-0.9.15 lib/lutaml/uml/node/class_node.rb
lutaml-0.9.14 lib/lutaml/uml/node/class_node.rb
lutaml-0.9.13 lib/lutaml/uml/node/class_node.rb
lutaml-0.9.12 lib/lutaml/uml/node/class_node.rb
lutaml-0.9.11 lib/lutaml/uml/node/class_node.rb
lutaml-0.9.10 lib/lutaml/uml/node/class_node.rb
lutaml-0.9.9 lib/lutaml/uml/node/class_node.rb
lutaml-0.9.8 lib/lutaml/uml/node/class_node.rb