Skip to content

Color codes breaks doc parsing #9

@noraj

Description

@noraj

With docopt.rb I can put some colorization on my docopt help message.

Eg. code

https://github.com/noraj/haiti/blob/a8fefceb94d32d2b00fdbb31ad46c725451b588d/bin/haiti#L11-L50

Eg. output

But with docopt.cr it breaks the parsing.

Eg. colors on usage:

    doc = <<-DOCOPT
    #{"miniss".colorize.light_magenta} v#{Miniss::VERSION.colorize.bold}

    #{"Usage:".colorize.light_cyan}
      miniss [--tcp | --udp] [--ipv4 | --ipv6] [--debug --no-color]
      miniss -h | --help
      miniss --version

    #{"Options:".colorize.light_cyan}
      -u --udp      Show UDP sockets.
      -t --tcp      Show TCP sockets.
      -4 --ipv4     Show IPv4 sockets.
      -6 --ipv6     Show IPv6 sockets.
      --debug       Display arguments.
      --no-color    Disable colorized output.
      -h --help     Show this screen.
      --version     Show version.

    #{"Examples:".colorize.light_cyan}
      miniss --udp
      miniss -t6

    #{"Project:".colorize.light_cyan}
      #{"author".colorize.underline} (https://pwn.by/noraj / https://twitter.com/noraj_rawsec)
      #{"source".colorize.underline} (https://github.com/noraj/miniss)
      #{"documentation".colorize.underline} (https://noraj.github.io/miniss)
    DOCOPT
    args = Docopt.docopt(doc, version: Miniss::VERSION)

image

Why no colors on usage:

    doc = <<-DOCOPT
    #{"miniss".colorize.light_magenta} v#{Miniss::VERSION.colorize.bold}

    Usage:
      miniss [--tcp | --udp] [--ipv4 | --ipv6] [--debug --no-color]
      miniss -h | --help
      miniss --version

    #{"Options:".colorize.light_cyan}
      -u --udp      Show UDP sockets.
      -t --tcp      Show TCP sockets.
      -4 --ipv4     Show IPv4 sockets.
      -6 --ipv6     Show IPv6 sockets.
      --debug       Display arguments.
      --no-color    Disable colorized output.
      -h --help     Show this screen.
      --version     Show version.

    #{"Examples:".colorize.light_cyan}
      miniss --udp
      miniss -t6

    #{"Project:".colorize.light_cyan}
      #{"author".colorize.underline} (https://pwn.by/noraj / https://twitter.com/noraj_rawsec)
      #{"source".colorize.underline} (https://github.com/noraj/miniss)
      #{"documentation".colorize.underline} (https://noraj.github.io/miniss)
    DOCOPT
    args = Docopt.docopt(doc, version: Miniss::VERSION)

image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions