marmerdo 0.2.3 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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