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.
65 66 67 68 69 70 |
# File 'lib/toys/utils/help_text.rb', line 65 def initialize(tool, loader, executable_name, delegates: []) @tool = tool @loader = loader @executable_name = executable_name || "(binary-name)" @delegates = delegates end |
Instance Attribute Details
#tool ⇒ Toys::ToolDefinition (readonly)
The ToolDefinition being documented.
76 77 78 |
# File 'lib/toys/utils/help_text.rb', line 76 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 50 51 |
# 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 new(context[Context::Key::TOOL], context[Context::Key::LOADER], context[Context::Key::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.
129 130 131 132 133 134 135 136 137 138 139 140 141 |
# File 'lib/toys/utils/help_text.rb', line 129 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.
161 162 163 164 165 166 167 168 |
# File 'lib/toys/utils/help_text.rb', line 161 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.
95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/toys/utils/help_text.rb', line 95 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 |