tocer 13.0.0 → 13.2.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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/README.adoc +6 -31
- data/exe/tocer +0 -1
- data/lib/tocer/cli/actions/config.rb +10 -6
- data/lib/tocer/cli/actions/insert.rb +8 -3
- data/lib/tocer/cli/parser.rb +3 -3
- data/lib/tocer/cli/parsers/core.rb +8 -4
- data/lib/tocer/cli/shell.rb +8 -3
- data/lib/tocer/configuration/loader.rb +1 -1
- data/lib/tocer/container.rb +39 -0
- data/lib/tocer/transformers/finder.rb +1 -1
- data/lib/tocer/writer.rb +2 -2
- data/lib/tocer.rb +1 -1
- data/tocer.gemspec +36 -0
- data.tar.gz.sig +0 -0
- metadata +53 -9
- metadata.gz.sig +0 -0
- data/lib/tocer/identity.rb +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 106fe66e91b4c302490857f948a672413a10e7729d56af5800964a3409fcfb17
|
4
|
+
data.tar.gz: b1569fe8b8ef51f0f2174d2506c8f1cba3b2180bdc47c8c60c28c0a6712e2e78
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7574ea429e82b68a289e7c9c288b417d87a7d93f0a9b123766e2579c90eca585e63b97c1c41947f03696e430ec183112ff04d38095b7b4b98f34e269692b7a5d
|
7
|
+
data.tar.gz: 10378c3612273946c194e6a414c614ad4bb47dde72aa1c407cadc9122f9549eb939e223f059acdce5cf904be7be2fb11424627792c0db18871c11551829d0481
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/README.adoc
CHANGED
@@ -4,13 +4,6 @@
|
|
4
4
|
|
5
5
|
= Tocer
|
6
6
|
|
7
|
-
[link=http://badge.fury.io/rb/tocer]
|
8
|
-
image::https://badge.fury.io/rb/tocer.svg[Gem Version]
|
9
|
-
[link=https://www.alchemists.io/projects/code_quality]
|
10
|
-
image::https://img.shields.io/badge/code_style-alchemists-brightgreen.svg[Alchemists Style Guide]
|
11
|
-
[link=https://circleci.com/gh/bkuhlmann/tocer]
|
12
|
-
image::https://circleci.com/gh/bkuhlmann/tocer.svg?style=svg[Circle CI Status]
|
13
|
-
|
14
7
|
Tocer (a.k.a. Table of Contenter) is a command line interface for generating table of contents for
|
15
8
|
Markdown files. Use this tool to automatically manage and update your documentation with minimal
|
16
9
|
effort. Works on single files or multiple files within nested directory structures.
|
@@ -176,35 +169,17 @@ To test, run:
|
|
176
169
|
bundle exec rake
|
177
170
|
----
|
178
171
|
|
179
|
-
==
|
180
|
-
|
181
|
-
Read link:https://semver.org[Semantic Versioning] for details. Briefly, it means:
|
182
|
-
|
183
|
-
* Major (X.y.z) - Incremented for any backwards incompatible public API changes.
|
184
|
-
* Minor (x.Y.z) - Incremented for new, backwards compatible, public API enhancements/fixes.
|
185
|
-
* Patch (x.y.Z) - Incremented for small, backwards compatible, bug fixes.
|
186
|
-
|
187
|
-
== Code of Conduct
|
188
|
-
|
189
|
-
Please note that this project is released with a link:CODE_OF_CONDUCT.adoc[CODE OF CONDUCT]. By
|
190
|
-
participating in this project you agree to abide by its terms.
|
191
|
-
|
192
|
-
== Contributions
|
193
|
-
|
194
|
-
Read link:CONTRIBUTING.adoc[CONTRIBUTING] for details.
|
195
|
-
|
196
|
-
== Community
|
172
|
+
== link:https://www.alchemists.io/policies/license[License]
|
197
173
|
|
198
|
-
|
199
|
-
to this project and much more.
|
174
|
+
== link:https://www.alchemists.io/policies/security[Security]
|
200
175
|
|
201
|
-
==
|
176
|
+
== link:https://www.alchemists.io/policies/code_of_conduct[Code of Conduct]
|
202
177
|
|
203
|
-
|
178
|
+
== link:https://www.alchemists.io/policies/contributions[Contributions]
|
204
179
|
|
205
|
-
==
|
180
|
+
== link:https://www.alchemists.io/projects/tocer/versions[Versions]
|
206
181
|
|
207
|
-
|
182
|
+
== link:https://www.alchemists.io/community[Community]
|
208
183
|
|
209
184
|
== Credits
|
210
185
|
|
data/exe/tocer
CHANGED
@@ -5,26 +5,30 @@ module Tocer
|
|
5
5
|
module Actions
|
6
6
|
# Handles the config action.
|
7
7
|
class Config
|
8
|
-
def initialize client: Configuration::Loader::CLIENT,
|
8
|
+
def initialize client: Configuration::Loader::CLIENT, container: Container
|
9
9
|
@client = client
|
10
|
-
@
|
10
|
+
@container = container
|
11
11
|
end
|
12
12
|
|
13
|
-
def call
|
14
|
-
case
|
13
|
+
def call selection
|
14
|
+
case selection
|
15
15
|
when :edit then edit
|
16
16
|
when :view then view
|
17
|
-
else
|
17
|
+
else logger.error { "Invalid configuration selection: #{selection}." }
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
21
|
private
|
22
22
|
|
23
|
-
attr_reader :client, :
|
23
|
+
attr_reader :client, :container
|
24
24
|
|
25
25
|
def edit = kernel.system("$EDITOR #{client.current}")
|
26
26
|
|
27
27
|
def view = kernel.system("cat #{client.current}")
|
28
|
+
|
29
|
+
def kernel = container[__method__]
|
30
|
+
|
31
|
+
def logger = container[__method__]
|
28
32
|
end
|
29
33
|
end
|
30
34
|
end
|
@@ -5,15 +5,20 @@ module Tocer
|
|
5
5
|
module Actions
|
6
6
|
# Handles the insert action.
|
7
7
|
class Insert
|
8
|
-
def initialize runner: Runner.new
|
8
|
+
def initialize runner: Runner.new, container: Container
|
9
9
|
@runner = runner
|
10
|
+
@container = container
|
10
11
|
end
|
11
12
|
|
12
|
-
def call
|
13
|
+
def call configuration
|
14
|
+
runner.call(configuration) { |path| logger.info { " #{path}" } }
|
15
|
+
end
|
13
16
|
|
14
17
|
private
|
15
18
|
|
16
|
-
attr_reader :runner
|
19
|
+
attr_reader :runner, :container
|
20
|
+
|
21
|
+
def logger = container[__method__]
|
17
22
|
end
|
18
23
|
end
|
19
24
|
end
|
data/lib/tocer/cli/parser.rb
CHANGED
@@ -9,10 +9,10 @@ module Tocer
|
|
9
9
|
CLIENT = OptionParser.new nil, 40, " "
|
10
10
|
SECTIONS = [Parsers::Core, Parsers::Flag].freeze # Order is important.
|
11
11
|
|
12
|
-
def initialize
|
13
|
-
@configuration = configuration.dup
|
12
|
+
def initialize sections: SECTIONS, client: CLIENT, container: Container
|
14
13
|
@sections = sections
|
15
14
|
@client = client
|
15
|
+
@configuration = container[:configuration].dup
|
16
16
|
end
|
17
17
|
|
18
18
|
def call arguments = []
|
@@ -25,7 +25,7 @@ module Tocer
|
|
25
25
|
|
26
26
|
private
|
27
27
|
|
28
|
-
attr_reader :
|
28
|
+
attr_reader :sections, :client, :configuration
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
@@ -1,6 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "tocer/identity"
|
4
3
|
require "refinements/structs"
|
5
4
|
|
6
5
|
module Tocer
|
@@ -12,13 +11,16 @@ module Tocer
|
|
12
11
|
|
13
12
|
def self.call(...) = new(...).call
|
14
13
|
|
15
|
-
def initialize configuration = Configuration::Loader.call,
|
14
|
+
def initialize configuration = Configuration::Loader.call,
|
15
|
+
client: Parser::CLIENT,
|
16
|
+
container: Container
|
16
17
|
@configuration = configuration
|
17
18
|
@client = client
|
19
|
+
@container = container
|
18
20
|
end
|
19
21
|
|
20
22
|
def call arguments = []
|
21
|
-
client.banner =
|
23
|
+
client.banner = specification.labeled_summary
|
22
24
|
client.separator "\nUSAGE:\n"
|
23
25
|
collate
|
24
26
|
client.parse arguments
|
@@ -27,7 +29,7 @@ module Tocer
|
|
27
29
|
|
28
30
|
private
|
29
31
|
|
30
|
-
attr_reader :configuration, :client
|
32
|
+
attr_reader :configuration, :client, :container
|
31
33
|
|
32
34
|
def collate = private_methods.sort.grep(/add_/).each { |method| __send__ method }
|
33
35
|
|
@@ -65,6 +67,8 @@ module Tocer
|
|
65
67
|
configuration.merge! action_help: true
|
66
68
|
end
|
67
69
|
end
|
70
|
+
|
71
|
+
def specification = container[__method__]
|
68
72
|
end
|
69
73
|
end
|
70
74
|
end
|
data/lib/tocer/cli/shell.rb
CHANGED
@@ -6,9 +6,10 @@ module Tocer
|
|
6
6
|
class Shell
|
7
7
|
ACTIONS = {config: Actions::Config.new, insert: Actions::Insert.new}.freeze
|
8
8
|
|
9
|
-
def initialize parser: Parser.new, actions: ACTIONS
|
9
|
+
def initialize parser: Parser.new, actions: ACTIONS, container: Container
|
10
10
|
@parser = parser
|
11
11
|
@actions = actions
|
12
|
+
@container = container
|
12
13
|
end
|
13
14
|
|
14
15
|
def call arguments = []
|
@@ -19,13 +20,13 @@ module Tocer
|
|
19
20
|
|
20
21
|
private
|
21
22
|
|
22
|
-
attr_reader :parser, :actions
|
23
|
+
attr_reader :parser, :actions, :container
|
23
24
|
|
24
25
|
def perform configuration
|
25
26
|
case configuration
|
26
27
|
in action_config: Symbol => action then process_config action
|
27
28
|
in action_insert: true then process_insert configuration
|
28
|
-
in action_version: true then
|
29
|
+
in action_version: true then logger.info { specification.labeled_version }
|
29
30
|
else usage
|
30
31
|
end
|
31
32
|
end
|
@@ -35,6 +36,10 @@ module Tocer
|
|
35
36
|
def process_insert(configuration) = actions.fetch(:insert).call(configuration)
|
36
37
|
|
37
38
|
def usage = puts(parser.to_s)
|
39
|
+
|
40
|
+
def specification = container[__method__]
|
41
|
+
|
42
|
+
def logger = container[__method__]
|
38
43
|
end
|
39
44
|
end
|
40
45
|
end
|
@@ -12,7 +12,7 @@ module Tocer
|
|
12
12
|
using Refinements::Structs
|
13
13
|
|
14
14
|
DEFAULTS = YAML.load_file(Pathname(__dir__).join("defaults.yml")).freeze
|
15
|
-
CLIENT = Runcom::Config.new "
|
15
|
+
CLIENT = Runcom::Config.new "tocer/configuration.yml", defaults: DEFAULTS
|
16
16
|
|
17
17
|
def self.call = new.call
|
18
18
|
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "dry-container"
|
4
|
+
require "logger"
|
5
|
+
require "pastel"
|
6
|
+
require "spek"
|
7
|
+
|
8
|
+
module Tocer
|
9
|
+
# Provides a global gem container for injection into other objects.
|
10
|
+
module Container
|
11
|
+
extend Dry::Container::Mixin
|
12
|
+
|
13
|
+
register(:configuration) { Configuration::Loader.call }
|
14
|
+
register(:specification) { Spek::Loader.call "#{__dir__}/../../tocer.gemspec" }
|
15
|
+
register(:colorizer) { Pastel.new enabled: $stdout.tty? }
|
16
|
+
register(:kernel) { Kernel }
|
17
|
+
|
18
|
+
register :log_colors do
|
19
|
+
{
|
20
|
+
"DEBUG" => self[:colorizer].white.detach,
|
21
|
+
"INFO" => self[:colorizer].green.detach,
|
22
|
+
"WARN" => self[:colorizer].yellow.detach,
|
23
|
+
"ERROR" => self[:colorizer].red.detach,
|
24
|
+
"FATAL" => self[:colorizer].white.bold.on_red.detach,
|
25
|
+
"ANY" => self[:colorizer].white.bold.detach
|
26
|
+
}
|
27
|
+
end
|
28
|
+
|
29
|
+
register :logger do
|
30
|
+
Logger.new $stdout,
|
31
|
+
level: Logger.const_get(ENV.fetch("LOG_LEVEL", "INFO")),
|
32
|
+
formatter: (
|
33
|
+
lambda do |severity, _at, _name, message|
|
34
|
+
self[:log_colors][severity].call "#{message}\n"
|
35
|
+
end
|
36
|
+
)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/lib/tocer/writer.rb
CHANGED
@@ -48,10 +48,10 @@ module Tocer
|
|
48
48
|
end
|
49
49
|
|
50
50
|
def new_lines lines, label, finish_index
|
51
|
-
if builder.unbuildable?
|
51
|
+
if builder.unbuildable? lines
|
52
52
|
builder.comments
|
53
53
|
else
|
54
|
-
content
|
54
|
+
content lines[finish_index, lines.length], label
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
data/lib/tocer.rb
CHANGED
data/tocer.gemspec
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
Gem::Specification.new do |spec|
|
4
|
+
spec.name = "tocer"
|
5
|
+
spec.version = "13.2.0"
|
6
|
+
spec.authors = ["Brooke Kuhlmann"]
|
7
|
+
spec.email = ["brooke@alchemists.io"]
|
8
|
+
spec.homepage = "https://www.alchemists.io/projects/tocer"
|
9
|
+
spec.summary = "A command line interface for generating table of contents for Markdown files."
|
10
|
+
spec.license = "Hippocratic-3.0"
|
11
|
+
|
12
|
+
spec.metadata = {
|
13
|
+
"bug_tracker_uri" => "https://github.com/bkuhlmann/tocer/issues",
|
14
|
+
"changelog_uri" => "https://www.alchemists.io/projects/tocer/versions",
|
15
|
+
"documentation_uri" => "https://www.alchemists.io/projects/tocer",
|
16
|
+
"label" => "Tocer",
|
17
|
+
"rubygems_mfa_required" => "true",
|
18
|
+
"source_code_uri" => "https://github.com/bkuhlmann/tocer"
|
19
|
+
}
|
20
|
+
|
21
|
+
spec.signing_key = Gem.default_key_path
|
22
|
+
spec.cert_chain = [Gem.default_cert_path]
|
23
|
+
|
24
|
+
spec.required_ruby_version = "~> 3.1"
|
25
|
+
spec.add_dependency "dry-container", "~> 0.9"
|
26
|
+
spec.add_dependency "pastel", "~> 0.8"
|
27
|
+
spec.add_dependency "refinements", "~> 9.1"
|
28
|
+
spec.add_dependency "runcom", "~> 8.2"
|
29
|
+
spec.add_dependency "spek", "~> 0.0"
|
30
|
+
spec.add_dependency "zeitwerk", "~> 2.5"
|
31
|
+
|
32
|
+
spec.bindir = "exe"
|
33
|
+
spec.executables << "tocer"
|
34
|
+
spec.extra_rdoc_files = Dir["README*", "LICENSE*"]
|
35
|
+
spec.files = Dir["*.gemspec", "lib/**/*"]
|
36
|
+
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tocer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 13.
|
4
|
+
version: 13.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brooke Kuhlmann
|
@@ -28,36 +28,78 @@ cert_chain:
|
|
28
28
|
lkHilIrX69jq8wMPpBhlaw2mRmeSL50Wv5u6xVBvOHhXFSP1crXM95vfLhLyRYod
|
29
29
|
W2A=
|
30
30
|
-----END CERTIFICATE-----
|
31
|
-
date:
|
31
|
+
date: 2022-02-06 00:00:00.000000000 Z
|
32
32
|
dependencies:
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: dry-container
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0.9'
|
40
|
+
type: :runtime
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0.9'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: pastel
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0.8'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0.8'
|
33
61
|
- !ruby/object:Gem::Dependency
|
34
62
|
name: refinements
|
35
63
|
requirement: !ruby/object:Gem::Requirement
|
36
64
|
requirements:
|
37
65
|
- - "~>"
|
38
66
|
- !ruby/object:Gem::Version
|
39
|
-
version: '9.
|
67
|
+
version: '9.1'
|
40
68
|
type: :runtime
|
41
69
|
prerelease: false
|
42
70
|
version_requirements: !ruby/object:Gem::Requirement
|
43
71
|
requirements:
|
44
72
|
- - "~>"
|
45
73
|
- !ruby/object:Gem::Version
|
46
|
-
version: '9.
|
74
|
+
version: '9.1'
|
47
75
|
- !ruby/object:Gem::Dependency
|
48
76
|
name: runcom
|
49
77
|
requirement: !ruby/object:Gem::Requirement
|
50
78
|
requirements:
|
51
79
|
- - "~>"
|
52
80
|
- !ruby/object:Gem::Version
|
53
|
-
version: '8.
|
81
|
+
version: '8.2'
|
82
|
+
type: :runtime
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '8.2'
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: spek
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - "~>"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0.0'
|
54
96
|
type: :runtime
|
55
97
|
prerelease: false
|
56
98
|
version_requirements: !ruby/object:Gem::Requirement
|
57
99
|
requirements:
|
58
100
|
- - "~>"
|
59
101
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
102
|
+
version: '0.0'
|
61
103
|
- !ruby/object:Gem::Dependency
|
62
104
|
name: zeitwerk
|
63
105
|
requirement: !ruby/object:Gem::Requirement
|
@@ -96,8 +138,8 @@ files:
|
|
96
138
|
- lib/tocer/configuration/content.rb
|
97
139
|
- lib/tocer/configuration/defaults.yml
|
98
140
|
- lib/tocer/configuration/loader.rb
|
141
|
+
- lib/tocer/container.rb
|
99
142
|
- lib/tocer/elements/comment_block.rb
|
100
|
-
- lib/tocer/identity.rb
|
101
143
|
- lib/tocer/parsers/header.rb
|
102
144
|
- lib/tocer/rake/setup.rb
|
103
145
|
- lib/tocer/rake/tasks.rb
|
@@ -106,13 +148,15 @@ files:
|
|
106
148
|
- lib/tocer/transformers/link.rb
|
107
149
|
- lib/tocer/transformers/text.rb
|
108
150
|
- lib/tocer/writer.rb
|
151
|
+
- tocer.gemspec
|
109
152
|
homepage: https://www.alchemists.io/projects/tocer
|
110
153
|
licenses:
|
111
154
|
- Hippocratic-3.0
|
112
155
|
metadata:
|
113
156
|
bug_tracker_uri: https://github.com/bkuhlmann/tocer/issues
|
114
|
-
changelog_uri: https://www.alchemists.io/projects/tocer/
|
157
|
+
changelog_uri: https://www.alchemists.io/projects/tocer/versions
|
115
158
|
documentation_uri: https://www.alchemists.io/projects/tocer
|
159
|
+
label: Tocer
|
116
160
|
rubygems_mfa_required: 'true'
|
117
161
|
source_code_uri: https://github.com/bkuhlmann/tocer
|
118
162
|
post_install_message:
|
@@ -130,7 +174,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
174
|
- !ruby/object:Gem::Version
|
131
175
|
version: '0'
|
132
176
|
requirements: []
|
133
|
-
rubygems_version: 3.3.
|
177
|
+
rubygems_version: 3.3.6
|
134
178
|
signing_key:
|
135
179
|
specification_version: 4
|
136
180
|
summary: A command line interface for generating table of contents for Markdown files.
|
metadata.gz.sig
CHANGED
Binary file
|
data/lib/tocer/identity.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Tocer
|
4
|
-
# Gem identity information.
|
5
|
-
module Identity
|
6
|
-
NAME = "tocer"
|
7
|
-
LABEL = "Tocer"
|
8
|
-
VERSION = "13.0.0"
|
9
|
-
VERSION_LABEL = "#{LABEL} #{VERSION}".freeze
|
10
|
-
SUMMARY = "A command line interface for generating table of contents for Markdown files."
|
11
|
-
end
|
12
|
-
end
|