tocer 12.2.0 → 13.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +2 -2
- data/LICENSE.adoc +207 -155
- data/README.adoc +18 -33
- data/exe/tocer +0 -1
- data/lib/tocer/builder.rb +5 -2
- data/lib/tocer/cli/actions/config.rb +35 -0
- data/lib/tocer/cli/actions/insert.rb +25 -0
- data/lib/tocer/cli/parser.rb +31 -0
- data/lib/tocer/cli/parsers/core.rb +27 -13
- data/lib/tocer/cli/parsers/flag.rb +51 -0
- data/lib/tocer/cli/shell.rb +21 -20
- data/lib/tocer/configuration/content.rb +22 -0
- data/lib/tocer/{cli/configuration → configuration}/defaults.yml +1 -0
- data/lib/tocer/configuration/loader.rb +33 -0
- data/lib/tocer/container.rb +40 -0
- data/lib/tocer/elements/comment_block.rb +4 -0
- data/lib/tocer/rake/tasks.rb +2 -2
- data/lib/tocer/runner.rb +8 -9
- data/lib/tocer/transformers/finder.rb +3 -2
- data/lib/tocer/writer.rb +12 -4
- data/lib/tocer.rb +11 -18
- data/tocer.gemspec +37 -0
- data.tar.gz.sig +0 -0
- metadata +62 -19
- metadata.gz.sig +0 -0
- data/lib/tocer/cli/configuration/content.rb +0 -10
- data/lib/tocer/cli/configuration/loader.rb +0 -33
- data/lib/tocer/cli/parsers/assembler.rb +0 -34
- data/lib/tocer/cli/parsers/build.rb +0 -52
- data/lib/tocer/cli/parsers.rb +0 -11
- data/lib/tocer/cli/processors/build.rb +0 -24
- data/lib/tocer/cli/processors/config.rb +0 -31
- data/lib/tocer/identity.rb +0 -12
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "optparse"
|
4
|
+
|
5
|
+
module Tocer
|
6
|
+
module CLI
|
7
|
+
# Assembles and parses all Command Line Interface (CLI) options.
|
8
|
+
class Parser
|
9
|
+
CLIENT = OptionParser.new nil, 40, " "
|
10
|
+
SECTIONS = [Parsers::Core, Parsers::Flag].freeze # Order is important.
|
11
|
+
|
12
|
+
def initialize sections: SECTIONS, client: CLIENT, container: Container
|
13
|
+
@sections = sections
|
14
|
+
@client = client
|
15
|
+
@configuration = container[:configuration].dup
|
16
|
+
end
|
17
|
+
|
18
|
+
def call arguments = []
|
19
|
+
sections.each { |parser| parser.call configuration, client: }
|
20
|
+
client.parse arguments
|
21
|
+
configuration.freeze
|
22
|
+
end
|
23
|
+
|
24
|
+
def to_s = client.to_s
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
attr_reader :sections, :client, :configuration
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -1,29 +1,35 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "
|
3
|
+
require "refinements/structs"
|
4
4
|
|
5
5
|
module Tocer
|
6
6
|
module CLI
|
7
7
|
module Parsers
|
8
8
|
# Handles parsing of Command Line Interface (CLI) core options.
|
9
9
|
class Core
|
10
|
-
|
10
|
+
using Refinements::Structs
|
11
11
|
|
12
|
-
def
|
13
|
-
|
12
|
+
def self.call(...) = new(...).call
|
13
|
+
|
14
|
+
def initialize configuration = Configuration::Loader.call,
|
15
|
+
client: Parser::CLIENT,
|
16
|
+
container: Container
|
17
|
+
@configuration = configuration
|
14
18
|
@client = client
|
19
|
+
@container = container
|
15
20
|
end
|
16
21
|
|
17
22
|
def call arguments = []
|
18
|
-
client.banner = "
|
23
|
+
client.banner = "Tocer - #{specification.summary}"
|
19
24
|
client.separator "\nUSAGE:\n"
|
20
25
|
collate
|
21
|
-
|
26
|
+
client.parse arguments
|
27
|
+
configuration
|
22
28
|
end
|
23
29
|
|
24
30
|
private
|
25
31
|
|
26
|
-
attr_reader :
|
32
|
+
attr_reader :configuration, :client, :container
|
27
33
|
|
28
34
|
def collate = private_methods.sort.grep(/add_/).each { |method| __send__ method }
|
29
35
|
|
@@ -34,27 +40,35 @@ module Tocer
|
|
34
40
|
%i[edit view],
|
35
41
|
"Manage gem configuration: edit or view."
|
36
42
|
) do |action|
|
37
|
-
|
43
|
+
configuration.merge! action_config: action
|
38
44
|
end
|
39
45
|
end
|
40
46
|
|
41
|
-
def
|
42
|
-
|
43
|
-
|
47
|
+
def add_insert
|
48
|
+
root_dir = configuration.root_dir
|
49
|
+
|
50
|
+
client.on(
|
51
|
+
"-i",
|
52
|
+
"--insert [PATH]",
|
53
|
+
%(Insert/update table of contents. Default: "#{root_dir}".)
|
54
|
+
) do |path|
|
55
|
+
configuration.merge! action_insert: true, root_dir: path || root_dir
|
44
56
|
end
|
45
57
|
end
|
46
58
|
|
47
59
|
def add_version
|
48
60
|
client.on "-v", "--version", "Show gem version." do
|
49
|
-
|
61
|
+
configuration.merge! action_version: true
|
50
62
|
end
|
51
63
|
end
|
52
64
|
|
53
65
|
def add_help
|
54
66
|
client.on "-h", "--help", "Show this message." do
|
55
|
-
|
67
|
+
configuration.merge! action_help: true
|
56
68
|
end
|
57
69
|
end
|
70
|
+
|
71
|
+
def specification = container[__method__]
|
58
72
|
end
|
59
73
|
end
|
60
74
|
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/structs"
|
4
|
+
|
5
|
+
module Tocer
|
6
|
+
module CLI
|
7
|
+
module Parsers
|
8
|
+
# Handles parsing of Command Line Interface (CLI) flags.
|
9
|
+
class Flag
|
10
|
+
using Refinements::Structs
|
11
|
+
|
12
|
+
def self.call(...) = new(...).call
|
13
|
+
|
14
|
+
def initialize configuration = Configuration::Loader.call, client: Parser::CLIENT
|
15
|
+
@configuration = configuration
|
16
|
+
@client = client
|
17
|
+
end
|
18
|
+
|
19
|
+
def call arguments = []
|
20
|
+
client.separator "\nOPTIONS:\n"
|
21
|
+
private_methods.sort.grep(/add_/).each { |method| __send__ method }
|
22
|
+
client.parse arguments
|
23
|
+
configuration
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
attr_reader :configuration, :client
|
29
|
+
|
30
|
+
def add_label
|
31
|
+
client.on(
|
32
|
+
"--label [LABEL]",
|
33
|
+
%(Add label. Default: "#{configuration.label}".)
|
34
|
+
) do |value|
|
35
|
+
configuration.merge! label: value if value
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def add_include
|
40
|
+
client.on(
|
41
|
+
"--includes [a,b,c]",
|
42
|
+
Array,
|
43
|
+
%(Add include patterns. Default: #{configuration.includes}.)
|
44
|
+
) do |items|
|
45
|
+
configuration.merge! includes: items if items
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
data/lib/tocer/cli/shell.rb
CHANGED
@@ -4,41 +4,42 @@ module Tocer
|
|
4
4
|
module CLI
|
5
5
|
# The main Command Line Interface (CLI) object.
|
6
6
|
class Shell
|
7
|
-
|
7
|
+
ACTIONS = {config: Actions::Config.new, insert: Actions::Insert.new}.freeze
|
8
8
|
|
9
|
-
def initialize parser:
|
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 = []
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
in config: action then process_config action
|
19
|
-
in build: path then process_build path
|
20
|
-
in version: then puts version
|
21
|
-
else usage
|
22
|
-
end
|
16
|
+
perform parser.call(arguments)
|
17
|
+
rescue OptionParser::ParseError => error
|
18
|
+
puts error.message
|
23
19
|
end
|
24
20
|
|
25
21
|
private
|
26
22
|
|
27
|
-
attr_reader :parser, :
|
23
|
+
attr_reader :parser, :actions, :container
|
28
24
|
|
29
|
-
def
|
30
|
-
|
31
|
-
|
32
|
-
|
25
|
+
def perform configuration
|
26
|
+
case configuration
|
27
|
+
in action_config: Symbol => action then process_config action
|
28
|
+
in action_insert: true then process_insert configuration
|
29
|
+
in action_version: true then logger.info { "Tocer #{specification.version}" }
|
30
|
+
else usage
|
31
|
+
end
|
33
32
|
end
|
34
33
|
|
35
|
-
def process_config(action) =
|
36
|
-
|
37
|
-
def process_build(path) = processors.fetch(:build).call(path, options)
|
34
|
+
def process_config(action) = actions.fetch(:config).call(action)
|
38
35
|
|
39
|
-
def
|
36
|
+
def process_insert(configuration) = actions.fetch(:insert).call(configuration)
|
40
37
|
|
41
38
|
def usage = puts(parser.to_s)
|
39
|
+
|
40
|
+
def specification = container[__method__]
|
41
|
+
|
42
|
+
def logger = container[__method__]
|
42
43
|
end
|
43
44
|
end
|
44
45
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Tocer
|
4
|
+
module Configuration
|
5
|
+
# Defines the content of the configuration for use throughout the gem.
|
6
|
+
Content = Struct.new(
|
7
|
+
:action_config,
|
8
|
+
:action_help,
|
9
|
+
:action_insert,
|
10
|
+
:action_version,
|
11
|
+
:includes,
|
12
|
+
:label,
|
13
|
+
:root_dir,
|
14
|
+
keyword_init: true
|
15
|
+
) do
|
16
|
+
def initialize *arguments
|
17
|
+
super
|
18
|
+
freeze
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "pathname"
|
4
|
+
require "refinements/structs"
|
5
|
+
require "runcom"
|
6
|
+
require "yaml"
|
7
|
+
|
8
|
+
module Tocer
|
9
|
+
module Configuration
|
10
|
+
# Represents the fully assembled Command Line Interface (CLI) configuration.
|
11
|
+
class Loader
|
12
|
+
using Refinements::Structs
|
13
|
+
|
14
|
+
DEFAULTS = YAML.load_file(Pathname(__dir__).join("defaults.yml")).freeze
|
15
|
+
CLIENT = Runcom::Config.new "tocer/configuration.yml", defaults: DEFAULTS
|
16
|
+
|
17
|
+
def self.call = new.call
|
18
|
+
|
19
|
+
def self.with_defaults = new(client: DEFAULTS)
|
20
|
+
|
21
|
+
def initialize content: Content.new, client: CLIENT
|
22
|
+
@content = content
|
23
|
+
@client = client
|
24
|
+
end
|
25
|
+
|
26
|
+
def call = content.merge(**client.to_h)
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
attr_reader :content, :client
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "dry-container"
|
4
|
+
require "logger"
|
5
|
+
require "pastel"
|
6
|
+
|
7
|
+
module Tocer
|
8
|
+
# Provides a global gem container for injection into other objects.
|
9
|
+
module Container
|
10
|
+
extend Dry::Container::Mixin
|
11
|
+
|
12
|
+
SPEC_PATH = "#{__dir__}/../../tocer.gemspec".freeze
|
13
|
+
|
14
|
+
register(:configuration) { Configuration::Loader.call }
|
15
|
+
register(:specification) { Gem::Specification.load SPEC_PATH }
|
16
|
+
register(:colorizer) { Pastel.new enabled: $stdout.tty? }
|
17
|
+
register(:kernel) { Kernel }
|
18
|
+
|
19
|
+
register :log_colors do
|
20
|
+
{
|
21
|
+
"DEBUG" => self[:colorizer].white.detach,
|
22
|
+
"INFO" => self[:colorizer].green.detach,
|
23
|
+
"WARN" => self[:colorizer].yellow.detach,
|
24
|
+
"ERROR" => self[:colorizer].red.detach,
|
25
|
+
"FATAL" => self[:colorizer].white.bold.on_red.detach,
|
26
|
+
"ANY" => self[:colorizer].white.bold.detach
|
27
|
+
}
|
28
|
+
end
|
29
|
+
|
30
|
+
register :logger do
|
31
|
+
Logger.new $stdout,
|
32
|
+
level: Logger.const_get(ENV.fetch("LOG_LEVEL", "INFO")),
|
33
|
+
formatter: (
|
34
|
+
lambda do |severity, _at, _name, message|
|
35
|
+
self[:log_colors][severity].call "#{message}\n"
|
36
|
+
end
|
37
|
+
)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -17,6 +17,8 @@ module Tocer
|
|
17
17
|
@message = message
|
18
18
|
end
|
19
19
|
|
20
|
+
def comments = "#{start_tag}\n#{finish_tag}\n"
|
21
|
+
|
20
22
|
def start_index(lines) = self.class.index(lines, start_id)
|
21
23
|
|
22
24
|
def start_tag = comment(start_id, message)
|
@@ -25,6 +27,8 @@ module Tocer
|
|
25
27
|
|
26
28
|
def finish_tag = comment(finish_id, message)
|
27
29
|
|
30
|
+
def empty?(lines) = (finish_index(lines) - start_index(lines)) == 1
|
31
|
+
|
28
32
|
def prependable?(lines) = start_index(lines).zero? && finish_index(lines).zero?
|
29
33
|
|
30
34
|
private
|
data/lib/tocer/rake/tasks.rb
CHANGED
@@ -13,7 +13,7 @@ module Tocer
|
|
13
13
|
|
14
14
|
def self.setup = new.install
|
15
15
|
|
16
|
-
def initialize configuration
|
16
|
+
def initialize configuration = Configuration::Loader.call, runner: Runner.new
|
17
17
|
@configuration = configuration
|
18
18
|
@runner = runner
|
19
19
|
end
|
@@ -21,7 +21,7 @@ module Tocer
|
|
21
21
|
def install
|
22
22
|
desc "Add/Update Table of Contents (README)"
|
23
23
|
task :toc, %i[label includes] do |_task, arguments|
|
24
|
-
runner.call
|
24
|
+
runner.call configuration.merge(**arguments.to_h)
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
data/lib/tocer/runner.rb
CHANGED
@@ -7,21 +7,20 @@ module Tocer
|
|
7
7
|
class Runner
|
8
8
|
using Refinements::Pathnames
|
9
9
|
|
10
|
-
def initialize
|
11
|
-
@configuration = configuration
|
10
|
+
def initialize writer: Writer.new
|
12
11
|
@writer = writer
|
13
12
|
end
|
14
13
|
|
15
|
-
def call
|
16
|
-
Pathname(root_dir).files(%({#{includes.join ","}}))
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
14
|
+
def call configuration = Configuration::Loader.call
|
15
|
+
Pathname(configuration.root_dir).files(%({#{configuration.includes.join ","}}))
|
16
|
+
.each do |path|
|
17
|
+
yield path if block_given?
|
18
|
+
writer.call path, label: configuration.label
|
19
|
+
end
|
21
20
|
end
|
22
21
|
|
23
22
|
private
|
24
23
|
|
25
|
-
attr_reader :
|
24
|
+
attr_reader :writer
|
26
25
|
end
|
27
26
|
end
|
@@ -11,8 +11,9 @@ module Tocer
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def call markdown
|
14
|
-
transformers.find
|
15
|
-
|
14
|
+
transformers.find do |pattern, transformer|
|
15
|
+
break transformer.new markdown if pattern.match? markdown
|
16
|
+
end
|
16
17
|
end
|
17
18
|
|
18
19
|
private
|
data/lib/tocer/writer.rb
CHANGED
@@ -24,7 +24,7 @@ module Tocer
|
|
24
24
|
@builder = builder
|
25
25
|
end
|
26
26
|
|
27
|
-
def call path, label:
|
27
|
+
def call path, label: Configuration::Loader.call.label
|
28
28
|
path.rewrite do |body|
|
29
29
|
lines = body.each_line.to_a
|
30
30
|
builder.prependable?(lines) ? prepend(lines, label) : replace(lines, label)
|
@@ -41,14 +41,22 @@ module Tocer
|
|
41
41
|
klass = self.class
|
42
42
|
|
43
43
|
klass.add(
|
44
|
-
start_index
|
44
|
+
start_index:,
|
45
45
|
old_lines: klass.remove(start_index, finish_index, lines),
|
46
|
-
new_lines:
|
46
|
+
new_lines: new_lines(lines, label, finish_index)
|
47
47
|
).join
|
48
48
|
end
|
49
49
|
|
50
|
+
def new_lines lines, label, finish_index
|
51
|
+
if builder.unbuildable? lines
|
52
|
+
builder.comments
|
53
|
+
else
|
54
|
+
content lines[finish_index, lines.length], label
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
50
58
|
def prepend(lines, label) = [content(lines, label), lines.join].compress.join("\n")
|
51
59
|
|
52
|
-
def content(lines, label) = builder.call(lines, label:
|
60
|
+
def content(lines, label) = builder.call(lines, label:)
|
53
61
|
end
|
54
62
|
end
|
data/lib/tocer.rb
CHANGED
@@ -1,20 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
require "tocer/cli/parsers"
|
15
|
-
require "tocer/cli/parsers/build"
|
16
|
-
require "tocer/cli/parsers/core"
|
17
|
-
require "tocer/cli/parsers/assembler"
|
18
|
-
require "tocer/cli/processors/build"
|
19
|
-
require "tocer/cli/processors/config"
|
20
|
-
require "tocer/cli/shell"
|
3
|
+
require "zeitwerk"
|
4
|
+
|
5
|
+
Zeitwerk::Loader.for_gem.then do |loader|
|
6
|
+
loader.inflector.inflect "cli" => "CLI"
|
7
|
+
loader.ignore "#{__dir__}/tocer/rake"
|
8
|
+
loader.setup
|
9
|
+
end
|
10
|
+
|
11
|
+
# Main namespace.
|
12
|
+
module Tocer
|
13
|
+
end
|
data/tocer.gemspec
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
Gem::Specification.new do |spec|
|
4
|
+
spec.name = "tocer"
|
5
|
+
spec.version = "13.1.0"
|
6
|
+
spec.platform = Gem::Platform::RUBY
|
7
|
+
spec.authors = ["Brooke Kuhlmann"]
|
8
|
+
spec.email = ["brooke@alchemists.io"]
|
9
|
+
spec.homepage = "https://www.alchemists.io/projects/tocer"
|
10
|
+
spec.summary = "A command line interface for generating table of contents for Markdown files."
|
11
|
+
spec.license = "Hippocratic-3.0"
|
12
|
+
|
13
|
+
spec.metadata = {
|
14
|
+
"bug_tracker_uri" => "https://github.com/bkuhlmann/tocer/issues",
|
15
|
+
"changelog_uri" => "https://www.alchemists.io/projects/tocer/versions",
|
16
|
+
"documentation_uri" => "https://www.alchemists.io/projects/tocer",
|
17
|
+
"label" => "Tocer",
|
18
|
+
"rubygems_mfa_required" => "true",
|
19
|
+
"source_code_uri" => "https://github.com/bkuhlmann/tocer"
|
20
|
+
}
|
21
|
+
|
22
|
+
spec.signing_key = Gem.default_key_path
|
23
|
+
spec.cert_chain = [Gem.default_cert_path]
|
24
|
+
|
25
|
+
spec.required_ruby_version = "~> 3.1"
|
26
|
+
spec.add_dependency "dry-container", "~> 0.9"
|
27
|
+
spec.add_dependency "pastel", "~> 0.8"
|
28
|
+
spec.add_dependency "refinements", "~> 9.1"
|
29
|
+
spec.add_dependency "runcom", "~> 8.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
|
+
spec.require_paths = ["lib"]
|
37
|
+
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:
|
4
|
+
version: 13.1.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-01-23 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: '
|
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: '
|
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: '
|
81
|
+
version: '8.0'
|
82
|
+
type: :runtime
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '8.0'
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: zeitwerk
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - "~>"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '2.5'
|
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: '2.5'
|
61
103
|
description:
|
62
104
|
email:
|
63
105
|
- brooke@alchemists.io
|
@@ -73,18 +115,17 @@ files:
|
|
73
115
|
- exe/tocer
|
74
116
|
- lib/tocer.rb
|
75
117
|
- lib/tocer/builder.rb
|
76
|
-
- lib/tocer/cli/
|
77
|
-
- lib/tocer/cli/
|
78
|
-
- lib/tocer/cli/
|
79
|
-
- lib/tocer/cli/parsers.rb
|
80
|
-
- lib/tocer/cli/parsers/assembler.rb
|
81
|
-
- lib/tocer/cli/parsers/build.rb
|
118
|
+
- lib/tocer/cli/actions/config.rb
|
119
|
+
- lib/tocer/cli/actions/insert.rb
|
120
|
+
- lib/tocer/cli/parser.rb
|
82
121
|
- lib/tocer/cli/parsers/core.rb
|
83
|
-
- lib/tocer/cli/
|
84
|
-
- lib/tocer/cli/processors/config.rb
|
122
|
+
- lib/tocer/cli/parsers/flag.rb
|
85
123
|
- lib/tocer/cli/shell.rb
|
124
|
+
- lib/tocer/configuration/content.rb
|
125
|
+
- lib/tocer/configuration/defaults.yml
|
126
|
+
- lib/tocer/configuration/loader.rb
|
127
|
+
- lib/tocer/container.rb
|
86
128
|
- lib/tocer/elements/comment_block.rb
|
87
|
-
- lib/tocer/identity.rb
|
88
129
|
- lib/tocer/parsers/header.rb
|
89
130
|
- lib/tocer/rake/setup.rb
|
90
131
|
- lib/tocer/rake/tasks.rb
|
@@ -93,13 +134,15 @@ files:
|
|
93
134
|
- lib/tocer/transformers/link.rb
|
94
135
|
- lib/tocer/transformers/text.rb
|
95
136
|
- lib/tocer/writer.rb
|
137
|
+
- tocer.gemspec
|
96
138
|
homepage: https://www.alchemists.io/projects/tocer
|
97
139
|
licenses:
|
98
|
-
-
|
140
|
+
- Hippocratic-3.0
|
99
141
|
metadata:
|
100
142
|
bug_tracker_uri: https://github.com/bkuhlmann/tocer/issues
|
101
|
-
changelog_uri: https://www.alchemists.io/projects/tocer/
|
143
|
+
changelog_uri: https://www.alchemists.io/projects/tocer/versions
|
102
144
|
documentation_uri: https://www.alchemists.io/projects/tocer
|
145
|
+
label: Tocer
|
103
146
|
rubygems_mfa_required: 'true'
|
104
147
|
source_code_uri: https://github.com/bkuhlmann/tocer
|
105
148
|
post_install_message:
|
@@ -110,14 +153,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
110
153
|
requirements:
|
111
154
|
- - "~>"
|
112
155
|
- !ruby/object:Gem::Version
|
113
|
-
version: '3.
|
156
|
+
version: '3.1'
|
114
157
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
158
|
requirements:
|
116
159
|
- - ">="
|
117
160
|
- !ruby/object:Gem::Version
|
118
161
|
version: '0'
|
119
162
|
requirements: []
|
120
|
-
rubygems_version: 3.
|
163
|
+
rubygems_version: 3.3.5
|
121
164
|
signing_key:
|
122
165
|
specification_version: 4
|
123
166
|
summary: A command line interface for generating table of contents for Markdown files.
|