marmerdo 0.2.3 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2d7649f8c1f60bb395a64d723958f4a9aea06777c990d7ddf88e4b54e40179a6
4
- data.tar.gz: 804cf7ade037d0f593b9182392c3255755d31c20872de6ab48792715023633ac
3
+ metadata.gz: 8e2b0cdbcedf12f9dfb5911895a513b11eb2ec50ae992662726a42e6850a9b25
4
+ data.tar.gz: 14eab34bb7327b4577e305875dd8ceb38c4b481d9f430f4c2e46d380b21742c0
5
5
  SHA512:
6
- metadata.gz: 185cdb858ff71ee8f7432038edb3ae849ae6e26fdef88e8edd03a57408cfcfb6b59b959b2954a213eaf23e37f81e9d73391da1d0923d5eca5e2e9772241f0ad9
7
- data.tar.gz: 5cc3d17fb9d9db7ff9f045bdbc63b10c210b3140c13dbd2eceadb4a812af0595134c6058456f1c6b430dfa40cfd94eb9c314cc9a87b08d407abed9e96448bda6
6
+ metadata.gz: a03c366404c619416df15a42309b1f35b50aacbc88c2341de3b2a1d19f07a9e1cfb5213504701e383839c408722a922b2ea45faf459ebc4443863d554a972fc7
7
+ data.tar.gz: f7656b060e14e70a3c084f34a95a3a379175d531693842b0975e3f7f6bc9ea2b804f99459f4e587c5181351c8517e8353e40d2cdaca60921f1fcb179f0d4efbf
data/CHANGELOG.md CHANGED
@@ -1,6 +1,16 @@
1
+ ## [0.3.1] - 2024-01-07
2
+
3
+ - 0.3.0がRubyGemsで反映されないため進めたバージョン。
4
+ - 変更はなし。
5
+
6
+ ## [0.3.0] - 2024-01-07
7
+
8
+ - Add namespace support.
9
+ - inheritanceなどのキーワードのかわりに、直接Mermaid記法でRelationを記載するよう変更。
10
+
1
11
  ## [0.2.3] - 2023-12-25
2
12
 
3
- Add link_extension option.
13
+ - Add link_extension option.
4
14
 
5
15
  ## [0.2.2] - 2023-12-20
6
16
 
@@ -8,7 +8,7 @@ module Marmerdo
8
8
 
9
9
  # @return [String] mermaid class diagram
10
10
  def generate
11
- classes = @nodes.map(&:to_mermaid_line)
11
+ classes = @nodes.map(&:to_mermaid_str)
12
12
  links = @nodes.map do |node|
13
13
  node.generate_mermaid_link(@output_path, enable_link_extension: @enable_link_extension)
14
14
  end
@@ -16,6 +16,7 @@ module Marmerdo
16
16
  Node.new(
17
17
  path: @path,
18
18
  name: marmerdo_matter["name"] || File.basename(@path, ".*"),
19
+ namespace: marmerdo_matter["namespace"],
19
20
  relationships: relationships
20
21
  )
21
22
  end
@@ -35,9 +36,9 @@ module Marmerdo
35
36
  end
36
37
 
37
38
  def relationships
38
- @relationships ||= marmerdo_matter.filter { |k| Relationship::TYPES.include?(k.to_sym) }.map do |type, to|
39
- Relationship.new(type: type, to: to)
40
- end
39
+ @relationships ||= marmerdo_matter["relationships"]&.map do |relationship|
40
+ Relationship.new(relationship)
41
+ end || []
41
42
  end
42
43
  end
43
44
  end
data/lib/marmerdo/node.rb CHANGED
@@ -6,16 +6,27 @@ module Marmerdo
6
6
  attr_reader :path
7
7
  # @return [Symbol]
8
8
  attr_reader :name
9
+ # @return [Symbol, nil]
10
+ attr_reader :namespace
9
11
  attr_accessor :relationships
10
12
 
11
- def initialize(path:, name:, relationships:)
13
+ def initialize(path:, name:, namespace:, relationships:)
12
14
  @path = path
13
15
  @name = name.to_sym
16
+ @namespace = namespace&.to_sym
14
17
  @relationships = relationships
15
18
  end
16
19
 
17
- def to_mermaid_line
18
- "class #{name}"
20
+ def to_mermaid_str
21
+ str = "class #{name}"
22
+
23
+ return str if namespace.nil?
24
+
25
+ [
26
+ "namespace #{namespace} {",
27
+ str,
28
+ "}"
29
+ ].join("\n")
19
30
  end
20
31
 
21
32
  def generate_mermaid_link(output_path, enable_link_extension:)
@@ -2,62 +2,15 @@ require_relative "error"
2
2
 
3
3
  module Marmerdo
4
4
  class Relationship
5
- class UnknownRelationshipType < Error; end
5
+ # @return [String]
6
+ attr_accessor :str
6
7
 
7
- TYPES = %i[
8
- inheritance
9
- composition
10
- aggregation
11
- association
12
- link_solid
13
- dependency
14
- realization
15
- link_dashed
16
- ].freeze
17
-
18
- # https://mermaid.js.org/syntax/classDiagram.html#defining-relationship
19
- # @return [Symbol]
20
- attr_reader :type
21
-
22
- # @return [Array<Symbol>]
23
- attr_reader :to
24
-
25
- def self.valid_type?(type)
26
- TYPES.include?(type.to_sym)
27
- end
28
-
29
- def initialize(type:, to:)
30
- @type = type.to_sym
31
- @to = if to.is_a?(Array)
32
- to.map(&:to_sym)
33
- else
34
- [to.to_sym]
35
- end
8
+ def initialize(str)
9
+ @str = str
36
10
  end
37
11
 
38
12
  def to_mermaid_str(from)
39
- to.map do |t|
40
- case type
41
- when :inheritance
42
- "#{t} <|-- #{from}"
43
- when :composition
44
- "#{t} *-- #{from}"
45
- when :aggregation
46
- "#{t} o-- #{from}"
47
- when :association
48
- "#{from} --> #{t}"
49
- when :link_solid
50
- "#{from} -- #{t}"
51
- when :dependency
52
- "#{from} ..> #{t}"
53
- when :realization
54
- "#{from} ..|> #{t}"
55
- when :link_dashed
56
- "#{from} .. #{t}"
57
- else
58
- raise UnknownRelationshipType
59
- end
60
- end.join("\n")
13
+ "#{from} #{str}"
61
14
  end
62
15
  end
63
16
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Marmerdo
4
- VERSION = "0.2.3"
4
+ VERSION = "0.3.1"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: marmerdo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - sijiaoh
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-12-24 00:00:00.000000000 Z
11
+ date: 2024-01-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: front_matter_parser