Skip to content

Commit

Permalink
Add MordantHelpFormatter.renderAttachedOptionValue
Browse files Browse the repository at this point in the history
  • Loading branch information
ajalt committed Jul 10, 2023
1 parent a28953a commit 762917e
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 1 deletion.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
# Changelog
## Unreleased
### Added
- Added `MordantHelpFormatter.renderAttachedOptionValue` that you can override to change how option values are shown, e.g. if you want option to show as `--option <value>` instead of `--option=<value>`. ([#416](https://github.com/ajalt/clikt/issues/416))

## 4.0.0
### Added
- Added `Context.errorEncountered` which is true if parsing has continued after an error was encountered.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -312,18 +312,20 @@ open class MordantHelpFormatter(

protected open fun renderOptionalMetavar(metavar: String): String = "[$metavar]"
protected open fun renderRepeatedMetavar(metavar: String): String = "$metavar..."
protected open fun renderAttachedOptionValue(metavar: String) = "=$metavar"

protected open fun renderOptionValue(option: ParameterHelp.Option): String {
if (option.metavar == null) return ""
var metavar = option.metavar.trim { it in "[]<>" }
if ('|' !in metavar) metavar = normalizeParameter(metavar)
metavar = styleMetavar(metavar)
if (option.nvalues.last > 1) metavar = renderRepeatedMetavar(metavar)
metavar = "=$metavar"
metavar = renderAttachedOptionValue(metavar)
if (option.nvalues.first == 0) metavar = renderOptionalMetavar(metavar)
return metavar
}


protected open fun renderDefinitionTerm(row: DefinitionRow): Widget {
val termPrefix = when {
row.marker.isNullOrEmpty() -> " "
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ class PanelHelpFormatter(context: Context) : MordantHelpFormatter(context) {
// Print metavars like INT instead of <int>
override fun normalizeParameter(name: String): String = name.uppercase()

// Print option values like `--option VALUE instead of `--option=VALUE`
override fun renderAttachedOptionValue(metavar: String): String = " $metavar"

// Put each parameter section in its own panel
override fun renderParameters(
parameters: List<HelpFormatter.ParameterHelp>,
Expand Down

0 comments on commit 762917e

Please sign in to comment.