tocer 13.0.2 → 13.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bd12be96af91b620d30f88fa69c298a214b8afe2af7dfb75273e6a7b0a65d90a
4
- data.tar.gz: c3d764b897cff022ff7a23cbd989aec9ec1f35331c48f42a0ed14af0a961adf8
3
+ metadata.gz: e4f9a0ee9b693d4deefef11c3796836eb6a8b005cd05fceefdb94de06136383c
4
+ data.tar.gz: 73b94f1b13302644bac07a2eeb9fe31af2f7d4e8684ba991f6dc6d7246911541
5
5
  SHA512:
6
- metadata.gz: bd21c07490c9d0657b9a3660b23d3bdb767dabc25d804e0c0a74462de63f2491017e3216205f4da34fba8c920f7442ac75a02318c0168456e95d5f81665ce6ff
7
- data.tar.gz: ea029308ad0e4a84f945e11473995dc1e6b935fa95070405fdd9d78fc751450df6da335cef427521a4dfaf80a7ee3fa2e956789bb06092908812c6ce3358138e
6
+ metadata.gz: 5bde200579f6defddd5c7e95a1b2f513e787faf308c7afdcd21f1e5aa84025cd81a4448487e40e8bf66373901094ceee7c3edef6fce0d2c00034c638d6ee2e24
7
+ data.tar.gz: 1ac27f2f664c353fb48386407fd4a0370f50d5a9b412a0bcb3c7b969d348c6c2d57fec15cce93dac568da57a3b7111bb1e015a18c3dc4f4d9139206af5f11f74
checksums.yaml.gz.sig CHANGED
@@ -1,3 +1,2 @@
1
- ���O^��>ت�!Y���#��
2
-
3
- ��# ����v���Wp�W�,��|�� ���&Z'9�� JUi�.��)�ڕ'\t9����qpc�c���b��Cˤ����� �v���G���<<U��d�+.I®s{8��b���s�+�_�/���Ng?�l|�zo,_��x���S¼�NTXN����
1
+ q�Q��z�F瞲��$���~G�=5��qź�م��"<�
2
+ q�ۏ�A$�gq�`��Cx�u�>N��0��;n�('�R��L*��f{>"����D��w�XR?�w�ݥ�W�f�7��}�hEW����T&&�P|P��*:���x���Ģg�وn�}p�`���m�7�x]f�9<,jup��B�g��؝')
3
+ ��Z�bJG]�����Vo�:&�f��K����$�6^���:�8L+\�I����8��ؕ3lӞ�ȦA(��57���>�q^�j�*��DgֲE-]
data/exe/tocer CHANGED
@@ -3,5 +3,4 @@
3
3
 
4
4
  require "tocer"
5
5
 
6
- Process.setproctitle Tocer::Identity::VERSION_LABEL
7
6
  Tocer::CLI::Shell.new.call ARGV
@@ -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, kernel: Kernel
8
+ def initialize client: Configuration::Loader::CLIENT, container: Container
9
9
  @client = client
10
- @kernel = kernel
10
+ @container = container
11
11
  end
12
12
 
13
- def call action
14
- case action
13
+ def call selection
14
+ case selection
15
15
  when :edit then edit
16
16
  when :view then view
17
- else kernel.puts "Invalid configuration action: #{action}."
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, :kernel
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(configuration) = runner.call(configuration) { |path| puts " #{path}" }
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
@@ -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 configuration = Configuration::Loader.call, sections: SECTIONS, client: CLIENT
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 :configuration, :sections, :client
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, client: Parser::CLIENT
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 = "#{Identity::LABEL} - #{Identity::SUMMARY}"
23
+ client.banner = "Tocer - #{specification.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
@@ -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 puts Identity::VERSION_LABEL
29
+ in action_version: true then logger.info { "Tocer #{specification.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 "#{Identity::NAME}/configuration.yml", defaults: DEFAULTS
15
+ CLIENT = Runcom::Config.new "tocer/configuration.yml", defaults: DEFAULTS
16
16
 
17
17
  def self.call = new.call
18
18
 
@@ -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
@@ -12,7 +12,7 @@ module Tocer
12
12
 
13
13
  def call markdown
14
14
  transformers.find do |pattern, transformer|
15
- break transformer.new(markdown) if pattern.match? markdown
15
+ break transformer.new markdown if pattern.match? markdown
16
16
  end
17
17
  end
18
18
 
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?(lines)
51
+ if builder.unbuildable? lines
52
52
  builder.comments
53
53
  else
54
- content(lines[finish_index, lines.length], label)
54
+ content lines[finish_index, lines.length], label
55
55
  end
56
56
  end
57
57
 
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: 13.0.2
4
+ version: 13.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brooke Kuhlmann
@@ -28,22 +28,50 @@ cert_chain:
28
28
  lkHilIrX69jq8wMPpBhlaw2mRmeSL50Wv5u6xVBvOHhXFSP1crXM95vfLhLyRYod
29
29
  W2A=
30
30
  -----END CERTIFICATE-----
31
- date: 2022-01-13 00:00:00.000000000 Z
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: '9.0'
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.0'
74
+ version: '9.1'
47
75
  - !ruby/object:Gem::Dependency
48
76
  name: runcom
49
77
  requirement: !ruby/object:Gem::Requirement
@@ -96,8 +124,8 @@ files:
96
124
  - lib/tocer/configuration/content.rb
97
125
  - lib/tocer/configuration/defaults.yml
98
126
  - lib/tocer/configuration/loader.rb
127
+ - lib/tocer/container.rb
99
128
  - lib/tocer/elements/comment_block.rb
100
- - lib/tocer/identity.rb
101
129
  - lib/tocer/parsers/header.rb
102
130
  - lib/tocer/rake/setup.rb
103
131
  - lib/tocer/rake/tasks.rb
@@ -106,6 +134,7 @@ files:
106
134
  - lib/tocer/transformers/link.rb
107
135
  - lib/tocer/transformers/text.rb
108
136
  - lib/tocer/writer.rb
137
+ - tocer.gemspec
109
138
  homepage: https://www.alchemists.io/projects/tocer
110
139
  licenses:
111
140
  - Hippocratic-3.0
@@ -113,6 +142,7 @@ metadata:
113
142
  bug_tracker_uri: https://github.com/bkuhlmann/tocer/issues
114
143
  changelog_uri: https://www.alchemists.io/projects/tocer/versions
115
144
  documentation_uri: https://www.alchemists.io/projects/tocer
145
+ label: Tocer
116
146
  rubygems_mfa_required: 'true'
117
147
  source_code_uri: https://github.com/bkuhlmann/tocer
118
148
  post_install_message:
@@ -130,7 +160,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
160
  - !ruby/object:Gem::Version
131
161
  version: '0'
132
162
  requirements: []
133
- rubygems_version: 3.3.4
163
+ rubygems_version: 3.3.5
134
164
  signing_key:
135
165
  specification_version: 4
136
166
  summary: A command line interface for generating table of contents for Markdown files.
metadata.gz.sig CHANGED
@@ -1 +1,2 @@
1
- $"��sj�?�fM�#ۈ�Ro ��>�K�}��*A�o<�����ž ��"Ӓ��H��'2��h� �Xj��.�*:Ţ��e)mD[�B*Kp׍е����6ݳ�>�N�=ȏs*v$rK������ݷ�#�P��d�^��$�߮�D�PGi�U���Q�H����D3��}��6�`�hy�v���8�O���U�,(� l��/��\�^��=2��#� ����*P�g���B�ƧA_�J�p�
1
+ ÿ��IM��������Q#j �8.}��2��²�Tן`��_ �؞�f
2
+ JFQq�y� �@(��!��g[�~�)s���Hnz5E�<� �0�s*<#{�3HE��VB���e_5��o��O������1a'�Oٳ����d���P��d�["Xk ��,cDc���{,dˀ��)�k��2!7"���)�u��!�ħ��C*R�a��<L-�؀��v�F�w �͜2�$6�z�����)�%Z0Ĵ@�U��
@@ -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.2"
9
- VERSION_LABEL = "#{LABEL} #{VERSION}".freeze
10
- SUMMARY = "A command line interface for generating table of contents for Markdown files."
11
- end
12
- end