Module: Documented

Defined in:
lib/accessor.rb,
lib/config.rb,
lib/renderer.rb,
lib/documented.rb

Overview

Access variables via one object to avoid polluting the caller’s scope.

Defined Under Namespace

Classes: Accessor, Config, Renderer

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.configure {|@@documented.config| ... } ⇒ Object

Yields:



48
49
50
51
52
# File 'lib/documented.rb', line 48

def self.configure
  documented_setup_class()

  yield(@@documented.config)
end

.documented_setup_classObject

Setup class.



68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/documented.rb', line 68

def self.documented_setup_class()
  @@documented = Accessor.new()
  @@documented.config = Config.new()

  # Setup paths.
  @@documented.package_path = File.dirname(File.realpath(__FILE__))
  @@documented.project_path = @@documented.config.project_path
  @@documented.output_path = File.join(@@documented.project_path, @@documented.config.output_directory)
  unless Dir.exist? @@documented.output_path
    Dir.mkdir(@@documented.output_path)
  end

  @@documented.renderer = Renderer.new(@@documented.package_path, @@documented.output_path)
end

.included(base) ⇒ Object



54
55
56
# File 'lib/documented.rb', line 54

def self.included(base)
  documented_setup_class()
end

Instance Method Details

#documentedObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/documented.rb', line 9

def documented
  events = []
  calls = ['Start']

  trace = TracePoint.new(:call, :return) do |tp|
    # file = File.open("#{__dir__}/../../doc/diagrams/input.mmd")
    # file.write("sequenceDiagram\n")

    # file.close
    caller = calls.last.to_s
    callee = tp.defined_class.to_s
    event = tp.event

    unless blocklist.any? { |e| callee.to_s.start_with? e }
      unless calls.last == callee
        if event == :return
          calls.pop
        elsif calls.last != callee
          calls << callee
        end
      end

      unless callee == caller
        caller = caller.gsub('::','.')
        callee = callee.gsub('::','.')
        p "#{caller}->>#{callee}: #{tp.method_id}"
      end
    end
  end

  trace.enable

  yield

  trace.disable

  ap events
end