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"
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.
56 57 58 59 60 61 |
# File 'lib/toys/utils/help_text.rb', line 56 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.
67 68 69 |
# File 'lib/toys/utils/help_text.rb', line 67 def tool @tool end |
Class Method Details
.from_context(context) ⇒ Toys::Utils::HelpText
Create a usage helper given an execution context.
34 35 36 37 38 39 40 41 42 |
# File 'lib/toys/utils/help_text.rb', line 34 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.
120 121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/toys/utils/help_text.rb', line 120 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.
152 153 154 155 156 157 158 159 |
# File 'lib/toys/utils/help_text.rb', line 152 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.
86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/toys/utils/help_text.rb', line 86 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 |