Class: Toys::Utils::HelpText
- Inherits:
-
Object
- Object
- Toys::Utils::HelpText
- Defined in:
- lib/toys/utils/help_text.rb
Overview
A helper class that generates usage documentation for a tool.
This class generates full usage documentation, including description, flags, and arguments. It is used by middleware that implements help and related options.
This class is not loaded by default. Before using it directly, you should
require "toys/utils/help_text"
Defined Under Namespace
Classes: HelpGenerationError
Constant Summary collapse
- DEFAULT_LEFT_COLUMN_WIDTH =
Default width of first column
32- DEFAULT_INDENT =
Default indent
4
Instance Attribute Summary collapse
-
#tool ⇒ Toys::ToolDefinition
readonly
The ToolDefinition being documented.
Class Method Summary collapse
-
.from_context(context) ⇒ Toys::Utils::HelpText
Create a usage helper given an execution context.
Instance Method Summary collapse
-
#help_string(recursive: false, search: nil, include_hidden: false, show_source_path: false, separate_sources: false, indent: nil, indent2: nil, wrap_width: nil, styled: true) ⇒ String
Generate a long help string.
-
#initialize(tool, loader, executable_name, delegates: []) ⇒ Toys::Utils::HelpText
constructor
Create a usage helper.
-
#list_string(recursive: false, search: nil, include_hidden: false, separate_sources: false, indent: nil, wrap_width: nil, styled: true) ⇒ String
Generate a subtool list string.
-
#usage_string(recursive: false, include_hidden: false, separate_sources: false, left_column_width: nil, indent: nil, wrap_width: nil) ⇒ String
Generate a short usage string.
Constructor Details
#initialize(tool, loader, executable_name, delegates: []) ⇒ Toys::Utils::HelpText
Create a usage helper.
63 64 65 66 67 68 |
# File 'lib/toys/utils/help_text.rb', line 63 def initialize(tool, loader, executable_name, delegates: []) @tool = tool @loader = loader @executable_name = executable_name @delegates = delegates end |
Instance Attribute Details
#tool ⇒ Toys::ToolDefinition (readonly)
The ToolDefinition being documented.
74 75 76 |
# File 'lib/toys/utils/help_text.rb', line 74 def tool @tool end |
Class Method Details
.from_context(context) ⇒ Toys::Utils::HelpText
Create a usage helper given an execution context.
41 42 43 44 45 46 47 48 49 |
# File 'lib/toys/utils/help_text.rb', line 41 def self.from_context(context) delegates = [] cur = context while (cur = cur[Context::Key::DELEGATED_FROM]) delegates << cur[Context::Key::TOOL] end cli = context[Context::Key::CLI] new(context[Context::Key::TOOL], cli.loader, cli.executable_name, delegates: delegates) end |
Instance Method Details
#help_string(recursive: false, search: nil, include_hidden: false, show_source_path: false, separate_sources: false, indent: nil, indent2: nil, wrap_width: nil, styled: true) ⇒ String
Generate a long help string.
127 128 129 130 131 132 133 134 135 136 137 138 139 |
# File 'lib/toys/utils/help_text.rb', line 127 def help_string(recursive: false, search: nil, include_hidden: false, show_source_path: false, separate_sources: false, indent: nil, indent2: nil, wrap_width: nil, styled: true) indent ||= DEFAULT_INDENT indent2 ||= DEFAULT_INDENT subtools = collect_subtool_info(recursive, search, include_hidden, separate_sources) assembler = HelpStringAssembler.new( @tool, @executable_name, @delegates, subtools, search, show_source_path, separate_sources, indent, indent2, wrap_width, styled ) assembler.result end |
#list_string(recursive: false, search: nil, include_hidden: false, separate_sources: false, indent: nil, wrap_width: nil, styled: true) ⇒ String
Generate a subtool list string.
159 160 161 162 163 164 165 166 |
# File 'lib/toys/utils/help_text.rb', line 159 def list_string(recursive: false, search: nil, include_hidden: false, separate_sources: false, indent: nil, wrap_width: nil, styled: true) indent ||= DEFAULT_INDENT subtools = collect_subtool_info(recursive, search, include_hidden, separate_sources) assembler = ListStringAssembler.new(@tool, subtools, recursive, search, separate_sources, indent, wrap_width, styled) assembler.result end |
#usage_string(recursive: false, include_hidden: false, separate_sources: false, left_column_width: nil, indent: nil, wrap_width: nil) ⇒ String
Generate a short usage string.
93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/toys/utils/help_text.rb', line 93 def usage_string(recursive: false, include_hidden: false, separate_sources: false, left_column_width: nil, indent: nil, wrap_width: nil) left_column_width ||= DEFAULT_LEFT_COLUMN_WIDTH indent ||= DEFAULT_INDENT subtools = collect_subtool_info(recursive, nil, include_hidden, separate_sources) assembler = UsageStringAssembler.new( @tool, @executable_name, subtools, separate_sources, indent, left_column_width, wrap_width ) assembler.result end |