documented 0.0.0
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 +7 -0
- data/lib/accessor.rb +31 -0
- data/lib/config.rb +46 -0
- data/lib/documented.rb +82 -0
- data/lib/output/README.md +3 -0
- data/lib/output/gitignore.txt +2 -0
- data/lib/renderer.rb +27 -0
- metadata +62 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 5026a405923100cfe8ea3f484fe324b3588a3481369fd954b7d5645537227672
|
4
|
+
data.tar.gz: b9d86b71d1a7dfc1018edc79922a54fd2013245d95c17eb9d902d5dd8160f100
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 55480519881df342fcbff4d0b7ea3b7aef9a6ca96805c3eb18283faf3f43b3e83d8e3df00219310e75293123fd801993848630a7c446626407812b745ae6c896
|
7
|
+
data.tar.gz: 994c10ccf460e023790c8caaa4198f5bf63f06b41b6ebebefc604b1752af27f1d4610d3f62297f08f0e124f62d7a1786af8ad16e2e9e8e5e31d1bb86db269df4
|
data/lib/accessor.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
################################################################################
|
2
|
+
# Access variables via one object to avoid polluting the caller's scope.
|
3
|
+
#
|
4
|
+
# @pattern Singleton
|
5
|
+
################################################################################
|
6
|
+
|
7
|
+
module Documented
|
8
|
+
class Accessor
|
9
|
+
attr_accessor :initialized
|
10
|
+
attr_accessor :error
|
11
|
+
|
12
|
+
attr_accessor :config
|
13
|
+
attr_accessor :renderer
|
14
|
+
|
15
|
+
attr_accessor :package_path
|
16
|
+
attr_accessor :project_path
|
17
|
+
attr_accessor :output_path
|
18
|
+
|
19
|
+
def initialize()
|
20
|
+
@initialized = false
|
21
|
+
@error = nil
|
22
|
+
|
23
|
+
@config = nil
|
24
|
+
@renderer = nil
|
25
|
+
|
26
|
+
@package_path = nil
|
27
|
+
@project_path = nil
|
28
|
+
@output_path = nil
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/config.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
module Documented
|
2
|
+
class Config
|
3
|
+
attr_accessor :blocklist
|
4
|
+
attr_accessor :duplicates
|
5
|
+
attr_accessor :project_path
|
6
|
+
attr_accessor :output_directory
|
7
|
+
|
8
|
+
def initialize()
|
9
|
+
@blocklist = [
|
10
|
+
'#<Class:Bundler',
|
11
|
+
'#<Class:#<Class',
|
12
|
+
'#<Class:0x0000',
|
13
|
+
'#<Class:Cucumber',
|
14
|
+
'#<Class:JSON>',
|
15
|
+
'#<Class:Net::',
|
16
|
+
'#<Class:Time',
|
17
|
+
'#<Class:URI::Generic>',
|
18
|
+
'#<Class:URI>',
|
19
|
+
'#<Module',
|
20
|
+
'#<refinement',
|
21
|
+
'BasicSocket',
|
22
|
+
'Bundler',
|
23
|
+
'Cucumber',
|
24
|
+
'Datadog',
|
25
|
+
'Float',
|
26
|
+
'Helpers',
|
27
|
+
'Integer',
|
28
|
+
'Kernel',
|
29
|
+
'Net::',
|
30
|
+
'NilClass',
|
31
|
+
'Set',
|
32
|
+
'Thread',
|
33
|
+
'Timeout::Request',
|
34
|
+
'TracePoint',
|
35
|
+
'URI::',
|
36
|
+
'URI::Generic',
|
37
|
+
]
|
38
|
+
|
39
|
+
# An absolute path to the project root directory. Defaults to current execution path.
|
40
|
+
@project_path = Dir.pwd
|
41
|
+
|
42
|
+
# Name of output directory.
|
43
|
+
@output_directory = "documented"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/lib/documented.rb
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
require 'set'
|
2
|
+
require 'erb'
|
3
|
+
|
4
|
+
require_relative 'accessor'
|
5
|
+
require_relative 'config'
|
6
|
+
require_relative 'renderer'
|
7
|
+
|
8
|
+
module Documented
|
9
|
+
def documented
|
10
|
+
events = []
|
11
|
+
calls = ['Start']
|
12
|
+
|
13
|
+
trace = TracePoint.new(:call, :return) do |tp|
|
14
|
+
# file = File.open("#{__dir__}/../../doc/diagrams/input.mmd")
|
15
|
+
# file.write("sequenceDiagram\n")
|
16
|
+
|
17
|
+
# file.close
|
18
|
+
caller = calls.last.to_s
|
19
|
+
callee = tp.defined_class.to_s
|
20
|
+
event = tp.event
|
21
|
+
|
22
|
+
unless blocklist.any? { |e| callee.to_s.start_with? e }
|
23
|
+
unless calls.last == callee
|
24
|
+
if event == :return
|
25
|
+
calls.pop
|
26
|
+
elsif calls.last != callee
|
27
|
+
calls << callee
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
unless callee == caller
|
32
|
+
caller = caller.gsub('::','.')
|
33
|
+
callee = callee.gsub('::','.')
|
34
|
+
p "#{caller}->>#{callee}: #{tp.method_id}"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
trace.enable
|
40
|
+
|
41
|
+
yield
|
42
|
+
|
43
|
+
trace.disable
|
44
|
+
|
45
|
+
ap events
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.configure
|
49
|
+
documented_setup_class()
|
50
|
+
|
51
|
+
yield(@@documented.config)
|
52
|
+
end
|
53
|
+
|
54
|
+
def self.included(base)
|
55
|
+
documented_setup_class()
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
|
60
|
+
##
|
61
|
+
# Setup class.
|
62
|
+
#
|
63
|
+
# @paths
|
64
|
+
# - package_path [String] Absolute path to the library itself.
|
65
|
+
# - project_path [String] Absolute path to the project root.
|
66
|
+
# - output_path [String] Absolute path to the documented directory.
|
67
|
+
##
|
68
|
+
def self.documented_setup_class()
|
69
|
+
@@documented = Accessor.new()
|
70
|
+
@@documented.config = Config.new()
|
71
|
+
|
72
|
+
# Setup paths.
|
73
|
+
@@documented.package_path = File.dirname(File.realpath(__FILE__))
|
74
|
+
@@documented.project_path = @@documented.config.project_path
|
75
|
+
@@documented.output_path = File.join(@@documented.project_path, @@documented.config.output_directory)
|
76
|
+
unless Dir.exist? @@documented.output_path
|
77
|
+
Dir.mkdir(@@documented.output_path)
|
78
|
+
end
|
79
|
+
|
80
|
+
@@documented.renderer = Renderer.new(@@documented.package_path, @@documented.output_path)
|
81
|
+
end
|
82
|
+
end
|
data/lib/renderer.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
module Documented
|
2
|
+
class Renderer
|
3
|
+
def initialize(package_path, output_path)
|
4
|
+
@package_path = package_path
|
5
|
+
@output_path = output_path
|
6
|
+
end
|
7
|
+
|
8
|
+
# Place files in output path.
|
9
|
+
def render()
|
10
|
+
filenames = [
|
11
|
+
"README.md",
|
12
|
+
]
|
13
|
+
|
14
|
+
filenames.each do |filename|
|
15
|
+
file = File.read(File.join(@package_path, "output", filename))
|
16
|
+
File.open(File.join(@output_path, filename), 'w+') do |f|
|
17
|
+
f.write file
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
file = File.read(File.join(@package_path, "output", "gitignore.txt"))
|
22
|
+
File.open(File.join(@output_path, ".gitignore"), 'w+') do |f|
|
23
|
+
f.write file
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
metadata
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: documented
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Maedi Prichard
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-10-24 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: parser
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
description: Documentation that's completely automated.
|
28
|
+
email: maediprichard@gmail.com
|
29
|
+
executables: []
|
30
|
+
extensions: []
|
31
|
+
extra_rdoc_files: []
|
32
|
+
files:
|
33
|
+
- lib/accessor.rb
|
34
|
+
- lib/config.rb
|
35
|
+
- lib/documented.rb
|
36
|
+
- lib/output/README.md
|
37
|
+
- lib/output/gitignore.txt
|
38
|
+
- lib/renderer.rb
|
39
|
+
homepage: https://github.com/greensync/documented
|
40
|
+
licenses:
|
41
|
+
- MPL-2.0
|
42
|
+
metadata: {}
|
43
|
+
post_install_message:
|
44
|
+
rdoc_options: []
|
45
|
+
require_paths:
|
46
|
+
- lib
|
47
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
48
|
+
requirements:
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: '0'
|
52
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
57
|
+
requirements: []
|
58
|
+
rubygems_version: 3.4.10
|
59
|
+
signing_key:
|
60
|
+
specification_version: 4
|
61
|
+
summary: Automated documentation.
|
62
|
+
test_files: []
|