Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Print options in a sleek table format #11

Closed
yudai-nkt opened this issue Nov 20, 2020 · 6 comments · Fixed by #25
Closed

Print options in a sleek table format #11

yudai-nkt opened this issue Nov 20, 2020 · 6 comments · Fixed by #25
Labels
discussion enhancement New feature or request

Comments

@yudai-nkt
Copy link
Contributor

Options are currently documented in a plain format as if they were copy-pasted from a terminal emulator. I'd be happy if they are rendered in a human-readable HTML table.

@yudai-nkt
Copy link
Contributor Author

Thanks for creating mkdocs-click anyway! This package and mkdocstrings leave me no choice but to use Click as an argument parser and makes it possible to make a beautiful documentation for both CLI and Python API.

@florimondmanca
Copy link
Contributor

@yudai-nkt You're welcome! I just realized there had been some contributor activity on this repo :-) Will be taking a look soon!

@florimondmanca florimondmanca added enhancement New feature or request discussion labels Dec 9, 2020
@florimondmanca
Copy link
Contributor

@yudai-nkt So I've taken a quick look at #12, and that's looking great.

What I'm thinking though is that we might want to let users decide which style they'd like, or at least introduce a table style in a backwards-compatible manner.

I guess what could be feasible would be a new :style: option on the mkdocs-click block, that would toggle which style should be used:

::: mkdocs-click
    :module: example.cli
    :command: main
    :style: table

If we do that, I'd expect the implementation to be purely additive, i.e. the current _make_options() should remain basically untouched, but we'd add a _make_table_options() function and switch between the two in _recursively_make_command_docs().

Makes sense?

@yudai-nkt
Copy link
Contributor Author

I need to dig into your codebase to find out how the :option: notation works, but your suggestion totally makes sence.

I want to ask two questions before working on this feature:

  1. what should the default (i.e., current style) be named? plain came to my mind but I appreciate it if you have a better option name.
  2. Adding a new parameter style, which can be either table or plain, to _make_options() like this sounds more straight-forward to me rather than defining two functions. May I ask the reason you want purely additive implementation?
def _make_options(ctx, style="plain"):
    if style == "plain":
        # format options here
    elif style == "table":
        # format options here
    else:
        # raise some ValueError

@florimondmanca
Copy link
Contributor

@yudai-nkt 👍 The style=... parameter sounds good, as well as plain.

@yudai-nkt
Copy link
Contributor Author

#25 is ready for your review, @florimondmanca!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion enhancement New feature or request
Projects
None yet
2 participants