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::Tool
readonly
The Tool 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, indent: nil, indent2: nil, wrap_width: nil, styled: true) ⇒ String
Generate a long help string.
-
#initialize(tool, loader, executable_name, delegate_target: nil) ⇒ Toys::Utils::HelpText
constructor
Create a usage helper.
-
#list_string(recursive: false, search: nil, include_hidden: false, indent: nil, wrap_width: nil, styled: true) ⇒ String
Generate a subtool list string.
-
#usage_string(recursive: false, include_hidden: false, left_column_width: nil, indent: nil, wrap_width: nil) ⇒ String
Generate a short usage string.
Constructor Details
#initialize(tool, loader, executable_name, delegate_target: nil) ⇒ Toys::Utils::HelpText
Create a usage helper.
78 79 80 81 82 83 |
# File 'lib/toys/utils/help_text.rb', line 78 def initialize(tool, loader, executable_name, delegate_target: nil) @tool = tool @loader = loader @executable_name = executable_name @delegate_target = delegate_target end |
Instance Attribute Details
#tool ⇒ Toys::Tool (readonly)
The Tool being documented.
89 90 91 |
# File 'lib/toys/utils/help_text.rb', line 89 def tool @tool end |
Class Method Details
.from_context(context) ⇒ Toys::Utils::HelpText
Create a usage helper given an execution context.
55 56 57 58 59 60 61 62 63 64 |
# File 'lib/toys/utils/help_text.rb', line 55 def self.from_context(context) orig_context = context while (from = context[Context::Key::DELEGATED_FROM]) context = from end delegate_target = orig_context == context ? nil : orig_context[Context::Key::TOOL_NAME] cli = context[Context::Key::CLI] new(context[Context::Key::TOOL], cli.loader, cli.executable_name, delegate_target: delegate_target) end |
Instance Method Details
#help_string(recursive: false, search: nil, include_hidden: false, show_source_path: false, indent: nil, indent2: nil, wrap_width: nil, styled: true) ⇒ String
Generate a long help string.
138 139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/toys/utils/help_text.rb', line 138 def help_string(recursive: false, search: nil, include_hidden: false, show_source_path: false, indent: nil, indent2: nil, wrap_width: nil, styled: true) indent ||= DEFAULT_INDENT indent2 ||= DEFAULT_INDENT subtools = find_subtools(recursive, search, include_hidden) assembler = HelpStringAssembler.new( @tool, @executable_name, @delegate_target, subtools, search, show_source_path, indent, indent2, wrap_width, styled ) assembler.result end |
#list_string(recursive: false, search: nil, include_hidden: false, indent: nil, wrap_width: nil, styled: true) ⇒ String
Generate a subtool list string.
167 168 169 170 171 172 173 174 |
# File 'lib/toys/utils/help_text.rb', line 167 def list_string(recursive: false, search: nil, include_hidden: false, indent: nil, wrap_width: nil, styled: true) indent ||= DEFAULT_INDENT subtools = find_subtools(recursive, search, include_hidden) assembler = ListStringAssembler.new(@tool, subtools, recursive, search, indent, wrap_width, styled) assembler.result end |
#usage_string(recursive: false, include_hidden: false, left_column_width: nil, indent: nil, wrap_width: nil) ⇒ String
Generate a short usage string.
106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/toys/utils/help_text.rb', line 106 def usage_string(recursive: false, include_hidden: false, left_column_width: nil, indent: nil, wrap_width: nil) left_column_width ||= DEFAULT_LEFT_COLUMN_WIDTH indent ||= DEFAULT_INDENT subtools = find_subtools(recursive, nil, include_hidden) assembler = UsageStringAssembler.new( @tool, @executable_name, @delegate_target, subtools, indent, left_column_width, wrap_width ) assembler.result end |